appuploader-cli 命令行工具

让 AI 帮你完成
上架的全部工作

appuploader-cli 覆盖全部 iOS 上架能力,并且专门为 AI agent 和 CI 流水线设计。 从证书、描述文件、建 App、上传 IPA,到元数据、截图、提交审核和 TestFlight,每一步都是一条命令。

  • 不需要 Mac,不需要 Xcode,Windows、Linux、macOS 都能运行
  • 一条 release 跑完整个上架流程,失败后从断点继续
  • 内置给 Claude Code、Codex 等 AI agent 用的技能文件
~/MyApp
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 的说明文件
  • 升级工具后重新生成一次,技能文件始终和程序版本一致
把 build 目录里的 IPA 发布成 1.4.0,先预演一遍给我看。
好的。先体检账号和配置,再预演整个流程,这两步只读,不会改动任何东西。
AI agent 执行的命令
appuploader-cli skill --install user
appuploader-cli doctor --for-release --json
appuploader-cli release --dry-run --json
# 你确认预演结果后
appuploader-cli release --json --yes

GitHub Actions、Jenkins、GitLab CI 都能接

CI 里推荐用 Apple ID 加 App 专用密码 登录,不会遇到双重验证,全部功能都能用。凭据只从环境变量读取,项目配置文件里没有任何密钥,可以放心提交到 git。

  • 设置了 Apple ID 和 App 专用密码的环境变量后,不用先 login,命令会在需要时自动登录
  • --json 模式下每一步输出一行 JSON,方便流水线解析
  • 失败时返回稳定的退出码,告诉你能不能重试
  • Linux、Windows、macOS runner 都可以用
.github/workflows/release.yml
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 设计的安全边界

让 AI 操作你的开发者账号,最怕它看不懂结果、重复执行出错或者误删东西。appuploader-cli 在设计上把这些风险都挡住了。

结果一看就懂

每条命令都支持 --json,输出固定结构。错误带稳定的错误码和退出码,进度只写到 stderr,结果只写到 stdout。

重复执行也安全

所有创建操作都是幂等的。东西已经存在就报告 created: false,而不是报错,跑两次和跑一次结果一样。

密钥不上命令行

没有明文密码参数。凭据只从环境变量、项目配置或已登录账号读取,不会出现在命令历史和 AI 的对话记录里。

危险操作要显式确认

删除、吊销、撤回这类操作在非终端环境里必须加 --yes,AI 不会在不知情的情况下误删证书或撤回审核。

发布永远由你决定

流水线到提交审核为止。审核通过后的发布要你亲自执行,版本号必须写明,执行前还会再确认一次。

出错时告诉下一步

失败结果里带着能不能重试,以及可以直接复制执行的下一条命令。AI 不用猜,照着做就能恢复。

一条 release,跑完整个上架流程

每跑完一步都会记下进度。中途失败后重新执行同一条命令,就从失败的那一步继续。

preflightbundlecertsprofilesappversionuploadmetadatascreenshotscustom-pagesbuild-waitcompliancereview-infogamecenteriappricingprivacysubmittestflight

虚线框的步骤只在项目配置里写了对应内容时才执行

失败了也不慌

  • 每一步都可以重复执行:已存在的跳过,有效的证书直接复用,已上传的构建不会重复上传
  • --dry-run 预演整个流程,只读不写
  • --from、--to、--skip、--only 可以裁剪要跑的步骤
  • API Key 做不到的步骤,比如建 App、定价、隐私标签,会自动改用你指定的 Apple ID 账号
--json 模式下的失败输出
{"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 与版本

App Store Connect 里的 App 记录

  • app查看和新建 App
  • version创建版本、手动发布
  • 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 ID
  • api-key create用 Apple ID 给自己签发 API Key
  • init与 doctor生成配置、只读体检
  • skill生成 AI 技能文件
  • account、team多账号、多团队切换

完整的命令、参数和示例,可以执行 appuploader-cli <命令> --help 查看。

已支持 Apple 新素材库

2026 年 10 月起,Apple 用素材库取代了按机型分组的截图集。下面这些内容只能通过素材库完成,appuploader-cli 已经全部支持。

一张图上传一次,放到任意页面和语言

  • iPhone Duo 截图与预览:上传时按像素尺寸自动识别
  • 标题与搜索结果素材:iOS 27 起产品页顶部和搜索结果里的创意素材
  • 自定产品页面:可以用当前版本的产品页做模板,随版本一起送审
  • 产品页面测试:A/B 测试图标和截图,按比例分配流量
  • 同名同大小的文件自动复用,尺寸不符在写入前就会被拒绝
Apple 要求 2027 年 4 月起,提交审核必须带 iPhone Duo 截图。appuploader 已经支持。
素材库
# 查看 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

常见问题

appuploader-cli 在哪里,需要单独下载吗?

不需要单独下载。它随开心上架主程序一起分发,装好主程序就有:

macOS 在 AppUploader.app/Contents/Resources/appuploader-cli;Windows 在主程序同目录下的 appuploader-cli.exe;Linux 在主程序同目录下的 appuploader-cli。

支持哪些 AI agent?

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 跑到一半失败了怎么办?

按输出里给出的下一条命令重跑,通常就是 release --from 加上失败的那一步。已完成的步骤会被跳过或复用,不会重复创建或重复上传。

让 AI 帮你上架下一个版本

下载开心上架,appuploader-cli 已经在安装目录里了。