用途:把 iOS / watchOS 应用从“尚未开始生产路径”推进到 TestFlight 中可处理的 Distribution 签名构建,适用于发布、上架、归档上传、部署 CloudKit 生产 schema、填写 App 隐私与出口合规、分发签名,或排查 Apple 上传被拒问题。
核心思路:发布路径横跨 Apple Developer、App Store Connect、CloudKit Dashboard 三个互不相连的门户,加上 CLI 签名细节,每一关都可能隐藏只有过了上一关才暴露的静默失败,因此按顺序逐关验证。
主要关卡与能力:1) 盘点关卡,区分阻塞 TestFlight 与阻塞 App Store 提交的不同关卡;2) 若用 CloudKit,需在仪表盘执行 Deploy Schema Changes 并确认记录类型出现在生产环境,此为单向操作,须先与用户确认;3) 在每个可发布 target 中固化 ITSAppUsesNonExemptEncryption: false;4) 先审计代码中的分析/第三方 SDK/外部网络,再在 App Store Connect 设置 App 隐私标签,Publish 留到提交时;5) 准备托管隐私政策 URL,欧盟/德国运营者还需 Impressum;6) 签名审计,确认 team id 与 CODE_SIGN_STYLE: Automatic,自动签名会在导出阶段生成 Distribution 证书;7) 归档:xcodebuild archive 嵌入 Watch 应用的 iPhone scheme,加 -allowProvisioningUpdates;8) 导出并上传:xcodebuild -exportArchive,method 为 app-store-connect,使用 App Store Connect API key,该 key 必须为 Admin 角色;9) 真机测试交由人工完成。
限制与护栏:单向生产操作(CloudKit 部署、App 隐私 Publish)须先确认;不打印密钥值,.p8 放 ~/.appstoreconnect/ 并及时清理;用 trash 不用 rm;通过浏览器自动化操作已登录门户,绝不输入 Apple 凭据,请用户登录一次;真机功能循环测试与最终 Publish/提交审核由人工完成;只提交发布相关改动。具体命令、ExportOptions.plist 与验证单行命令见 references/pipeline.md,常见静默失败见 references/gotchas.md。