SuperAPI AI 工具集

app-store-publish

部署与运维

查看项目

更新于 10-16 18:29

技能介绍

用途

本技能处理“已有签名 .ipa → TestFlight → 提交审核”这一段流程。它不负责生成 .ipa:证书、描述文件、xcodebuild archive / -exportArchive、ExportOptions.plist、match 和 gym 属于 ios-build-sign。若产物未签名、ad-hoc 签名或使用开发身份签名,应停止并交回。

主要能力

  • 上传路径选择:xcrun altool --upload-app(默认,仅传二进制,无元数据、无 TestFlight 分组、无提交)、xcodebuild -exportArchive 且 destination = upload(少一步,但跳过本地 .ipa,无法验证或归档所交付产物)、fastlane pilot(upload_to_testflight,可带 changelog、分组、测试者通知,默认等待处理)、fastlane deliver(upload_to_app_store,二进制加元数据、截图与审核提交,影响面最大)、Transporter(GUI,仅 macOS,不可脚本化)。xcrun notarytool 不用于 iOS,它是 macOS 分发公证,不是 App Store 上传路径。
  • 上传前验证:--validate-app 与上传使用相同参数,失败不消耗构建号。
  • TestFlight 分发:内部测试者最多 100 名 App Store Connect 用户;外部测试者每 App 最多 10,000 人;公开链接上限 1 到 10,000;构建测试窗口 90 天。向分组添加首个构建会触发 Beta App Review。内部测试无需 Beta App Review(资料标注为推断)。
  • 提交审核:版本级决策包括发布方式(手动、批准后自动、指定日期自动)、分阶段发布、What's New(每次版本更新必填)。版本与其内购进入同一个审核提交;首次内购必须与版本同批提交。
  • 无 fastlane 时可通过 App Store Connect API(用 .p8 签 JWT)操作,资料中仅 POST /v1/buildUploads 为已验证,其余端点标注为未验证。
  • 故障排查:按消息文本匹配,覆盖 ITMS-90717、ITMS-91053/91061、ITMS-90683、构建号冲突、ITMS-90240、ITMS-90022、处理被拒、构建不出现、altool 401 等。

使用方式

前置条件:创建团队级 App Store Connect API 密钥(Users and Access → Integrations → App Store Connect API → +),.p8 仅下载一次;记录 Key ID 与 Issuer ID;使用团队密钥而非个人密钥。将密钥放到 ~/private_keys/、~/.private_keys/ 或 ~/.appstoreconnect/private_keys/,命名为 AuthKey_<KEYID>.p8。App Store Connect 中需存在对应 bundle id 的 App 记录,bundle id 需在开发者门户注册(含内购或推送时须为显式非通配)。上传者角色需为 Account Holder、Admin、App Manager 或 Developer。切勿把 .p8 内容、MATCH_PASSWORD 或 App 专用密码打印到日志。

流程:清理前置条件 → 选定一条上传路径并坚持 → 上传前用 --validate-app 验证 → 上传并等待 Apple 处理完成 → 在 TestFlight 分发 → 提交版本审核 → 失败时先诊断再重传(同一构建号重传不可能成功)。第 6 步前应运行 app-store-review 技能。

示例命令(资料原文):

xcrun altool --validate-app -f build/export/MyApp.ipa -t ios --apiKey ABC1234567 --apiIssuer 6053b7fe-68a8-4acb-89be-165aa6465141 --output-format xml

xcrun altool --upload-app -f build/export/MyApp.ipa -t ios --apiKey ABC1234567 --apiIssuer 6053b7fe-68a8-4acb-89be-165aa6465141

fastlane pilot distribute --api_key_path fastlane/asc_key.json fastlane pilot upload --api_key_path fastlane/asc_key.json --ipa build/MyApp.ipa fastlane deliver --api_key_path fastlane/asc_key.json --ipa build/MyApp.ipa --force

适用场景

已有签名 .ipa,需要脚本化上传到 TestFlight 或提交 App Store 审核的 iOS 发布流程;需要选择 altool、fastlane、Transporter 等不同上传方式;需要排查 ITMS 上传错误。

限制

不生成 .ipa,不处理签名。资料中多处标注置信度:[verified] 为 2026-08-05 从厂商一手来源读取;[snippet] 为仅二手来源;[unverified] 为未确认。例如 --apiKey/--apiIssuer 组合为 [snippet],-t 取值 ios/macos/appletvos/visionos 为 [unverified],fastlane 除 pilot distribute --api_key_path 外的 CLI 标志拼写为 [unverified],分阶段发布的具体百分比、与手动发布的关系及 fastlane 选项拼写均未验证。审核提交 API 端点除 POST /v1/buildUploads 外均为未验证。使用前需按资料给出的方法自行核实。