appuploader-cli 覆盖全部 iOS 上架能力,并且专门为 AI agent 和 CI 流水线设计。 从证书、描述文件、建 App、上传 IPA,到元数据、截图、提交审核和 TestFlight,每一步都是一条命令。
release 跑完整个上架流程,失败后从断点继续appuploader-cli release [1/14] preflight: ok [2/14] bundle: skipped [3/14] certs: reused [4/14] profiles: reused [5/14] app: skipped [6/14] version: ok [7/14] upload: ok [8/14] metadata: ok [9/14] screenshots: ok [10/14] build-wait: ok [11/14] compliance: ok [12/14] review-info: ok [13/14] submit: ok [14/14] testflight: ok release finished; release type is MANUAL: once App Review approves it, publish it yourself with `appuploader-cli version publish 1.4.0`
交给 AI agent、接入 CI 流水线,或者在终端里自己跑。账号和数据与开心上架客户端共用,客户端里登录过的账号,命令行可以直接用。
一条命令生成 AI 技能文件。文件里写明了使用规则、退出码与重试策略、常用流程和完整命令索引,AI agent 读完就知道该怎么安全地调用。
skill --install user 安装到 Claude Code,所有项目可用skill --install project 只对当前项目生效skill --format agents 输出给 Codex 等其他 agent 的说明文件appuploader-cli skill --install user appuploader-cli doctor --for-release --json appuploader-cli release --dry-run --json # 你确认预演结果后 appuploader-cli release --json --yes
CI 里推荐用 Apple ID 加 App 专用密码 登录,不会遇到双重验证,全部功能都能用。凭据只从环境变量读取,项目配置文件里没有任何密钥,可以放心提交到 git。
login,命令会在需要时自动登录--json 模式下每一步输出一行 JSON,方便流水线解析jobs: release: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 # 安装开心上架,appuploader-cli 在安装目录里 # IPA 由你现有的构建步骤产出 - name: 发布到 App Store env: APPUPLOADER_APPLE_ID: ${{ secrets.APPLE_ID }} APPUPLOADER_PASSWORD: ${{ secrets.APP_SPECIFIC_PASSWORD }} run: appuploader-cli release --json --yes
在 App 工程目录生成一份 appuploader.yaml,写清 App 的身份、签名资源、版本和元数据位置。之后体检、预演、发布三条命令搞定。
init --from-app 可以把线上已有的元数据导出到本地,纳入 git 管理--dry-run 只读不写,报告每一步会做什么--help 说明和示例# 1. 用 Apple ID 和 App 专用密码登录,不会触发双重验证 APPLE_PW='xxxx-xxxx-xxxx-xxxx' appuploader-cli login --apple-id dev@example.com --password-env APPLE_PW # 2. 在 App 工程目录生成项目配置,按需编辑 appuploader-cli init --bundle-id com.example.app --name "My App" # 3. 体检,预演,发布 appuploader-cli doctor --for-release appuploader-cli release --dry-run appuploader-cli release
让 AI 操作你的开发者账号,最怕它看不懂结果、重复执行出错或者误删东西。appuploader-cli 在设计上把这些风险都挡住了。
每条命令都支持 --json,输出固定结构。错误带稳定的错误码和退出码,进度只写到 stderr,结果只写到 stdout。
所有创建操作都是幂等的。东西已经存在就报告 created: false,而不是报错,跑两次和跑一次结果一样。
没有明文密码参数。凭据只从环境变量、项目配置或已登录账号读取,不会出现在命令历史和 AI 的对话记录里。
删除、吊销、撤回这类操作在非终端环境里必须加 --yes,AI 不会在不知情的情况下误删证书或撤回审核。
流水线到提交审核为止。审核通过后的发布要你亲自执行,版本号必须写明,执行前还会再确认一次。
失败结果里带着能不能重试,以及可以直接复制执行的下一条命令。AI 不用猜,照着做就能恢复。
每跑完一步都会记下进度。中途失败后重新执行同一条命令,就从失败的那一步继续。
虚线框的步骤只在项目配置里写了对应内容时才执行
--dry-run 预演整个流程,只读不写--from、--to、--skip、--only 可以裁剪要跑的步骤{"event":"step","step":"upload","status":"failed",
"retryable":true,
"next_action":"appuploader-cli release --from upload"}
{"event":"result","ok":false,"failed_step":"upload"}
从签名到提交审核,iOS 上架的每个环节都有对应命令。下面按任务分组列出。
免费 Apple ID 也能用
bundleBundle ID 与权限,缺什么补什么cert签发证书,已有有效证书就复用device测试设备,支持批量导入profile描述文件,过期自动重建signing按配置一次准备好全部签名资源App Store Connect 里的 App 记录
app查看和新建 Appversion创建版本、手动发布build上传 IPA、等待处理metadata元数据导入导出,支持 AI 翻译app ratings查看用户评分与评论跟进 Apple 最新的素材库
screenshot截图按尺寸自动归入机型previewApp 预览视频asset素材库,一次上传多处使用custom-page自定产品页面page-test产品页面 A/B 测试提审、撤回、TestFlight
review提交审核、撤回、填写审核信息testflight分发构建、管理分组和测试员build compliance回答出口合规问题game-center同步排行榜及多语言名称首个版本提审前必须准备好
iap内购项目、定价与元数据pricingApp 定价与可售地区privacy隐私标签agreement查看与接受 Apple 协议三种账号,一份配置
loginApp 专用密码、API Key、免费 Apple IDapi-key create用 Apple ID 给自己签发 API Keyinit与 doctor生成配置、只读体检skill生成 AI 技能文件account、team多账号、多团队切换完整的命令、参数和示例,可以执行 appuploader-cli <命令> --help 查看。
2026 年 10 月起,Apple 用素材库取代了按机型分组的截图集。下面这些内容只能通过素材库完成,appuploader-cli 已经全部支持。
# 查看 Apple 实时规格与上限 appuploader-cli asset specs --type screenshot --group IPHONE_DUO_PROFILE # 用目录里的文件替换该语言的 Duo 截图 appuploader-cli asset place --locale en-US ./duo/ # 以当前版本为模板新建自定产品页面,并放上标题素材 appuploader-cli custom-page create "Spring" --from-version appuploader-cli custom-page place Spring --locale en-US --type header header.png # 产品页面测试,30% 流量 appuploader-cli page-test create "Icon test" --traffic 30 --treatment B
不需要单独下载。它随开心上架主程序一起分发,装好主程序就有:
macOS 在 AppUploader.app/Contents/Resources/appuploader-cli;Windows 在主程序同目录下的 appuploader-cli.exe;Linux 在主程序同目录下的 appuploader-cli。
Claude Code 可以直接安装技能文件。Codex 等读取 AGENTS.md 的 agent,可以用 skill --format agents 生成说明追加进去。其他能执行终端命令的 agent,按技能文件里的规则加 --json --yes 调用即可。
在终端里会直接提示输入验证码。脚本和 agent 可以用 --2fa-code 传入,或者用 --2fa-from-file 让登录进程等待另一个进程写入验证码。
推荐改用 App 专用密码登录,根本不会碰到双重验证。
appuploader-cli 包含在开心上架里,使用 appuploader 的授权即可,无需单独额外授权。授权价格见 定价页。
推荐用 Apple ID 加 App 专用密码。它不会触发双重验证,全部功能都能用,泄露了也可以随时单独吊销。
生成方法:用 Apple ID 登录 account.apple.com,在「登录与安全」中找到「App 专用密码」,点击生成即可。密码只显示一次,请立即保存。
按输出里给出的下一条命令重跑,通常就是 release --from 加上失败的那一步。已完成的步骤会被跳过或复用,不会重复创建或重复上传。