上架 App
使用 EAS 构建并提交 iOS 和 Android App 到应用商店
上架 App
EasyStarter 移动端使用 EAS(Expo Application Services) 进行云端构建和应用商店提交。EAS 负责签名、打包和自动化提交流程,无需在本地配置复杂的证书环境。
上架前,请确认 Server 已部署完成,且 RevenueCat 和认证回调已正确配置。
前置准备
| 平台 | 需要 |
|---|---|
| iOS | Apple Developer 账号($99/年)、App Store Connect 中已创建 App |
| Android | Google Play Console 账号($25 一次性费用)、已创建应用 |
| 通用 | EAS CLI 已安装,并已登录 Expo 账号 |
npm install -g eas-cli
eas login更新 eas.json 配置
在构建之前,将 production profile 的环境变量更新为正式地址:
{
"build": {
"production": {
"autoIncrement": true,
"channel": "production",
"environment": "production",
"env": {
"EXPO_PUBLIC_SERVER_API_URL": "https://your-server.workers.dev", // Server 正式地址
"EXPO_PUBLIC_WEB_APP_URL": "https://your-app.com", // Web 正式地址
"EXPO_PUBLIC_REVENUECAT_IOS_API_KEY": "appl_xxxxxxxxxxxxxxxx",
"EXPO_PUBLIC_REVENUECAT_ANDROID_API_KEY": "goog_xxxxxxxxxxxxxxxx",
"EXPO_PUBLIC_REVENUECAT_ENTITLEMENT_ID": "pro"
}
}
}
}更新 app.json 标识符
确认 apps/native/app.json 中的 Bundle Identifier 和包名与应用商店账号一致:
{
"expo": {
"name": "Your App Name",
"slug": "your-app-slug",
"version": "1.0.0",
"ios": {
"bundleIdentifier": "com.yourcompany.yourapp", // App Store Connect 中的 Bundle ID
"appleTeamId": "YOUR_TEAM_ID" // 在 Apple Developer 账号中查看
},
"android": {
"package": "com.yourcompany.yourapp" // Google Play 中的包名
},
"extra": {
"eas": {
"projectId": "your-eas-project-id" // 运行 eas init 后自动生成
}
}
}
}如果还没有初始化 EAS 项目:
cd apps/native
eas init构建 iOS 生产包
pnpm -F native eas:build:ios:production等价于 eas build --platform ios --profile production,在 EAS 云端构建 .ipa 文件。
首次构建时,EAS 会引导你:
- 自动创建或复用 Apple Distribution Certificate
- 自动创建或复用 Provisioning Profile
构建完成后,可在 Expo Dashboard 中查看构建状态和下载产物。
如果需要本地构建(需要 macOS + Xcode),使用
eas:build:ios:production:local。
构建 Android 生产包
pnpm -F native eas:build:android:production等价于 eas build --platform android --profile production,在 EAS 云端构建 .aab 文件(Google Play 推荐格式)。
首次构建时,EAS 会提示你上传或自动生成 Android Keystore。请妥善保管 Keystore 文件,更新 App 时必须使用相同的 Keystore 签名。
提交到 App Store
pnpm -F native eas:submit:ios:production等价于 eas submit --platform ios --profile production。
EAS 会自动将构建产物上传到 App Store Connect。上传成功后:
- 登录 App Store Connect
- 进入你的 App → TestFlight 验证构建无误
- 切换到 App Store 标签,创建一个新版本
- 填写版本说明、截图、关键词等元数据
- 提交审核(通常 1–3 个工作日)
提交到 Google Play
pnpm -F native eas:submit:android:production等价于 eas submit --platform android --profile production。
上传成功后:
- 登录 Google Play Console
- 进入你的 App → 发布 → 正式版
- 查看新上传的构建,填写版本说明
- 提交审核(通常数小时到数天)
OTA 更新(无需重新提交审核)
EasyStarter 集成了 Expo Updates,支持向已安装的 App 推送 JS 层更新,无需重新走应用商店审核流程。
适合修复 Bug、调整 UI 或更新文案等不涉及原生代码的变更:
# 推送到 production 渠道
pnpm -F native eas:update:productionOTA 更新只能更新 JavaScript/TypeScript 代码和静态资源,不能更新原生模块(如新增 Expo 插件、修改
app.json的原生字段等)。原生层变更仍需重新走完整构建和提交流程。
版本管理
eas.json 中 "autoIncrement": true 会在每次构建时自动递增 Build Number(iOS)和 Version Code(Android),无需手动修改 app.json。
| 字段 | 说明 |
|---|---|
version(app.json) | 对用户可见的版本号,如 1.2.0,需手动更新 |
| Build Number / Version Code | 商店内部版本号,autoIncrement 自动管理 |
runtimeVersion | 控制 OTA 兼容性,默认策略为 appVersion |