SuperAPI AI 工具集

eas-app-stores

部署与运维

查看项目

更新于 10-27 13:02

技能介绍

用途

本技能用于使用 EAS 构建并发布 iOS 和 Android 应用,目标渠道包括 TestFlight、App Store 和 Google Play。它支持 Expo 及其他 React Native 项目,也支持现有原生应用。EAS 是一项交付服务,原生应用无需在运行时引入 Expo 或 React Native 即可使用。原生设置指南目前覆盖 iOS 上的 SwiftUI/UIKit。

费用说明

EAS 为付费服务,会产生费用。云构建使用 EAS 套餐资源,EAS 服务有免费额度和付费套餐限制。Apple Developer 与 Google Play 会员资格需单独购买。具体服务请查看 https://expo.dev/pricing。

选择项目路径

  • 无 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 build
npx eas-cli@latest build -p ios --profile production

# Android Play Store build
npx eas-cli@latest build -p android --profile production

# Both platforms
npx eas-cli@latest build --profile production

提交到商店:

# iOS: Build and submit to App Store Connect
npx eas-cli@latest build -p ios --profile production --auto-submit

# Android: Build and submit to Play Store
npx eas-cli@latest build -p android --profile production --auto-submit

# Expo / React Native shortcut for 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": "your@email.com",
        "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 技能——它基于实时工作流 schema 工作。

版本管理

EAS 通过 appVersionSource: "remote" 自动管理版本号:

# Check current versions
eas build:version:get

# Manually set version
eas build:version:set -p ios

version-set 命令会提示输入值。在设置或更改原生 iOS 版本管理,或诊断重复构建号时,检查归档的 CFBundleVersion:仅凭远程计数器不能证明 Xcode 使用了它。

监控

# List recent builds
eas build:list

# Check build status
eas build:view BUILD_ID

# Inspect submissions (verified with 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 eas-cli@23.2.0 调用可在不更改全局安装的情况下使用它们。实时 Apple 状态和重试指引见 references/testflight.md。当 JSON 结果未包含底层失败原因时,请遵循返回的日志 URL。报告确切的构建 ID/版本以及已验证到的最远发布状态。

提交反馈

如果遇到错误、误导性或过时信息,请报告以便 Expo 改进:

npx --yes submit-expo-feedback@latest --category skills --subject "eas-app-stores" "<actionable feedback>"

仅在确有具体且可操作的内容时提交。尽可能包含相关上下文。如果 AI 代理反复失败或用户不得不接管 Expo 任务,请加载 expo-skill-feedback 技能并遵循其 eval-candidate 流程,而不是复用上述命令。