appuploader-cli 命令手册

本手册列出 appuploader-cli 的全部命令,包括每条命令的用途、用法、全部参数和示例,内容由程序的命令定义生成,与当前版本一致。第一次使用请先看入门教程:appuploader 命令行教程。

在终端里随时可以用 appuploader-cli <命令> --help 查看同样的说明。


目录


全局参数

所有命令都支持下面这些参数。

参数 说明
--account string 要使用的已登录账号:别名、Apple ID 或 API Key ID(APPUPLOADER_ACCOUNT)
--json 机器可读输出:stdout 输出一个 JSON 对象,进度写到 stderr
--project string appuploader.yaml 的路径(默认:从当前目录向上找到的第一个)
--proxy string 本次运行使用的 HTTP(S) 代理
-q, --quiet 不输出进度
--team string 开发者团队 ID(APPUPLOADER_TEAM_ID)
-v, --verbose 显示工具在后台做了什么
-y, --yes 对确认提示自动回答“是”(脚本执行破坏性命令时必须加)

操作某个 App 的命令还支持 --app(Bundle ID 或 App Store Connect 的 App ID;默认取 appuploader.yaml 的 app.bundle_id),涉及版本的命令还支持 --app-version(默认取 release.version,否则取当前可编辑的版本)。


账号与团队

appuploader-cli login

用 Apple ID 或 API Key 登录,并保存会话。

推荐用 Apple ID 加 App 专用密码登录:不会触发双重验证,而且功能最全,包括 Apple 官方 API 做不到的操作(新建 App、接受协议、设置价格和隐私标签)。

App Store Connect API Key 同样不需要密码和验证码,但做不到上述操作;免费 Apple ID(–free)只能管理签名资源。

密码只从环境变量或 stdin 读取,从不通过参数传入。使用普通密码时,终端里会提示输入双重验证码;脚本可以传 –2fa-code,或用 –2fa-from-file 然后把验证码写进该文件。

用法

appuploader-cli login [flags]

参数

参数 说明
--2fa-code string 双重验证码(APPUPLOADER_2FA_CODE)
--2fa-from-file string 等待验证码出现在这个文件中(读取后删除)
--2fa-stdin 从 stdin 读取验证码
--alias string 这个账号的名称,可用于 –account
--api-issuer-id string API Key 的 Issuer ID(APPUPLOADER_API_ISSUER_ID)
--api-key-file string JSON 格式的 App Store Connect API Key 文件 {key_id, issuer_id, key}(APPUPLOADER_API_KEY_FILE)
--api-key-id string API Key ID(APPUPLOADER_API_KEY_ID)
--api-key-path string AuthKey_*.p8 文件的路径(APPUPLOADER_API_KEY_PATH,或把文件内容放在 APPUPLOADER_API_KEY_P8)
--apple-id string Apple ID 邮箱(APPUPLOADER_APPLE_ID)
--free 这个 Apple ID 没有付费的开发者计划会员资格(只能管理签名:证书、Bundle ID、描述文件、设备)
--password-env string 保存密码的环境变量(默认 APPUPLOADER_PASSWORD);App 专用密码也放在这里
--password-stdin 从 stdin 的第一行读取密码
--save-key 把 .p8 随账号保存,之后运行不需要再提供密钥文件
--sms 用短信接收验证码,而不是发到受信任设备
--voice 通过电话语音播报验证码

示例

1APPLE_PW='xxxx-xxxx-xxxx-xxxx' appuploader-cli login --apple-id dev@example.com --password-env APPLE_PW --alias me   # App 专用密码,推荐
2appuploader-cli login --api-key-file AuthKey_ABC123.json --alias ci
3appuploader-cli login --apple-id dev@example.com --password-env APPLE_PW --2fa-from-file /tmp/code.txt
4appuploader-cli login --apple-id free@example.com --free

appuploader-cli logout

退出所选账号的登录(账号仍保留在列表中;account remove 才会删除)。

用法

appuploader-cli logout

示例

1appuploader-cli logout --account me

appuploader-cli account

已登录的账号。

子命令:list、remove

appuploader-cli account list

列出已登录的账号。

用法

appuploader-cli account list [flags]

参数

参数 说明
--no-check 不检查每个会话是否仍然有效

示例

1appuploader-cli account list
2appuploader-cli account list --no-check   # 更快:跳过会话检查

appuploader-cli account remove

删除所选账号、它的会话和证书目录。

用法

appuploader-cli account remove

示例

1appuploader-cli account remove --account me --yes

appuploader-cli whoami

显示命令将以哪个账号、哪个团队执行。

用法

appuploader-cli whoami

示例

1appuploader-cli whoami
2appuploader-cli whoami --account ci --json

appuploader-cli team

开发者团队。

子命令:list、use

appuploader-cli team list

列出账号所属的团队。

用法

appuploader-cli team list

示例

1appuploader-cli team list

appuploader-cli team use

把一个团队设为账号的默认团队。

用法

appuploader-cli team use <team-id>

示例

1appuploader-cli team use ABCDE12345

appuploader-cli api-key

App Store Connect API Key(仅限 Apple ID 账号)。

子命令:create、list、revoke

appuploader-cli api-key create

创建一个 App Store Connect API Key(需要具有管理员角色的 Apple ID)。

用法

appuploader-cli api-key create [flags]

参数

参数 说明
--alias string 配合 –login 创建的账号名称
--login 同时把新 Key 登录为一个账号
--name string 在 App Store Connect 中显示的 Key 名称(默认 “appuploader-cli”)
--out string 把 Key 写入这个 JSON 文件(默认:当前目录下的 AuthKey_.json)

示例

1appuploader-cli api-key create --name ci --login --alias ci-key

appuploader-cli api-key list

列出团队的 API Key。

用法

appuploader-cli api-key list

示例

1appuploader-cli api-key list

appuploader-cli api-key revoke

吊销一个 API Key。

用法

appuploader-cli api-key revoke <key-id>

示例

1appuploader-cli api-key revoke ABC123DEFG --yes

appuploader-cli agreement

Apple 开发者协议(仅限 Apple ID 账号)。

子命令:accept、list

appuploader-cli agreement accept

接受待签的协议(不指定 ID 时接受全部)。

用法

appuploader-cli agreement accept [agreement-id...]

示例

1appuploader-cli agreement accept --yes
2appuploader-cli agreement accept 2ed0a77d-…

appuploader-cli agreement list

列出等待接受的 Apple 协议。

税务和银行协议只能在 App Store Connect 的「协议、税务和银行业务」中完成。

用法

appuploader-cli agreement list

示例

1appuploader-cli agreement list

项目与发布流水线

appuploader-cli init

为项目生成一份初始的 appuploader.yaml。

项目配置写明 App、版本、账号,以及商店资料、截图和签名文件的位置;每条命令都会读取它。–from-app 还会把线上的商店资料下载下来。

用法

appuploader-cli init [flags]

参数

参数 说明
--bundle-id string App 的 Bundle ID
--dir string 写入 appuploader.yaml 的目录(默认 “.")
--force 覆盖已有文件
--from-app 同时把 App 当前的商店资料下载到元数据目录(需要已登录的账号)
--name string App 的名称

示例

1appuploader-cli init --bundle-id com.example.app --name "My App"
2appuploader-cli init --bundle-id com.example.app --from-app

appuploader-cli doctor

检查账号、团队、项目配置、安装包和商店资料是否就绪。

只读。检查账号、团队、协议、项目配置、Bundle ID、App 记录、安装包、商店资料目录和授权,并说明每个问题该怎么修。

用法

appuploader-cli doctor [flags]

参数

参数 说明
--for-release release 同时检查 release 需要的全部内容

示例

1appuploader-cli doctor
2appuploader-cli doctor --for-release --json

appuploader-cli release

按 appuploader.yaml 运行完整流水线:签名 → App → 版本 → 上传 → 元数据 → 提交审核。

按顺序执行 appuploader.yaml 要求的每一步:

preflight → bundle → certs → profiles → app → version → upload → metadata → screenshots → custom-pages
→ build-wait → compliance → review-info → gamecenter → iap → pricing → privacy → submit → testflight

每一步都是幂等的,并记录在 .appuploader/release-state.json 中,失败后重新运行会从中断的地方继续。发布已通过审核的手动发布版本永远不是流水线的一步:请自己运行 version publish。

用法

appuploader-cli release [flags]

参数

参数 说明
--build string 使用这个构建(ID 或构建号),而不是上传新的
--dry-run 不做任何修改;报告每一步会做什么
--from string 从这一步开始;步骤:preflight、bundle、certs、profiles、app、version、upload、metadata、screenshots、custom-pages、build-wait、compliance、review-info、gamecenter、iap、pricing、privacy、submit、testflight
--ipa string 要上传的安装包(默认:release.build.path)
--no-submit 在提交审核之前停止
--only strings 只运行这些步骤,用逗号分隔
--p12-password-env string 保存 .p12 密码的环境变量(默认 APPUPLOADER_P12_PASSWORD)
--restart 从第一步开始,而不是从上次失败的地方继续
--skip strings 要跳过的步骤,用逗号分隔
--to string 在这一步之后停止

示例

1appuploader-cli release --dry-run
2appuploader-cli release
3appuploader-cli release --from metadata --to submit
4appuploader-cli release --only screenshots,custom-pages
5appuploader-cli release --no-submit --json

appuploader-cli skill

生成给 AI agent 使用的技能文件。

根据当前程序的命令生成一份 Markdown 技能文件,内容包括:agent 必须遵守的规则(JSON 输出、密钥处理、哪些操作不得自行执行)、退出码与重试策略、常用流程,以及完整的命令索引。

  • --format claude:带 front matter 的 SKILL.md,用于 Claude Code 技能(默认)
  • --format agents:纯 Markdown,用于 AGENTS.md、CLAUDE.md 或其他 agent 的说明文件
  • --install user:写到 ~/.claude/skills/appuploader-cli/SKILL.md
  • --install project:写到 ./.claude/skills/appuploader-cli/SKILL.md

用法

appuploader-cli skill [flags]

参数

参数 说明
--format string claude(带 front matter 的 SKILL.md)或 agents(纯 Markdown)(默认 “claude”)
--install string 写到 Claude Code 查找技能的位置:user 或 project
--out string 写到这个文件,而不是 stdout

示例

1appuploader-cli skill                      # 把技能文件输出到 stdout
2appuploader-cli skill --install project    # ./.claude/skills/appuploader-cli/SKILL.md
3appuploader-cli skill --install user       # ~/.claude/skills/appuploader-cli/SKILL.md
4appuploader-cli skill --format agents >> AGENTS.md

appuploader-cli exit-codes

打印本工具使用的退出码和错误码。

用法

appuploader-cli exit-codes

示例

1appuploader-cli exit-codes

签名:Bundle ID、证书、设备与描述文件

appuploader-cli bundle

Bundle ID(App ID)及其权限。

子命令:capabilities、create、delete、get、list、set

appuploader-cli bundle capabilities

列出 Bundle ID 可以开启的权限。

用法

appuploader-cli bundle capabilities

示例

1appuploader-cli bundle capabilities

appuploader-cli bundle create

注册 Bundle ID,或把已有 Bundle ID 的权限补齐到最新。

用法

appuploader-cli bundle create [identifier] [flags]

参数

参数 说明
--app-clip 注册 App Clip 的 ID(仅限 Apple ID 账号)
--cap bundle capabilities 要开启的权限:ID 或 ID=SETTING:OPTION(可重复;见 bundle capabilities)
--name string 在开发者网站上显示的名称(默认:appuploader.yaml 中的 app.name,否则用标识符)
--parent string App Clip 所属 App 的 Bundle ID
--platform string IOS | MAC_OS | UNIVERSAL(仅限 API Key 账号)

示例

1appuploader-cli bundle create com.example.app --name "My App" --cap PUSH_NOTIFICATIONS,GAME_CENTER
2appuploader-cli bundle create   # 标识符、名称和权限取自 appuploader.yaml

appuploader-cli bundle delete

删除一个 Bundle ID。

用法

appuploader-cli bundle delete <identifier|id>

示例

1appuploader-cli bundle delete com.example.old --yes

appuploader-cli bundle get

查看一个 Bundle ID 及其权限。

用法

appuploader-cli bundle get <identifier|id>

示例

1appuploader-cli bundle get com.example.app

appuploader-cli bundle list

列出团队的 Bundle ID。

用法

appuploader-cli bundle list

示例

1appuploader-cli bundle list

appuploader-cli bundle set

开启(–cap)或关闭(–remove)权限。

用法

appuploader-cli bundle set <identifier|id> [flags]

参数

参数 说明
--cap stringArray 要开启的权限:ID 或 ID=SETTING:OPTION(可重复)
--remove stringArray 要关闭的权限(可重复)

示例

1appuploader-cli bundle set com.example.app --cap PUSH_NOTIFICATIONS --remove ICLOUD

appuploader-cli cert

签名证书。

子命令:create、download、list、revoke、types

appuploader-cli cert create

获取一张可用的指定类型证书:手上有 .p12 的就复用,否则签发新的。

证书私钥在本地生成,.p12 保存到 –out。不加 –new 时,会复用该类型下能导出 .p12(本地有私钥或 appuploader.net 有备份)的有效证书。

用法

appuploader-cli cert create [flags]

参数

参数 说明
--backup 同时把 .p12 备份到 appuploader.net
--min-days-left int 现有最好的证书在这么多天内过期时,签发新证书(默认 30)
--new 总是签发新证书,即使已有可用的
--out string 保存 .p12 的目录(默认:appuploader.yaml 中的 signing.out_dir)
--owner-id string 证书对应的 App、Pass Type ID 或 Merchant ID(推送、Pass Type 和 Apple Pay 类型)
--p12-password-env string 保存 .p12 密码的环境变量(默认 APPUPLOADER_P12_PASSWORD)
--type cert types 证书类型,如 IOS_DISTRIBUTION、IOS_DEVELOPMENT、MAC_APP_DISTRIBUTION(见 cert types;默认:appuploader.yaml 中的 signing.certs)

示例

1P12_PW=… appuploader-cli cert create --type IOS_DISTRIBUTION --out ./signing --p12-password-env P12_PW
2appuploader-cli cert create --type IOS_DISTRIBUTION --new   # 即使已有可用的也签发新证书

appuploader-cli cert download

保存证书的 .p12(来自本地私钥,否则来自 appuploader.net 备份)。

用法

appuploader-cli cert download <cert-id> [flags]

参数

参数 说明
--out string 保存 .p12 的目录(默认 “.")

示例

1appuploader-cli cert download 7ABC123DEF --out ./signing

appuploader-cli cert list

列出团队的证书。

用法

appuploader-cli cert list [flags]

参数

参数 说明
--type string 只列这种类型,如 IOS_DISTRIBUTION
--valid 隐藏已过期和已吊销的证书

示例

1appuploader-cli cert list --type IOS_DISTRIBUTION --valid

appuploader-cli cert revoke

吊销证书并删除它的本地私钥。

用法

appuploader-cli cert revoke <cert-id>

示例

1appuploader-cli cert revoke 7ABC123DEF --yes

appuploader-cli cert types

列出这个账号可以签发的证书类型。

用法

appuploader-cli cert types

示例

1appuploader-cli cert types

appuploader-cli device

已注册的测试设备。

子命令:add、import、list、set

appuploader-cli device add

注册设备(UDID 已注册时报告已存在,不算错误)。

用法

appuploader-cli device add <udid> [flags]

参数

参数 说明
--name string 设备名称(必填)
--platform string IOS | MAC_OS | TV_OS | …(默认 “IOS”)

示例

1appuploader-cli device add 00008110-000A1B2C3D4E5F6 --name "QA iPhone"

appuploader-cli device import

从 devices.txt(TSV)或 .deviceids 文件批量注册设备。

用法

appuploader-cli device import <file>

示例

1appuploader-cli device import devices.txt

appuploader-cli device list

列出已注册的设备。

用法

appuploader-cli device list [flags]

参数

参数 说明
--enabled 隐藏已停用的设备
--platform string 只列这个平台:IOS、MAC_OS、…

示例

1appuploader-cli device list --enabled

appuploader-cli device set

重命名、启用或停用设备。

用法

appuploader-cli device set <device-id> [flags]

参数

参数 说明
--enabled –enabled=false 停用设备,–enabled 启用(默认 true)
--name string 新名称

示例

1appuploader-cli device set ABCD1234 --name "QA iPhone 2"
2appuploader-cli device set ABCD1234 --enabled=false

appuploader-cli profile

描述文件。

子命令:clean、create、delete、download、list

appuploader-cli profile clean

删除已过期和/或无效的描述文件。

用法

appuploader-cli profile clean [flags]

参数

参数 说明
--dry-run 只列出会删除哪些,不实际删除
--expired 删除已过期的描述文件
--invalid 删除无效的描述文件
--prefix string 只处理名称以此开头的描述文件

示例

1appuploader-cli profile clean --expired --invalid --dry-run

appuploader-cli profile create

获取一个指定名称的可用描述文件:能用就复用,过时就重建,没有就创建。

选取所有类型匹配的有效证书,以及(开发和 Ad Hoc 描述文件)指定的设备;创建描述文件,或在证书、设备有变化时重建,并保存到 –out。

用法

appuploader-cli profile create [name] [flags]

参数

参数 说明
--all-devices 包含所有已启用的设备(开发和 Ad Hoc 描述文件)
--bundle-id string Bundle ID(默认:appuploader.yaml 中的 app.bundle_id)
--cert stringArray 要包含的证书 ID(可重复;默认:所有类型匹配的有效证书)
--device stringArray 要包含的设备 ID(可重复;开发和 Ad Hoc 描述文件)
--force 即使当前描述文件已经匹配也重建
--out string 保存描述文件的目录(默认:appuploader.yaml 中的 signing.out_dir)
--type string 描述文件类型:IOS_APP_STORE、IOS_APP_DEVELOPMENT、IOS_APP_ADHOC、MAC_APP_STORE、…(指定名称时必填)

示例

1appuploader-cli profile create "App AppStore" --type IOS_APP_STORE --out ./signing
2appuploader-cli profile create "App Dev" --type IOS_APP_DEVELOPMENT --all-devices
3appuploader-cli profile create   # appuploader.yaml 中的全部描述文件

appuploader-cli profile delete

删除一个描述文件。

用法

appuploader-cli profile delete <name|id|uuid>

示例

1appuploader-cli profile delete "App Old" --yes

appuploader-cli profile download

保存描述文件的 .mobileprovision 文件。

用法

appuploader-cli profile download <name|id|uuid> [flags]

参数

参数 说明
--out string 保存到的目录(默认 “.")

示例

1appuploader-cli profile download "App AppStore" --out ./signing

appuploader-cli profile list

列出描述文件。

用法

appuploader-cli profile list [flags]

参数

参数 说明
--bundle-id string 只列这个 Bundle ID 的描述文件
--state string 只列这个状态:ACTIVE、EXPIRED、INVALID
--type string 只列这种描述文件类型

示例

1appuploader-cli profile list --bundle-id com.example.app

appuploader-cli signing

获取 appuploader.yaml 列出的全部证书和描述文件,并保存 manifest.json。

给构建机的一键命令:注册 Bundle ID 和设备,获取 signing.certs / signing.profiles 列出的每张证书和每个描述文件,连同 manifest.json(ID、路径、过期时间)一起写到 signing.out_dir。

用法

appuploader-cli signing [flags]

参数

参数 说明
--force 即使描述文件已经匹配也重建
--out string 保存到的目录(默认:signing.out_dir)
--p12-password-env string 保存 .p12 密码的环境变量(默认 APPUPLOADER_P12_PASSWORD)

示例

1appuploader-cli signing
2appuploader-cli signing --force   # 即使描述文件看起来没问题也重建

App、版本与构建

appuploader-cli app

App Store Connect 上的 App。

子命令:create、get、list、ratings、set

appuploader-cli app create

创建 App Store Connect 的 App 记录(仅限 Apple ID 账号);App 已存在时报告已存在,不算错误。

用法

appuploader-cli app create [bundle-id] [flags]

参数

参数 说明
--company-name string 卖家名称,只在团队创建第一个 App 时需要
--name string App Store 名称,最多 30 个字符,在整个商店内唯一(默认:appuploader.yaml 中的 app.name)
--platform stringArray IOS | MAC_OS | TV_OS | VISION_OS(可重复;默认:app.platforms)
--primary-locale string 主要语言,如 en-US(默认:app.primary_locale,否则 en-US)
--sku string SKU,在团队内唯一(默认:Bundle ID)
--version string 第一个版本号(默认 1.0)

示例

1appuploader-cli app create com.example.app --name "My App" --sku myapp01 --primary-locale en-US
2appuploader-cli app create   # 取 appuploader.yaml 中的值

appuploader-cli app get

查看一个 App。

用法

appuploader-cli app get [bundle-id|app-id]

示例

1appuploader-cli app get com.example.app
2appuploader-cli app get 6822110130

appuploader-cli app list

列出团队的 App。

用法

appuploader-cli app list

示例

1appuploader-cli app list

appuploader-cli app ratings

列出用户对该版本的评分和评论。

用法

appuploader-cli app ratings

示例

1appuploader-cli app ratings --json

appuploader-cli app set

修改 App 级别的设置(内容版权声明)。

用法

appuploader-cli app set [flags]

参数

参数 说明
--content-rights string none | third_party:App 是否包含、显示或访问第三方内容(默认:app.content_rights)

示例

1appuploader-cli app set --content-rights none

appuploader-cli version

App Store 版本。

子命令:create、get、list、publish、set

appuploader-cli version create

获取一个指定版本号的可编辑版本:没有就创建,号不同就改号,已有就复用;然后应用设置。

Apple 同一时间只允许一个可编辑版本:版本号不同的未发布版本会被改号,版本号相同的直接复用。

用法

appuploader-cli version create [version] [flags]

参数

参数 说明
--copyright string 版权信息
--phased 7 天分阶段发布(–phased=false 关闭)
--platform string IOS | MAC_OS | TV_OS | VISION_OS(默认:appuploader.yaml 中的 release.platform,否则 IOS)
--release-date string SCHEDULED 的发布时间,RFC 3339 格式
--release-type string MANUAL | AFTER_APPROVAL | SCHEDULED

示例

1appuploader-cli version create 1.2.0 --release-type MANUAL --copyright "2026 Example Ltd"
2appuploader-cli version create   # 取 appuploader.yaml 中的 release.version

appuploader-cli version get

查看一个版本、它的分阶段发布状态和关联的构建(默认:可编辑的版本)。

用法

appuploader-cli version get [version]

示例

1appuploader-cli version get
2appuploader-cli version get 1.2.0

appuploader-cli version list

列出 App 的 App Store 版本。

用法

appuploader-cli version list

示例

1appuploader-cli version list

appuploader-cli version publish

发布已通过审核的版本。

发布已通过 App 审核、等待开发者发布的版本(发布类型 MANUAL,状态 PENDING_DEVELOPER_RELEASE)。发布后版本对外公开,无法撤销,所以它是需要用户自己运行的独立命令:release 流水线从不调用它,而且必须明确写出版本号并与之一致。

用法

appuploader-cli version publish <version>

示例

1appuploader-cli version publish 1.2.0   # 执行前会要求确认

appuploader-cli version set

修改版本的版权信息、发布类型、分阶段发布或关联的构建。

–build 只关联构建而不提交(版本加入审核提交之前,Apple 要求先关联构建)。

用法

appuploader-cli version set [version] [flags]

参数

参数 说明
--build string 要发布的构建:构建 ID、构建号,或 latest(只关联,不提交)
--copyright string 版权信息
--phased 7 天分阶段发布(–phased=false 关闭)
--release-date string SCHEDULED 的发布时间,RFC 3339 格式
--release-type string MANUAL | AFTER_APPROVAL | SCHEDULED

示例

1appuploader-cli version set --phased --release-type AFTER_APPROVAL
2appuploader-cli version set --build latest

appuploader-cli build

构建:上传、查看、等待处理。

子命令:compliance、get、info、list、upload、wait

appuploader-cli build compliance

回答构建的出口合规(加密)问题。

用法

appuploader-cli build compliance [build] [flags]

参数

参数 说明
--exempt 构建不使用加密,或只使用豁免的加密(–exempt=false 表示使用了非豁免加密)

示例

1appuploader-cli build compliance --exempt
2appuploader-cli build compliance 42 --exempt=false

appuploader-cli build get

查看一个构建:构建 ID、构建号,或 latest(默认)。

用法

appuploader-cli build get [build]

示例

1appuploader-cli build get
2appuploader-cli build get 42

appuploader-cli build info

为 .ipa / .pkg 生成 App Store 资源描述文件 AppStoreInfo.plist(使用 appuploader 授权)。

用法

appuploader-cli build info <file> [flags]

参数

参数 说明
--format string plist 格式:xml | binary(默认 “xml”)
-o, --output string 把 plist 写到这个文件,而不是 stdout
-u, --username string 授权所属的 Apple ID(默认:所选账号的 Apple ID)

示例

1appuploader-cli build info ./build/App.ipa -o AppStoreInfo.plist

appuploader-cli build list

列出 App 的构建,最新的在前。

用法

appuploader-cli build list [flags]

参数

参数 说明
--limit int 显示多少条(默认 20)

示例

1appuploader-cli build list --limit 5

appuploader-cli build upload

把签名好的 .ipa / .pkg 上传到 App Store Connect(使用 appuploader 授权)。

使用 Apple ID 的 appuploader 授权;用 API Key 账号上传时,用 -u 指定授权所属的 Apple ID。App Store Connect 上已有的构建号会报告已存在,不会重复上传。

用法

appuploader-cli build upload [file] [flags]

参数

参数 说明
--timeout string –wait 的等待时长(默认 30m)
--type string 包类型:ios | osx | appletvos | xros(默认:release.build.type,否则 ios)
-u, --username string 授权所属的 Apple ID(使用 API Key 账号时需要)
--wait 等待 Apple 处理完构建

示例

1appuploader-cli build upload ./build/App.ipa --wait
2appuploader-cli build upload ./build/App.ipa --account ci -u owner@example.com

appuploader-cli build wait

等待构建处理完成:构建 ID、构建号,或 latest(默认)。

用法

appuploader-cli build wait [build] [flags]

参数

参数 说明
--timeout string 超过这个时长就放弃(默认 30m)

示例

1appuploader-cli build wait --timeout 45m
2appuploader-cli build wait 42

商店资料、截图与素材

appuploader-cli metadata

商店资料文本,以每个语言一个目录的文件形式保存。

子命令:export、import、translate、validate

appuploader-cli metadata export

把版本的商店资料文本(可选同时包括素材)保存到目录。

用法

appuploader-cli metadata export [flags]

参数

参数 说明
--dir string 要写入的目录(默认:appuploader.yaml 中的 metadata.dir)
--previews 同时下载 App 预览视频
--screenshots 同时下载截图

示例

1appuploader-cli metadata export --dir ./store --screenshots --previews

appuploader-cli metadata import

把商店资料目录上传到版本(只上传目录中有的内容;空文件不会清空已有的值)。

目录结构与 deliver 相同:每个语言一个子目录,每个字段一个文本文件(见 cli-config.md)。

只上传磁盘上存在的内容;空文件不会清空 Apple 上的值;截图和预览按“语言 × 机型槽位”整组替换。

用法

appuploader-cli metadata import [flags]

参数

参数 说明
--dir string 要读取的目录(默认:appuploader.yaml 中的 metadata.dir)
--only strings 只导入这些部分:config、review、locales、screenshots、previews(默认:目录中有的全部)

示例

1appuploader-cli metadata import --dir ./store
2appuploader-cli metadata import --only locales

appuploader-cli metadata translate

把商店资料文本机器翻译成其他语言(消耗 appuploader.net 的 AI 额度)。

用法

appuploader-cli metadata translate [flags]

参数

参数 说明
--dir string 要翻译的文件所在目录(默认:metadata.dir)
--from string 源语言,如 en-US(默认:appuploader.yaml 中的 metadata.translate.from)
--remote 直接翻译 App Store Connect 上版本的文本,而不是本地文件
--to strings 目标语言(默认:metadata.translate.to)

示例

1appuploader-cli metadata translate --dir ./store --from en-US --to zh-Hans,ja

appuploader-cli metadata validate

离线检查商店资料目录:文本长度上限、语言代码、截图尺寸和文件名。

用法

appuploader-cli metadata validate [flags]

参数

参数 说明
--dir string 要检查的目录(默认:appuploader.yaml 中的 metadata.dir)
--strict 把警告当作错误

示例

1appuploader-cli metadata validate --dir ./store --strict

appuploader-cli screenshot

App Store 截图。

子命令:clear、copy、list、upload

appuploader-cli screenshot clear

删除某个语言的截图(全部机型槽位,或其中一个)。

用法

appuploader-cli screenshot clear [flags]

参数

参数 说明
--display-type string 只处理这个机型槽位,如 APP_IPHONE_67
--locale string 语言(必填)

示例

1appuploader-cli screenshot clear --locale en-US --display-type APP_IPHONE_67 --yes

appuploader-cli screenshot copy

把一个语言的截图复制到其他语言。

用法

appuploader-cli screenshot copy [flags]

参数

参数 说明
--from string 源语言(必填)
--overwrite 替换目标语言在这些机型槽位中已有的截图
--to strings 目标语言(必填)

示例

1appuploader-cli screenshot copy --from en-US --to de-DE,fr-FR --overwrite

appuploader-cli screenshot list

按机型槽位列出某个语言的截图。

用法

appuploader-cli screenshot list [flags]

参数

参数 说明
--locale string 语言(必填)

示例

1appuploader-cli screenshot list --locale en-US

appuploader-cli screenshot upload

从目录上传截图;每个文件放到与其像素尺寸匹配的机型槽位。

PNG / JPEG 文件;每个文件放到与其像素尺寸匹配的机型槽位(iPhone Duo 尺寸通过素材库上传)。不加 –replace 时,文件追加到槽位已有的截图之后。

用法

appuploader-cli screenshot upload <dir> [flags]

参数

参数 说明
--locale string 目录里只有一个语言的文件(默认:每个语言一个子目录,//…)
--replace 替换涉及到的每个机型槽位,而不是追加

示例

1appuploader-cli screenshot upload ./store/screenshots --replace
2appuploader-cli screenshot upload ./shots/en --locale en-US

appuploader-cli preview

App 预览视频。

子命令:clear、list、upload

appuploader-cli preview clear

删除某个语言的预览视频。

用法

appuploader-cli preview clear [flags]

参数

参数 说明
--locale string 语言(必填)

示例

1appuploader-cli preview clear --locale en-US --yes

appuploader-cli preview list

按机型槽位列出某个语言的预览视频。

用法

appuploader-cli preview list [flags]

参数

参数 说明
--locale string 语言(必填)

示例

1appuploader-cli preview list --locale en-US

appuploader-cli preview upload

从

// 上传 App 预览视频,替换涉及到的每个机型槽位。

视频命名为 <DISPLAY_TYPE>_.mp4,或任意名称,按分辨率归入机型槽位。

用法

appuploader-cli preview upload <dir> [flags]

参数

参数 说明
--locale string 只处理这个语言的子目录

示例

1appuploader-cli preview upload ./store/previews
2appuploader-cli preview upload ./store/previews --locale zh-Hans

appuploader-cli asset

素材库:上传一次,可用于任意语言、页面或测试(包括 iPhone Duo 截图、标题和搜索结果素材)。

子命令:delete、list、place、placements、specs、unplace、upload

appuploader-cli asset delete

从素材库删除素材。

用法

appuploader-cli asset delete <asset-id>... [flags]

参数

参数 说明
--purge 同时从所有仍在展示它的位置移除

示例

1appuploader-cli asset delete 84400019-… --yes
2appuploader-cli asset delete 84400019-… --purge --yes   # 先从所有展示位置移除

appuploader-cli asset list

列出 App 的素材库。

用法

appuploader-cli asset list [flags]

参数

参数 说明
--category string screenshots 或 creative
--media string image 或 video
--state strings 只列这些状态,如 FAILED,AWAITING_UPLOAD
--unused 只列已经没有任何地方展示的素材

示例

1appuploader-cli asset list --category creative
2appuploader-cli asset list --unused   # 可以用 asset delete 清理的素材

appuploader-cli asset place

截图和预览:分组就是机型槽位,未指定 –group 时按第一个文件的尺寸识别。

标题素材(–type header):一张 3840x1646 或 5244x2950 的图片,或一段 3840x1646、5-30 秒的视频;iPhone 上只显示中间约 2/3 的宽度,文字要放在这个范围内。

搜索结果素材(–type search):一张 3:2 的图片,尺寸从 1920x1280 到 3840x2560,或 5244x2950,或一段 3:2 的视频。标题和搜索结果素材在 iOS 27 及以上显示。

素材库中已有的文件直接复用,不会重复上传。

用法

appuploader-cli asset place <file|dir>... [flags]

参数

参数 说明
--append 追加到该分组现有内容之后,而不是替换
--group asset specs 展示位置分组(默认:按第一个文件的尺寸识别;见 asset specs)
--locale strings 语言(必填);不存在时自动创建;同一批文件放到每个语言上,只上传一次
--type string screenshot、preview、header 或 search(默认 “screenshot”)

示例

1appuploader-cli asset place --locale en-US ./duo/01.png ./duo/02.png
2appuploader-cli asset place --locale en-US,zh-Hans --type header ./header.png
3appuploader-cli asset place --locale en-US --type search ./search.png
4appuploader-cli asset place --locale en-US --type preview --group IPHONE_DUO_PROFILE ./duo.mp4

appuploader-cli asset placements

列出版本某个语言展示的内容:截图、预览、标题素材、搜索结果素材。

用法

appuploader-cli asset placements [flags]

参数

参数 说明
--group string 只看这个展示位置分组
--locale string 语言(必填)
--type string 只看这种展示位置类型:screenshot、preview、header、search

示例

1appuploader-cli asset placements --locale en-US
2appuploader-cli asset placements --locale en-US --type header

appuploader-cli asset specs

显示 Apple 接受的展示位置分组,以及各自的尺寸和数量上限。

Apple 当前的展示位置分组目录,包括可接受的尺寸,以及每个页面类型(版本 / 自定产品页面 / 产品页面测试)的上限。

用法

appuploader-cli asset specs [flags]

参数

参数 说明
--group string 只看这个展示位置分组,如 IPHONE_DUO_PROFILE
--type string 只看这种展示位置类型:screenshot、preview、header、search

示例

1appuploader-cli asset specs --type screenshot --group IPHONE_DUO_PROFILE
2appuploader-cli asset specs --type header

appuploader-cli asset unplace

在版本的指定语言上不再展示某个展示位置分组;文件仍保留在素材库中。

用法

appuploader-cli asset unplace [flags]

参数

参数 说明
--group string 只处理这个分组(默认:该类型的所有分组)
--locale strings 语言(必填)
--type string screenshot、preview、header 或 search(必填)

示例

1appuploader-cli asset unplace --locale en-US --type header --yes
2appuploader-cli asset unplace --locale en-US --type screenshot --group IPHONE_DUO_PROFILE --yes

appuploader-cli asset upload

把文件上传到素材库,但暂不放到任何地方展示。

用法

appuploader-cli asset upload <file|dir>... [flags]

参数

参数 说明
--creative 这些文件是创意素材(标题、搜索结果),而不是截图或预览
--timeout string 等待 Apple 处理文件的时长(0 = 不等待)(默认 “2m”)

示例

1appuploader-cli asset upload ./header.png --creative
2appuploader-cli asset upload ./shots/

appuploader-cli custom-page

自定产品页面:拥有独立 URL 的额外产品页,用于广告和推广活动。

子命令:create、delete、get、import、list、place、set

appuploader-cli custom-page create

创建自定产品页面(同名页面已存在时直接复用)。

用法

appuploader-cli custom-page create <name> [flags]

参数

参数 说明
--deep-link string 页面在 App 内打开的 URL(深层链接)
--from-version 以 App Store 版本的产品页为起点复制一份
--locale strings 初始语言(默认:App 的主要语言)

示例

1appuploader-cli custom-page create "Spring Sale" --from-version --locale en-US,zh-Hans

appuploader-cli custom-page delete

删除一个自定产品页面。

用法

appuploader-cli custom-page delete <page>

示例

1appuploader-cli custom-page delete "Spring Sale" --yes

appuploader-cli custom-page get

查看页面的版本、语言和素材。

用法

appuploader-cli custom-page get <page>

示例

1appuploader-cli custom-page get "Spring Sale" --json

appuploader-cli custom-page import

从页面目录创建或更新自定产品页面。

每个页面一个目录:config.yaml、metadata//promotional_text.txt、screenshots/、previews/、creative/(见 cli-config.md)。

用法

appuploader-cli custom-page import [flags]

参数

参数 说明
--dir string 每个页面一个子目录的上级目录(默认:appuploader.yaml 中的 custom_pages.dir)
--dry-run 只报告会改什么,不实际修改
--submit 同时把每个页面加入草稿审核提交(默认:custom_pages.submit)

示例

1appuploader-cli custom-page import --dry-run
2appuploader-cli custom-page import --dir ./store/custom_pages --submit

appuploader-cli custom-page list

列出 App 的自定产品页面。

用法

appuploader-cli custom-page list

示例

1appuploader-cli custom-page list

appuploader-cli custom-page place

让页面某个语言的一个展示位置分组只展示这些文件。

用法

appuploader-cli custom-page place <page> <file|dir>... [flags]

参数

参数 说明
--group asset specs 展示位置分组(默认:按第一个文件的尺寸识别;见 asset specs)
--locale string 语言(必填);页面没有该语言时自动添加
--type string screenshot、preview、header 或 search(默认 “screenshot”)

示例

1appuploader-cli custom-page place "Spring Sale" --locale en-US ./sale/iphone/*.png
2appuploader-cli custom-page place "Spring Sale" --locale en-US --type header ./sale/header.png

appuploader-cli custom-page set

修改页面的名称、可见性或深层链接,或某个语言的推广文本。

用法

appuploader-cli custom-page set <page> [flags]

参数

参数 说明
--deep-link string 页面在 App 内打开的 URL(深层链接)
--locale string 要添加到页面的语言,或要设置推广文本的语言
--name string 新名称
--promotional-text string –locale 对应的推广文本,最多 170 个字符
--visible 页面是否在其 URL 上线(–visible=false 隐藏)(默认 true)

示例

1appuploader-cli custom-page set "Spring Sale" --visible=false
2appuploader-cli custom-page set "Spring Sale" --deep-link myapp://sale
3appuploader-cli custom-page set "Spring Sale" --locale ja --promotional-text "…"

appuploader-cli page-test

产品页面测试:对已上架 App 的图标、截图、预览和创意素材做 A/B 测试。

子命令:create、delete、get、list、place、start、stop、treatment

appuploader-cli page-test create

创建测试及其测试方案(同名测试已存在时直接复用)。

用法

appuploader-cli page-test create <name> [flags]

参数

参数 说明
--platform string 平台(默认 “IOS”)
--traffic int 看到测试方案的符合条件访客比例,1-100(必填)
--treatment strings 测试方案名称,最多 3 个,如 B,C

示例

1appuploader-cli page-test create "Header test" --traffic 30 --treatment B,C

appuploader-cli page-test delete

删除尚未开始的测试。

用法

appuploader-cli page-test delete <test>

示例

1appuploader-cli page-test delete "Header test" --yes

appuploader-cli page-test get

查看测试的方案、语言和素材。

用法

appuploader-cli page-test get <test>

示例

1appuploader-cli page-test get "Header test"

appuploader-cli page-test list

列出 App 的产品页面测试。

用法

appuploader-cli page-test list

示例

1appuploader-cli page-test list

appuploader-cli page-test place

让某个测试方案某个语言的一个展示位置分组只展示这些文件。

用法

appuploader-cli page-test place <test> <file|dir>... [flags]

参数

参数 说明
--group asset specs 展示位置分组(默认:按第一个文件的尺寸识别;见 asset specs)
--locale string 语言(必填);测试方案没有该语言时自动添加
--treatment string 测试方案名称或 ID(必填)
--type string screenshot、preview、header 或 search(默认 “screenshot”)

示例

1appuploader-cli page-test place "Header test" --treatment B --locale en-US --type header ./b-header.png

appuploader-cli page-test start

开始一个已通过审核的测试。

用法

appuploader-cli page-test start <test>

示例

1appuploader-cli page-test start "Header test"   # 测试通过审核之后

appuploader-cli page-test stop

停止正在运行的测试。

用法

appuploader-cli page-test stop <test>

示例

1appuploader-cli page-test stop "Header test" --yes

appuploader-cli page-test treatment

给测试添加一个方案(同名方案已存在时直接复用)。

用法

appuploader-cli page-test treatment <test> <name> [flags]

参数

参数 说明
--icon string 构建中附带的备用 App 图标名称

示例

1appuploader-cli page-test treatment "Header test" D --icon AppIconDark

审核与 TestFlight

appuploader-cli review

App 审核:加入审核的内容、提交、状态。

子命令:add、cancel、info、remove、status、submit

appuploader-cli review add

把内容加入草稿审核提交。

可以加入草稿提交的内容:

  • version:App Store 版本(需要先关联构建:version set –build)
  • iap <product-id>:内购项目;App 的第一个内购只能和版本一起审核
  • game-center:所有等待审核的排行榜
  • asset <asset-id>...:素材库中的素材,可以先于产品页更新或 Apple Ads 广告活动通过审核
  • custom-page <page>:自定产品页面的可编辑版本
  • page-test <test>:产品页面测试

用法

appuploader-cli review add <version|iap|game-center|asset|custom-page|page-test> [name|id...] [flags]

参数

参数 说明
--platform string 需要新建草稿时使用的平台(默认 “IOS”)

示例

1appuploader-cli review add version
2appuploader-cli review add iap com.example.app.full
3appuploader-cli review add game-center
4appuploader-cli review add asset 84400019-…   # 先于产品页更新或 Apple Ads 广告活动通过审核
5appuploader-cli review add custom-page "Spring Sale"
6appuploader-cli review add page-test "Header test"

appuploader-cli review cancel

撤回正在 App 审核中的提交。

不指定 ID 时,选择已发给 Apple 的那个提交,从不选择未发送的草稿;有多个在 Apple 那里时,需要指定一个(见 review status)。

用法

appuploader-cli review cancel [submission-id]

示例

1appuploader-cli review cancel --yes
2appuploader-cli review cancel 6c4eccf6-… --yes

appuploader-cli review info

App 审核联系人与演示账号。

子命令:get、set

appuploader-cli review info get

查看版本的审核联系人、演示账号和备注。

用法

appuploader-cli review info get

示例

1appuploader-cli review info get

appuploader-cli review info set

设置 App 审核信息;没有提供的字段保持原值。

用法

appuploader-cli review info set [flags]

参数

参数 说明
--demo-password-env string 保存演示账号密码的环境变量
--demo-required 审核人员需要使用演示账号(–demo-required=false 表示不需要)
--demo-user string 演示账号用户名
--email string 联系人邮箱
--first-name string 联系人名字
--from string 从 review_information.yaml 读取字段(默认:metadata.dir 中的那个)
--last-name string 联系人姓氏
--notes string 给审核人员的备注
--phone string 联系人电话

示例

1DEMO_PW=… appuploader-cli review info set --first-name Ann --last-name Lee --email ann@example.com --phone "+1 555 0100" --demo-user demo --demo-password-env DEMO_PW
2appuploader-cli review info set --from ./store/review_information.yaml

appuploader-cli review remove

把内容从草稿审核提交中移除。

按 review add 的写法指定要移除的内容,或给出 review status 中的条目 ID。

已发给 Apple 的提交里的内容,要用 review cancel 撤回。

用法

appuploader-cli review remove <version|iap|asset|custom-page|page-test|item-id> [name|id...]

示例

1appuploader-cli review remove version
2appuploader-cli review remove custom-page "Spring Sale"
3appuploader-cli review remove ZDM5OWEw…   # review status 中的条目 ID

appuploader-cli review status

显示版本的状态,以及每个未完成的提交(草稿和已发给 Apple 的)及其包含的内容。

用法

appuploader-cli review status

示例

1appuploader-cli review status
2appuploader-cli review status --json

appuploader-cli review submit

关联构建,并把版本(连同草稿里的全部内容)提交给 App 审核。

关联构建,把版本加入草稿审核提交(与草稿里已有的内容放在一起),然后把这个提交发给 App 审核。已经提交过的会报告已提交,不会重复提交。

用法

appuploader-cli review submit [flags]

参数

参数 说明
--build string 构建 ID、构建号,或 latest(默认 “latest”)
--skip-iap-check 即使 App 的第一个内购不在草稿里也提交

示例

1appuploader-cli review submit
2appuploader-cli review submit --build 42

appuploader-cli testflight

TestFlight 测试组与测试员。

子命令:distribute、group、tester

appuploader-cli testflight distribute

把构建分发给测试组。

用法

appuploader-cli testflight distribute [flags]

参数

参数 说明
--build string 构建 ID、构建号,或 latest(默认 “latest”)
--group strings 测试组名称或 ID(默认:appuploader.yaml 中的 testflight.groups)

示例

1appuploader-cli testflight distribute --group "Internal QA"
2appuploader-cli testflight distribute --build 42 --group "Internal QA",Beta

appuploader-cli testflight group

测试组。

子命令:create、delete、list

appuploader-cli testflight group create

创建测试组(同名测试组已存在时直接复用)。

用法

appuploader-cli testflight group create <name>

示例

1appuploader-cli testflight group create "Internal QA"

appuploader-cli testflight group delete

删除测试组。

用法

appuploader-cli testflight group delete <group>

示例

1appuploader-cli testflight group delete "Old group" --yes

appuploader-cli testflight group list

列出测试组。

用法

appuploader-cli testflight group list

示例

1appuploader-cli testflight group list

appuploader-cli testflight tester

测试员。

子命令:invite、list、remove

appuploader-cli testflight tester invite

邀请测试员加入测试组:用一个 –email,或一个 CSV 文件。

用法

appuploader-cli testflight tester invite [flags]

参数

参数 说明
--csv string CSV 文件:每行 email,first_name,last_name
--email string 测试员邮箱
--first-name string 测试员名字
--group string 测试组名称或 ID(必填)
--last-name string 测试员姓氏

示例

1appuploader-cli testflight tester invite --group "Internal QA" --email qa@example.com
2appuploader-cli testflight tester invite --group "Internal QA" --csv testers.csv   # 每行 email,first_name,last_name

appuploader-cli testflight tester list

列出测试组的测试员。

用法

appuploader-cli testflight tester list [flags]

参数

参数 说明
--group string 测试组名称或 ID(必填)

示例

1appuploader-cli testflight tester list --group "Internal QA"

appuploader-cli testflight tester remove

从测试组移除测试员。

用法

appuploader-cli testflight tester remove <tester-id|email> [flags]

参数

参数 说明
--group string 测试组名称或 ID(必填)

示例

1appuploader-cli testflight tester remove qa@example.com --group "Internal QA"

内购、定价、隐私与 Game Center

appuploader-cli iap

App 内购买项目。

子命令:create、delete、export、get、import、list、set

appuploader-cli iap create

创建内购项目(该 ID 的项目已存在时直接复用)。

用法

appuploader-cli iap create <product-id> [flags]

参数

参数 说明
--reference-name string 内部名称(必填)
--review-note string 给 App 审核的备注
--type string CONSUMABLE | NON_CONSUMABLE | NON_RENEWING_SUBSCRIPTION(必填)

示例

1appuploader-cli iap create com.example.app.full --type NON_CONSUMABLE --reference-name "Full game"

appuploader-cli iap delete

删除内购项目(Apple 会保留它的产品 ID,不能再用)。

用法

appuploader-cli iap delete <product-id|id>

示例

1appuploader-cli iap delete com.example.app.old --yes

appuploader-cli iap export

把全部内购项目保存到商店资料目录的 in_app_purchases/ 下。

用法

appuploader-cli iap export [flags]

参数

参数 说明
--dir string 商店资料目录(默认:appuploader.yaml 中的 metadata.dir)
--include-images 同时下载审核截图和推广图片

示例

1appuploader-cli iap export --dir ./store --include-images

appuploader-cli iap get

查看一个内购项目。

用法

appuploader-cli iap get <product-id|id>

示例

1appuploader-cli iap get com.example.app.coins100

appuploader-cli iap import

从商店资料目录的 in_app_purchases/ 创建或更新内购项目(从不删除)。

读取 in_app_purchases/ 下每个项目一个的目录(见 cli-config.md);项目只会创建或更新,从不删除。项目的首次审核随下一次 review submit 一起提交:见 review add iap。

用法

appuploader-cli iap import [flags]

参数

参数 说明
--dir string 商店资料目录(默认:appuploader.yaml 中的 metadata.dir)
--include-images 同时上传审核截图和推广图片

示例

1appuploader-cli iap import --dir ./store --include-images

appuploader-cli iap list

列出 App 的内购项目。

用法

appuploader-cli iap list

示例

1appuploader-cli iap list

appuploader-cli iap set

修改内购项目的名称、审核备注、家人共享或价格。

用法

appuploader-cli iap set <product-id|id> [flags]

参数

参数 说明
--family-sharable 开启家人共享(仅限非消耗型项目;–family-sharable=false 关闭)
--price float 基准地区货币的顾客价格
--reference-name string 内部名称
--review-note string 给 App 审核的备注
--territory string –price 的基准地区,ISO 3166-1 三位字母代码(默认 “USA”)

示例

1appuploader-cli iap set com.example.app.full --price 2.99 --territory USA
2appuploader-cli iap set com.example.app.full --family-sharable

appuploader-cli pricing

App 价格与销售地区。

子命令:get、set、territories

appuploader-cli pricing get

查看 App 的价格。

用法

appuploader-cli pricing get

示例

1appuploader-cli pricing get

appuploader-cli pricing set

设置 App 的价格和/或销售地区。

Apple 的价格档位按基准地区的顾客价格选定,其他地区按 Apple 的均衡规则自动换算。设置与现状相同时不做任何改动。

用法

appuploader-cli pricing set [flags]

参数

参数 说明
--exclude strings 配合 –territories all 使用:除这些地区外全部销售
--free 把 App 设为免费
--price float 基准地区货币的顾客价格(默认:appuploader.yaml 中的 pricing.customer_price)
--territories string 在哪里销售:all,或 USA,GBR,JPN 这样的列表(默认:appuploader.yaml 中的 pricing.territories)
--territory string –price 的基准地区(默认:pricing.base_territory,否则 USA)

示例

1appuploader-cli pricing set --free
2appuploader-cli pricing set --price 4.99 --territory USA
3appuploader-cli pricing set --territories all --exclude CHN
4appuploader-cli pricing set   # 取 appuploader.yaml 中的 pricing 段

appuploader-cli pricing territories

列出 App 可以销售的地区和当前在售的地区。

用法

appuploader-cli pricing territories

示例

1appuploader-cli pricing territories

appuploader-cli privacy

App 隐私标签(仅限 Apple ID 账号)。

子命令:catalog、export、import、publish、status、unpublish

appuploader-cli privacy catalog

列出隐私标签可以声明的数据类型和用途。

用法

appuploader-cli privacy catalog

示例

1appuploader-cli privacy catalog

appuploader-cli privacy export

把 App 的隐私标签保存为 YAML 文件。

用法

appuploader-cli privacy export [flags]

参数

参数 说明
--out string 要写入的文件(默认:appuploader.yaml 中的 privacy.file,否则 stdout)

示例

1appuploader-cli privacy export --out privacy.yaml

appuploader-cli privacy import

从 YAML 文件应用隐私标签(文件中要求发布时同时发布)。

用法

appuploader-cli privacy import [privacy.yaml]

示例

1appuploader-cli privacy import privacy.yaml

appuploader-cli privacy publish

发布隐私标签。

用法

appuploader-cli privacy publish

示例

1appuploader-cli privacy publish

appuploader-cli privacy status

显示隐私标签是否已发布。

用法

appuploader-cli privacy status

示例

1appuploader-cli privacy status

appuploader-cli privacy unpublish

取消发布隐私标签。

用法

appuploader-cli privacy unpublish

示例

1appuploader-cli privacy unpublish --yes

appuploader-cli game-center

Game Center 与排行榜。

子命令:status、sync

appuploader-cli game-center status

显示 Game Center 是否开启,并列出 App 的排行榜。

用法

appuploader-cli game-center status

示例

1appuploader-cli game-center status

appuploader-cli game-center sync

开启 Game Center,并创建或更新 appuploader.yaml 中列出的排行榜(从不删除)。

用法

appuploader-cli game-center sync [flags]

参数

参数 说明
--dry-run 只报告会改什么,不实际修改

示例

1appuploader-cli game-center sync --dry-run
2appuploader-cli game-center sync

退出码

加 --json 时,失败结果里带有稳定的 code 和 exit_code。retryable 为 true 的错误可以退避后重试。

exit_code code 说明
0 ok 成功
1 internal_error 未预期的失败
2 bad_input 用法或参数错误
3 not_found 找不到
4 conflict 已存在,或当前状态不允许
5 capability_not_supported 这种账号做不了,换一个 --account
6 forbidden 等 program_inactive / not_enrolled / unpaid_account
7 agreement_required 需要先接受 Apple 协议
8 rate_limited 请求过多,稍后重试
9 upstream_error 等 Apple 侧错误、超时或不可达,可重试
10 needs_2fa 需要双重验证码
11 bad_credentials 等 bad_api_key / verify_refused / account_locked
12 session_expired 会话过期,重新 login
13 license_required 需要 appuploader 授权
14 wait_timeout 等待 Apple 处理超时,可重试
15 team_required / account_ambiguous 需要指定 --team 或 --account
130 interrupted 被中断

环境变量

下面的环境变量与对应参数等价,适合在 CI 和脚本中使用。

环境变量 说明
APPUPLOADER_ACCOUNT / APPUPLOADER_TEAM_ID 选择账号 / 团队
APPUPLOADER_APPLE_ID / APPUPLOADER_PASSWORD Apple ID 登录;推荐把 App 专用密码放在 APPUPLOADER_PASSWORD
APPUPLOADER_API_KEY_ID / APPUPLOADER_API_ISSUER_ID API Key 的 Key ID 和 Issuer ID
APPUPLOADER_API_KEY_PATH / APPUPLOADER_API_KEY_P8 / APPUPLOADER_API_KEY_FILE .p8 文件路径 / .p8 内容 / JSON 格式的 Key 文件
APPUPLOADER_2FA_CODE 登录时的双重验证码
APPUPLOADER_P12_PASSWORD .p12 密码
APPUPLOADER_CONFIG appuploader.yaml 的路径
APPUPLOADER_DATA_DIR 数据目录,默认 ~/appuploader-data-v6