EAS (Expo Application Services)
EAS 是 Expo 的云端服务,负责打包编译、自动上架和 OTA 热更新。
[!info] related notes
- 所属配置: android-development-environment-setup
- 上层平台: expo
- 底层框架: react-native
EAS (Expo Application Services)
一句话定义
EAS 是 Expo 提供的云端流水线,负责把你写好的 React Native 代码打包成独立 App、提交到应用商店、并支持 OTA 热更新。
定位
| 阶段 | 工具 | 说明 |
|---|---|---|
| 开发预览 | Expo Go | 专用预览器,不能上架给用户 |
| 打包发布 | EAS | 生成独立 .apk / .aab / .ipa |
Expo Go 就像一个”浏览器”,专门预览 RN 代码。但你不能把 Expo Go 打包上架给用户下载。当项目需要变成真正的独立 App 时,就需要 EAS。
三个核心模块
1. EAS Build(云端打包编译)
最核心、最常用的功能。
痛点: 传统方式打包 App 需要自己配好 Android SDK / NDK / Java 环境,iOS 还必须有 Mac + Xcode。涉及第三方原生库时经常编译报错。
EAS 的解决方式: 终端敲一行 eas build,Expo 把代码传到云端服务器,由服务器配好环境完成编译,直接给你可安装的安装包。
# Android 打包
eas build --platform android
# iOS 打包
eas build --platform ios
# 同时打两个平台
eas build --platform all
开发自定义客户端(Dev Client): 如果用了 Expo Go 不支持的原生插件(蓝牙、支付 SDK 等),需要用 EAS Build 打包一个包含这些原生代码的专属测试版 App(Development Build)来替代 Expo Go 进行调试。
eas build --profile development --platform android
2. EAS Submit(自动上架)
痛点: 把 App 上传到 Google Play Store 或 Apple App Store 需要填各种表单、传证书、走审核,是繁琐的体力活。
EAS 的解决方式: 打包完成后通过 eas submit 命令,直接将安装包推送到苹果 TestFlight / App Store 或谷歌 Play Console。
# 提交到 Google Play
eas submit --platform android
# 提交到 App Store
eas submit --platform ios
3. EAS Update(热更新 / OTA 更新)
痛点: App 已上线,发现一个文案错误或导致闪退的 JS bug。常规流程需要重新打包、提交商店审核、用户去商店更新,全套至少两三天。
EAS 的解决方式: 只要改的是 JavaScript/TypeScript 代码或图片资源(没动 Java/Objective-C 底层代码),用 eas update 直接把补丁推送到用户手机。用户下次打开 App 时自动下载并应用修复,实现”无感更新”。
eas update --branch production --message "修复闪退问题"
限制: 只能更新 JS 层和静态资源。如果改了原生代码(Java/Kotlin/Swift),必须重新走 EAS Build + Submit 流程。
工作流总览
开发(Expo Go / Dev Client)
│
▼
eas build ← 云端打包 → .apk / .ipa
│
▼
eas submit ← 推送到应用商店
│
▼
上线后发现 JS bug
│
▼
eas update ← OTA 热更新,用户无感修复
│
▼
改了原生代码?
│
▼
重新 eas build → eas submit(完整流程)
配置文件 eas.json
{
"cli": { "version": ">= 5.0.0" },
"build": {
"development": {
"developmentClient": true,
"distribution": "internal"
},
"preview": {
"distribution": "internal"
},
"production": {}
},
"submit": {
"production": {}
}
}
| Profile | 用途 |
|---|---|
development | Dev Client 调试包 |
preview | 内测分发(不经过商店) |
production | 正式上架包 |
何时需要引入 EAS
目前阶段(Expo Go 预览开发):不需要。 本地 npx expo start 就够了。
需要引入的时机:
- 引入了 Expo Go 不支持的第三方原生库 → 用 EAS 打包 Dev Client
- 项目开发完毕,准备打包给别人测试或正式上架商店 → 用 EAS Build + Submit