代码写完只是开始,真正让人头大的是上架。
Archive、签名、导出、API Key、版本号、Build 号、Apple 验证、上传……任何一步配错,都可能浪费半天。
更麻烦的是,我可以让 AI 帮忙执行这些命令,但我不敢让它“自由发挥”。
于是我做了一个 Codex Skill:
👉 GitHub:app-store-connect-release
它负责带 Codex 走完整个 App Store Connect 发布流程,但默认只检查,不会一上来就替你上传。
我自己的 App 就是使用这个skill完成打包上传的
我的 macOS App:ClipMinder。
实际流程是:
检查 Xcode 项目
→ 选择未使用的 Build
→ 签名 Archive
→ 导出 pkg
→ Apple 服务端验证
→ 明确确认上传
→ 等待 App Store Connect 处理
最后结果:
Archive: SUCCESS
Export: SUCCESS
Apple Validation: SUCCESS
Upload: SUCCESS
Processing State: VALID
不是模拟测试,也不是只跑到本地 Archive。
Build 确实传到了 App Store Connect,并被处理成了 VALID。
中间还真踩了一个坑
第一次使用原来的 1.0.3 版本上传时,Apple 直接拒绝了:
90062
90186
原因是 1.0.3 的版本列已经关闭,不能继续向里面上传新 Build。
Skill 没有硬着头皮重试,也没有重复上传,而是停下来报告问题。
之后使用临时构建参数生成 1.0.4 / Build 7,重新完成签名、导出和验证,最后上传成功。整个过程没有修改项目里的版本文件。
这个结果反而让我更放心:发布工具最重要的不是“什么都敢做”,而是知道什么时候应该停。
它和普通上传脚本有什么区别?
核心区别就一句话:
默认只读,危险操作需要明确确认。
比如:
- 只说“检查项目”,它不会 Archive 或上传
- 上传必须明确使用
--confirm-upload - 替换截图需要额外确认
- 元数据默认只展示差异
- 重复版本和 Build 默认阻止
- 上传 Build 不会被描述成“已经提交审核”
另外,App Store Connect 返回的签名 URL、临时请求头和凭据字段都会被替换成:
[REDACTED]
避免它们出现在终端、Codex 对话或者 CI 日志里。
怎么安装(直接让 Codex 帮你做)
其实这里完全可以写成一个让 Codex 执行的 prompt:
Clone https://github.com/Hubuguilai/app-store-connect-release.gitCreate directory: $HOME/.codex/skills/app-store-connect-releaseCopy contents from app-store-connect-release/app-store-connect-release/
to $HOME/.codex/skills/app-store-connect-release/Then verify the files exist.
或者更完整一点:
Install the Codex skill "app-store-connect-release":1. Clone the repository https://github.com/Hubuguilai/app-store-connect-release.git
2. Create directory $HOME/.codex/skills/app-store-connect-release if it does not exist
3. Copy all files from app-store-connect-release/app-store-connect-release/ into that directory
4. Confirm installation by listing the filesDo not modify any files.
然后重新打开一个 Codex 任务,对它说:
Use $app-store-connect-release to audit this Xcode project.
Read-only checks only.
第一次建议只跑检查。
确认项目、Scheme、签名、版本和 Build 都正确后,再让它继续 Archive、验证或者上传。
给第一次上架 App 的人准备了三语教程
我还补了三套图文教程:
- 简体中文
- English
- 日本語
从 API Key 在哪里创建、.p8 怎么保存,到第一次只读检查,都按步骤写了。
目前的边界
当前真实跑通的是 macOS 发布链路。
项目也为 iOS、iPadOS、watchOS、tvOS 和 visionOS 做了适配,但这些平台还需要更多真实项目验证。
它无法替你完成,这些需要在GUI界面完成:
- App Review 提交
- 正式发布
- 协议、税务和银行信息
- 外部 TestFlight 测试
- Apple 审核回复
这些操作本来就不应该被偷偷自动化。
最后
这个项目现在是公开 Beta,我很想知道它在其他 Xcode 项目上会遇到什么问题。
仓库地址:
👉 https://github.com/Hubuguilai/app-store-connect-release
如果你正好在做 iOS 或 macOS App,可以拿自己的项目先跑一次只读检查。
如果它帮你少踩了一个 App Store Connect 的坑,欢迎给个 Star;如果它在你的项目上翻车了,也欢迎直接提 Issue。
真实项目越多,这个 Skill 才越有机会变成一个真正通用的发布工具。