应用商店部署
EAS 服务 - 需支付费用。 云构建会消耗 EAS 计划资源,EAS 服务有免费层级和付费计划限制。Apple Developer 和 Google Play 会员资格是独立的。如需了解所请求服务的定价,请访问 https://expo.dev/pricing。
此技能涵盖使用 EAS 构建和发布 iOS 及 Android 应用:包括 Expo 和其他 React Native 项目,以及现有的原生应用。EAS 是一项交付服务;原生应用无需在运行时中添加 Expo 或 React Native 即可使用它。原生设置指南目前涵盖 iOS 上的 SwiftUI/UIKit。
选择项目路径
- 不包含 React Native 运行时的 SwiftUI/UIKit 应用: 在更改其构建配置前,请先阅读 references/native-ios.md。以 Xcode 项目和 Swift 代码作为应用的事实标准。下面的 Expo/React Native 快速入门和开发客户端示例不适用于此路径。
- 不包含 React Native 运行时的原生 Android 应用: 保留其现有的原生构建设置。关于提交,请参阅 references/play-store.md;iOS Swift 设置说明不适用。本技能尚未包含专门的原生 Android 设置指南。
- Expo/React Native 应用: 使用下面的快速入门,然后参考相应的商店参考文档。
- 将 React Native 屏幕添加到现有原生应用: 使用
expo-brownfield进行集成;完成后回到此处进行分发。
在初始原生 iOS 设置期间、更改版本号、Bundle ID 或图标后,或者诊断上传被拒时,请使用 references/native-ios.md 中的存档和图标检查。常规发布遵循 EAS 构建/提交流程,以及 references/testflight.md 中的处理和可用性检查。一次成功的 EAS 构建或一个已排队的提交并不能保证 Apple 的接受、测试者访问权限或 App Store 发布。
参考资料
根据需要查阅以下资源:
- ./references/workflows.md -- 用于自动商店发布和 PR 预览的 CI/CD 工作流
- ./references/testflight.md -- 提交 iOS 构建到 TestFlight 进行 Beta 测试
- ./references/app-store-metadata.md -- 管理 App Store 元数据和 ASO 优化
- ./references/play-store.md -- 提交 Android 构建到 Google Play Store
- ./references/ios-app-store.md -- iOS App Store 提交流程和审核
- ./references/native-ios.md -- 原生 Swift/SwiftUI/UIKit 设置、版本管理和存档验证(不含 Expo 运行时)
Expo / React Native 快速入门
安装 EAS CLI
npm install -g eas-cli
eas login
初始化 EAS
npx eas-cli@latest init
eas init 会链接或创建 EAS 项目。运行 eas build:configure 以在 eas.json 中创建构建配置文件;如果已存在发布配置,请保留现有的项目和商店标识符。
构建命令
生产构建
# iOS App Store 构建
npx eas-cli@latest build -p ios --profile production
# Android Play Store 构建
npx eas-cli@latest build -p android --profile production
# 两个平台
npx eas-cli@latest build --profile production
提交到商店
# iOS:构建并提交到 App Store Connect
npx eas-cli@latest build -p ios --profile production --auto-submit
# Android:构建并提交到 Play Store
npx eas-cli@latest build -p android --profile production --auto-submit
# Expo / React Native 快速提交到 iOS TestFlight
npx testflight
Web 和 API 路由托管
将 Expo 网站或 Expo Router API 路由部署到 EAS Hosting(npx expo export -p web 然后 eas deploy)由 eas-hosting 技能覆盖。此技能专注于原生应用商店发布。
EAS 配置
Expo / React Native 项目示例(原生 Swift 配置文件请参见 references/native-ios.md):
{
"cli": {
"version": ">= 16.0.1",
"appVersionSource": "remote"
},
"build": {
"production": {
"autoIncrement": true,
"ios": {
"resourceClass": "m-medium"
}
},
"development": {
"developmentClient": true,
"distribution": "internal"
}
},
"submit": {
"production": {
"ios": {
"appleId": "[email protected]",
"ascAppId": "1234567890"
},
"android": {
"serviceAccountKeyPath": "./google-service-account.json",
"track": "internal"
}
}
}
}
平台特定指南
iOS
- 对于原生 Swift 应用,请使用
references/native-ios.md中的显式构建/提交流程 - 对于 Expo / React Native 应用,
npx testflight提供了快速的 TestFlight 流程 - 通过
eas credentials配置 Apple 凭证 - 有关凭证设置,请参阅 ./references/testflight.md
- 有关 App Store 提交,请参阅 ./references/ios-app-store.md
Android
- 设置 Google Play Console 服务账户
- 配置渠道:internal → closed → open → production
- 有关详细设置,请参阅 ./references/play-store.md
自动发布
EAS Workflows 可自动执行 CI/CD 的构建 → 提交 → 更新流水线。有关商店发布示例,请参阅 ./references/workflows.md。要编写或验证工作流 YAML,请使用 eas-workflows 技能——它基于实时工作流模式工作。
版本管理
EAS 使用 appVersionSource: "remote" 自动管理版本号:
# 检查当前版本
eas build:version:get
# 手动设置版本
eas build:version:set -p ios
version-set 命令会提示输入值。当设置或更改原生 iOS 版本,或诊断重复的构建号时,请检查存档中的 CFBundleVersion:远程计数器本身不能证明 Xcode 使用了该值。
监控
# 列出最近构建
eas build:list
# 检查构建状态
eas build:view BUILD_ID
# 检查提交(已在 EAS CLI 23.2.0 中验证)
eas submit:list -p ios --json
eas submit:view SUBMISSION_ID --json
在解释缺失的命令之前,请检查 CLI 版本:这些提交命令在 23.2.0 中可用,但在已测试的 18.6.0 安装中不可用。使用固定的 npx [email protected] 调用可以使用它们,而无需更改全局安装。有关实时 Apple 状态和重试指南,请参阅 references/testflight.md。当 JSON 结果省略了根本故障时,请遵循返回的日志 URL。报告确切的构建 ID/版本以及已验证的最远发布状态。
提交反馈
如果您遇到此技能中的错误、误导性或过时信息,请报告以便 Expo 改进:
npx --yes @expo/agent-cli@latest feedback --category skills --subject "eas-app-stores" "<可执行的反馈>"
仅在您有具体且可执行的内容要报告时才提交。请尽可能包含相关的上下文信息。
如果代理程序在 Expo 任务上反复失败,或者用户不得不介入,请使用 --category evals 和相关的 Expo 包或命令作为 --subject,提交包含任务、预期结果和出错的简要报告。