App Store 部署
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;Swift/iOS 設定說明不適用。目前尚未包含專門的原生 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 商店
- ./references/ios-app-store.md -- iOS App Store 提交與審查流程
- ./references/native-ios.md -- 不含 Expo 運行環境的原生 Swift/SwiftUI/UIKit 設定、版本管理與封存驗證
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
網站與 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 服務帳戶
- 設定發布軌道:內部測試 → 封閉測試 → 開放測試 → 正式版
- 詳細設定請參閱 ./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,簡要回報任務內容、預期結果以及出錯情況。