appuploader-cli 命令手册
本手册列出 appuploader-cli 的全部命令,包括每条命令的用途、用法、全部参数和示例,内容由程序的命令定义生成,与当前版本一致。第一次使用请先看入门教程:appuploader 命令行教程。
在终端里随时可以用 appuploader-cli <命令> --help 查看同样的说明。
目录
- 全局参数
- 账号与团队:login · logout · account · whoami · team · api-key · agreement
- 项目与发布流水线:init · doctor · release · skill · exit-codes
- 签名:Bundle ID、证书、设备与描述文件:bundle · cert · device · profile · signing
- App、版本与构建:app · version · build
- 商店资料、截图与素材:metadata · screenshot · preview · asset · custom-page · page-test
- 审核与 TestFlight:review · testflight
- 内购、定价、隐私与 Game Center:iap · pricing · privacy · game-center
- 退出码 · 环境变量
全局参数
所有命令都支持下面这些参数。
| 参数 | 说明 |
|---|---|
--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
已登录的账号。
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
开发者团队。
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 账号)。
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_ |
示例
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 账号)。
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 |
保存 |
--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 |
保存 |
示例
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
已注册的测试设备。
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 截图。
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 预览视频。
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
从
视频命名为 <DISPLAY_TYPE>_
用法
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/
用法
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 审核联系人与演示账号。
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
测试组。
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
测试员。
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 与排行榜。
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 |
- 苹果应用商店上架全流程详解,从账号注册到审核发布的完整攻略(含跨平台使用 开心上架 实战)
- HBuilder 上架 iOS 应用全流程指南:从云打包到开心上架(Appuploader)上传的跨平台发布实践
- iOS 上架 uni-app 流程全解析,从打包到发布的完整实践
- App 上架苹果商店全流程详解 从开发者账号申请到开心上架(Appuploader)跨平台免 Mac 上传实战指南
- App 上架苹果应用商店全流程实战,开发者账号、签名证书、IPA 上传与开心上架(Appuploader)跨平台免 Mac 上架指南
- Fastlane 结合 开心上架(Appuploader)命令行版本实现跨平台上传发布 iOS App 免 Mac 自动化上架实战全解析
- App 上架需要什么?从开发者账号到开心上架(Appuploader)免 Mac 上传的完整流程指南
- App 怎么上架 iOS?从准备资料到开心上架(Appuploader)免 Mac 上传的完整实战流程指南
- iOS 发布 App 全流程指南,从签名打包到开心上架(Appuploader)跨平台免 Mac 上传实战
- iOS 上架费用全解析 开发者账号、App 审核、工具使用与开心上架(Appuploader)免 Mac 成本优化指南
- iOS 开发流程全解析,从项目创建、打包签名到开心上架(Appuploader)跨平台发布的完整指南
- iOS 上架要求全解析,App Store 审核标准、开发者准备事项与开心上架(Appuploader)跨平台免 Mac 实战指南
- 苹果商店上架 App 流程全解析,从开发者注册到开心上架(Appuploader)免 Mac 上传的完整实战指南
- iOS 跨平台开发实战指南,从框架选择到开心上架(Appuploader)跨系统免 Mac 发布全流程解析
- 游戏上架 App Store 需要什么?从开发者资质到开心上架(Appuploader)免 Mac 上传的全流程指南
- 苹果 iOS 应用上架全流程详解,从开发者注册到开心上架(Appuploader)免 Mac 上传的高效实践指南
- iOS 上架工具全解析,从 Xcode 到 开心上架(Appuploader)跨平台命令行免 Mac 上传指南
- Windows 如何上架 iOS 应用?跨平台开发者完整实战指南
- 没有 Mac,如何上架 iOS App?跨平台开发者的完整上架实战指南
- iOS IPA 上传工具全面解析,从 Transporter 到开心上架(Appuploader)命令行的高效上架实践
- 没有 Mac 也能完成 iOS 上架?跨平台开发者的完整实践与工具组合方案
- 怎么在 Windows 上架 iOS App?跨平台开发者完整实战流程解析
- App 上架服务详解,独立开发者与团队如何高效完成 iOS 发布流程
- 苹果应用商店上架全流程 从证书体系到 IPA 上传的跨平台方法
- 上架 iOS App 全流程 从准备、打包到上传审核的完整开发者指南
- iOS 应用上架全流程实战解析,从证书到审核的完整开发者指南
- iOS 苹果上架流程深度解析,开发团队的技术架构、工具链与发布策略复盘
- iOS 上架需要什么东西?一次从准备清单到实操流程的完整技术拆解
- 苹果应用商店上架全流程复盘,一次真实项目从构建、上传到审核通过的经验总结
- iOS 上架 App Store 全流程技术解读 应用构建、签名体系与发布通道的标准化方案
- 游戏上架 App Store 的技术流程解析 从构建到审核的全流程指南
- iOS 上架 4.3 审核条款深度解析,如何避免“重复应用”与“低价值内容”导致的拒审?
- iOS 商店上架全流程解析 从工程准备到审核通过的系统化实践指南
- WebApp 上架 iOS 的可行性分析,审查机制、技术载体与工程落地方案的全流程说明
- iOS H5 上架的完整解析,从产品形态判断到技术封装与审核策略
- iOS 应用上架的工程实践复盘,从构建交付到审核通过的全流程拆解
- iOS App 上架审核全流程深度解析,规则理解、风险管理与团队协同策略
- 没有 Mac 怎么上架,跨系统团队的 iOS 应用发布解决方案与工程实践
- iOS 上架 H5 应用流程,从页面到原生容器的交付路径与审核合规要点
- Transporter 在 iOS 上架流程中的角色变化 本地上传工具的定位、局限与多工具协作趋势分析
- 从混乱到可控,构建面向团队的 iOS 证书管理体系实践记录
- 以 uni-app 为核心的 iOS 上架流程实践, 从构建到最终提交的完整路径
- 在 CICD 中实践 Fastlane + Appuploader 命令行,构建可复制的 iOS 自动化发布流程
- 从 HBuilder 到 App Store,uni-app 与 HBuilder 项目的 iOS 上架流程实战解析
- IOScer 证书体系的实战经验,从生成、协作到验证的完整工作流
- iOS 应用上架流程的工程化拆解 从签名体系到提交审核的全过程管控
- 没有 Mac 怎么上架 iOS 应用 跨平台团队的可行交付方案分析
- H5 项目如何上架 iOS,从容器封装到审核提交流程的全链路设计
- 从构建到 TestFlight,iOS 上架 TF 的流程复盘与团队协作实践
- 重新理解 iOS 的 Bundle Id 从创建、管理到协作的工程策略
- Transporter 的局限与替代路径,iOS 上传流程在多平台团队中的演进
- 当 altool 退出历史舞台,iOS 上传链路的演变与替代方案的工程实践
- 被 4.3 拒绝的那些上架,从机制误判到工程治理的完整分析
- 从需求到上架,现代 iOS 开发流程的工程化方法论
- Assets.car 的构建逻辑与图标资源管理,从流程混乱到可控的工程实践
- 苹果应用商店上架的真实流程,一个开发者的完整工程记录
- iOS 上架需要哪些材料?一份面向工程团队的完整清单与实操说明
- 怎样方便管理 iOS 证书,从个人混乱到团队可控的实践方法
- uni-app 上架 iOS 的完整实践,从跨端开发到稳定提交的工程路径
- 没有 Mac,如何在 Windows 上架 iOS 应用?一套可落地的工程方案
- 上架 iOS 应用到底在做什么?从准备工作到上架的流程
- Xcode在 iOS 工程与上架流程中的实际作用
- IOScer 证书到底是什么和怎么使用的完整说明
- Fastlane + Appuploader 的工程组合,自动化发布中的分工
- iOS 项目中常被忽略的 Bundle ID 管理问题
- Windows 上架 iOS 应用这件事,我是怎么一步步跑通的
- uni-app 上架 iOS,并不是卡在技术,而是卡在流程理解
- 把 H5 应用上架 App Store,并不是套个壳这么简单
- 苹果 iOS 开发真正复杂的不是写代码这方面,是证书、构建、上架
- iOS 应用发布流程中常被忽视的关键环节
- iOS 项目中证书管理常见的协作问题
- App Store 上架流程,结合多工具协作
- uni-app 的 iOS 打包与上架流程,多工具协作
- fastlane 结合 appuploader 命令行实现跨平台上传发布 iOS App
- 网页在线上传 IPA,当发布不再依赖本地环境
- 没有 Mac 怎么上架 iOS 应用,在windows上架的注意事项
- 用 HBuilder 上架 iOS 应用时如何管理Bundle ID、证书与描述文件
- 苹果 App 上架流程,结合 Xcode、CI 等常见工具
- iOS上架被卡在 4.3条款 怎么办?分析应用被判定为相似应用的常见原因
- iOS 证书如何创建,从能生成到能长期使用
- APP 上架苹果 App Store 被拒,并不总是产品问题
- 分析 iOS 描述文件创建与管理中常见的问题
- 如何在 Windows 上上架 iOS App,分析上架流程哪些是不用mac的
- AppStoreInfo.plist 在苹果上架流程中的生成方式和作用
- uni-app 项目在 iOS 上架过程中常见的问题与应对方式
- iOS 上架需要哪些准备,围绕证书、描述文件和上传方式等关键环节展开分析
- Xcode 在 iOS 上架中的定位,多工具组合
- 苹果应用商店上架App流程,签名证书、IPA 校验、上传
- iOS 上架费用解析,哪些成本可以通过流程优化降低。
- fastlane 与 Appuploader 命令行协作的发布方式
- 使用 HBuilder 上架 iOS 应用时常见的问题与应对方式
- App Store 上架流程中常见的关键问题
- iOS 开发中证书创建与管理中的常见问题
- 苹果商店 App 上架要求,探讨如何通过系统审核
- IOScer 开发环境证书包括哪些,证书、描述文件与 App ID 的协同管理实践
- Windows 环境下有哪些可用的 iOS 上架工具, iOS 上架工具的使用方式
- iOS 自动化上架的工具组合,在多平台环境中实现稳定发布
- 在 Windows 上使用开心上架(Appuploader)在 Windows 环境下创建与管理 iOS 证书
- 如何将 iOS 应用的 IPA 文件安装到手机进行测试
- App Store 上架截图批量上传,提高上架流程的稳定性
- 没有 Mac 如何在 Windows 上创建 iOS 应用描述文件
- 如何使用 AppUploader 提交上传 iOS 应用
- fastlane 构建与 AppUploader 命令行在 iOS 自动化发布流程中的组合使用方式
- HBuilderX 项目上架 iOS app上架 App Store 的关键流程
- 完整的苹果上架 app 流程,一次从账号可用到 IPA提交 的完整实践
- iOS 上架需要哪些准备,账号、Bundle ID、证书、描述文件、安装测试及上传
- 在 iOS 开发、测试与上架过程中 如何做证书管理
- 在没有 Mac 的情况下完成 iOS 应用上架 App Store
- uni-app 项目在 iOS 上架过程中常见的问题,证书配置、描述文件、IPA 上传
- 了解 Xcode 在 iOS 开发中的作用和功能有哪些
- iOS 上架费用到底花在哪?上架过程中涉及的各类费用来源
- iOS 描述文件制作过程,从 Bundle ID、证书、设备到描述文件生成后的验证
- Android和IOS 移动应用App图标生成与使用 Assets.car生成
- H5 项目上架 iOS中需要注意什么,证书与描述文件管理、IPA 打包、安装测试
- iOS APP 开发,从项目创建、证书与描述文件配置、安装测试和IPA 上传
- 在 Linux 环境通过命令行上传 IPA 到 App Store,iOS自动化构建与发布
- 无需钥匙串快速创建 iOS 开发 / 发布证书 P12 CSR
- 在 Windows、Linux 与 CI 环境下命令行上传 IPA 到 App Store
- 如何避免因设备信息被拒审? 从 IPA 构建、描述文件配置、Info.plist等入手
- 查看 mobileprovision 内容,判断描述文件是否符合当前应用的签名与发布要求
- 在 iOS 上架中如何批量方便快捷管理 Bundle ID
- 不用 Xcode 上架 iOS,拆分流程多工具协作完成 iOS 应用的发布准备与提交流程
- 上传 IPA 时,Mac 设备信息是怎么被带上的?
- 中小团队发布,跨平台 iOS 上架,证书、描述文件创建管理,测试分发一体化方案
- 没有 Mac 用户如何上架 App Store,IPA生成、证书与描述文件管理、跨平台上传
- app 上架过程,安装包准备、证书与描述文件管理、安装测试、上传
- 生成 iOS 开发证书,创建方式与证书管理流程
- mobileprovision 描述文件内容查看,查看 Bundle ID、证书指纹等来定位安装与签名问题
- 为什么开发者不该被 Mac 绑定?构建解耦、证书集中管理、跨平台上传与统一测试分发
- ios上架 App 流程,证书生成、从描述文件创建、打包、安装验证到上传
- Fastlane 结合 AppUploader 来实现 CI 集成自动化上架
- App Store 审核被拒?从日志到重新提交的完整处理方式
- iOS上架工具怎么选?结合 AppUploader(开心上架)、Fastlane 与 Xcode
- 告别 Xcode 和钥匙串,在 Windows 上用 开心上架 生成 iOS 证书与描述文件的流程
- iOS 应用辅助上架,AppUploader(开心上架)用于证书生成、描述文件创建与Xcode配合
- iOS上架工具,AppUploader(开心上架)用于证书生成、描述文件管理Xcode用于应用构建
- iOS APP上架工具,在没有 Mac 的环境中发布苹果应用
- App Store软件上架流程,把打包、签名和上传拆开执行,AppUploader(开心上架)/Xcode
- iOS 开发与应用发布的流程,从代码到应用上传审核
- 在 Linux 上通过命令行上架 iOS APP,Fastlane + AppUploader(开心上架)
- Upload iOS Apps via Command Line on Linux: Fastlane + AppUploader (Happy Uploading)
- 上传 IPA 被拒却没有明确原因?通过描述文件、证书、Bundle ID来定位问题
- What are the iOS Developer Tools? How to Use Xcode, AppUploader (Happy Upload), and Fastlane
- iOS 证书无法跨电脑使用?签名迁移方法一文讲透
- Windows 上传 IPA 到 App Store 的步骤讲解
- iOS mobileprovision Profile Management: Creation, Download, and Content Viewing
- 应用 Bundle Id 管理,如何查看和设置Bundle ID
- IPA Upload Rejected Without Clear Reason? Troubleshoot via Provisioning Profile, Certificate, and Bundle ID
- 2026 iOS 上架新趋势 iOS 发布流程模块化
- iOS Certificates Not Working Across Computers? A Complete Guide to Signing Migration
- 2026 iOS 证书管理,告别钥匙串依赖,构建可复制的签名环境
- ITMS-90704 图标错误排查记录,从 IPA 内部开始定位
- Steps to Upload IPA to App Store from Windows
- App Bundle ID Management: How to View and Set Bundle ID
- Flutter 开发工具有哪些 跨平台项目开发与上架实操指南
- iOS 跨平台开发,代码编写和应用上架的完整方案与工具组合
- 2026 iOS Release New Trends: Modularization of iOS Publishing Process
- 编译报错描述文件与证书不匹配 问题排查及修复方案
- 2026 iOS Certificate Management: Say Goodbye to Keychain Dependencies and Build a Reproducible Signing Environment
- ITMS-90704 Icon Error Troubleshooting: Starting from Inside the IPA
- React Native 上架 App Store:项目运行与审核构建的流程
- iOS 上架时报错 “Metadata validation failed Deprecated Transporter usage.” 怎么处理
- Windows 下怎么生成 AppStoreInfo.plist?不依赖 Xcode 的方法
- Mac 上生成 AppStoreInfo.plist 文件,App Store 上架
- Linux 上生成 AppStoreInfo.plist,App Store 上架 iOS
- 不使用 Xcode 上传 IPA 的方法 教你在 Windows 上自动上传 IPA 到 App Store
- Linux 自动上传 App Store Connect:把 IPA 上传流程接进CI工作流
- 不用 Mac 也可以 Windows下管理iOS描述文件的非Xcode完整指南
- uni-app 上架 iOS 的完整流程(无需依赖 Mac)
- Jenkins 自动上传 IPA 到 App Store 把发布步骤融入 CI/CD
- ITMS-90035 错误怎么解决:从签名链路排查到 IPA 重新生成
- Bundle ID 修改后为什么无法上传?原因是旧配置残留
- Flutter 如何自动上传 可以 IPA 把构建和上传分开处理
- React Native on the App Store: Project Running and Review Build Process
- 没有 Mac 怎么上架 App Store?跨平台工具链的方案与操作记录
- Windows 制作 iOS 证书方案 跨平台工具
- iOS 描述文件创建与管理 类型选择到设备绑定流程
- App Store 截图批量上传方法 避免逐张手动操作的几种方式
- What Flutter Development Tools Are Available? A Practical Guide to Cross-Platform Project Development and Publishing
- 不使用 Xcode 上传 IPA 到 App Store 的几种方式 Transporter 和 跨平台工具
- Complete Solution and Toolchain for iOS Cross-Platform Development: Coding and App Store Submission
- App Store 软件上架完整流程 证书、描述文件、发布的 Windows 操作指南
- iOS 原生开发中的证书管理与 IPA 上传 从 Xcode 到跨平台工具的工作方式
- How to handle the error "Metadata validation failed Deprecated Transporter usage." when submitting to iOS App Store
- 没有 Mac 如何生成 iOS 描述文件 证书和 Provisioning Profile
- How to generate AppStoreInfo.plist on Windows? A method independent of Xcode
- App Store 因设备信息被拒审?隐私政策修改与重新提交流程
- Generate AppStoreInfo.plist on Mac for App Store Submission
- 无 Mac 上架 iOS 的完整流程 从打包到发布的跨平台方案
- Generate AppStoreInfo.plist on Linux and Submit iOS App to App Store
- How to Upload IPA Without Xcode: Automatically Upload IPA to App Store on Windows
- React Native 在 Linux 上上传 IPA 到 App Store 的完整方案
- Jenkins 集成 iOS IPA 自动上传 使用 Appuploader 命令行实现 CI/CD 发布
- Automated IPA Upload to App Store Connect from Linux: Integrating Upload into CI Workflow
- App Store 构建版本上传后不显示?常见原因排查与解决方法
- Manage iOS Provisioning Profiles on Windows Without a Mac: A Complete Non-Xcode Guide
- iOS 证书管理最佳实践 从创建到续期的完整指南
- 苹果开发者账号注册教程 个人与公司账号的区别和申请流程
- 苹果上架工具怎么选 不用 Mac 上架 App Store 的几种方案
- IPA 上传提示 Invalid Signature?原因排查与解决方法
- iOS 上架工具 Xcode、Transporter、Appuploader
- 用 Appuploader 上架 iOS 应用到 App Store,证书制作、上传、提审等操作
- iOS App 上架 App Store 完整流程
- Complete Guide to Publishing uni-app on iOS (No Mac Required)
- iOS 应用签名方法详解:从证书类型到跨平台管理方案
- Jenkins Automatically Upload IPA to App Store: Integrate Release Steps into CI/CD
- iOS应用上架指南,Apple Developer 账号注册、打包ipa等
- How to Solve ITMS-90035 Error: From Signature Chain Troubleshooting to IPA Regeneration
- iOS上架避坑指南 证书、打包到提审的常见问题与解决方法
- APP上架必备知识与流程详解 证书类型、描述文件选择
- Why Upload Fails After Changing Bundle ID? Old Configuration Residue
- How to Automatically Upload IPA in Flutter and Separate Build from Upload
- iOS App分发教程 App Store、TestFlight 与 Ad Hoc 的配置与上传方法
- 公司名义申请苹果开发者账号要多久?上架需要哪些资料和时间?
- How to Publish to App Store Without a Mac? Cross-platform Toolchain Solutions and Operation Log
- App Store 审核被拒的常见原因,截图规范、权限说明的避坑要点
- APP上架:国内应用商店汇总及特点介绍,安卓渠道分发要点解析
- Creating iOS Certificates on Windows: Cross-Platform Tools and Workflow Comparison
- 详细解析,iOS 应用上架 App Store 的完整流程与指南
- iOS Provisioning Profile Creation and Management: From Type Selection to Device Binding
- iOS 设备 UDID 获取教程,几种查询方法与测试设备添加实操
- App Store Screenshot Batch Upload Methods: Several Ways to Avoid Manual Upload One by One
- 多个 App 可以使用同一个 iOS 证书吗?共用规则与描述文件配置
- Upload IPA to App Store Without Xcode: Transporter and Cross-Platform Tools
- 开心上架 Appuploader 登录教程 网页登录 App 登录与 API 密钥三种方式
- App Store 应用管理功能
- Bundle ID 注册与管理 App ID 创建指南 命名规则 权限开关与删除注意事项
- iOS 证书创建与管理 类型限制 p12 密码与云备份实操
- appuploader-cli 命令行上传 IPA 到 App Store Connect upload CI 集成
- Complete App Store Submission Guide: Certificates, Provisioning Profiles, and Windows Publishing
- Certificate Management and IPA Upload in iOS Native Development: From Xcode to Cross-Platform Tools
- How to Generate iOS Provisioning Profiles and Certificates without a Mac: A Complete Guide for Windows Users
- 测试设备注册与管理 USB 连接与扫码获取 UDID 的两种方式
- 无需登录也能提交 App Store 文件查看与提交功能的实操
- Apple 账号管理指南 团队 会员状态与授权激活的实操
- iOS 描述文件管理,新建、重建、清理无效的流程
- App Store Rejected Due to Device Information? A Complete Guide to Updating Privacy Policy and Resubmitting
- Complete Process of Publishing iOS Without Mac: Cross-Platform Solutions from Packaging to Release
- App Store 上传 IPA 自动化,.p8 密钥认证与 CI/CD 接入实战
- Complete Solution for Uploading IPA to App Store on Linux with React Native
- Jenkins Integration for iOS IPA Auto-Upload: Using Appuploader CLI for CI/CD Releases
- App Store build version not showing after upload? Common causes and solutions
- iOS 推送怎么配置,APNs 推送证书、设备库与群发
- 申请 iOS 推送证书并配置 APNs 群发推送教程
- App Store 多语言文案与截图批量管理(含 AI 翻译)教程
- A Complete Guide to iOS Certificate Management: From Creation to Renewal
- IPA Upload Error: Invalid Signature? Cause Analysis and Troubleshooting Methods
- iOS App Publishing Tools: Xcode, Transporter, Appuploader
- appuploader-cli 接入 CI/CD 自动上传 IPA 教程,upload 与 info 命令
- Apple Developer Account Registration Tutorial: Differences Between Individual and Company Accounts and Application Process
- How to Choose Apple Upload Tools: Several Ways to Submit to App Store Without a Mac
- Complete Step-by-Step Guide to Publishing an iOS App to the App Store with Appuploader: From Certificates to Submission
- Complete Process of Publishing an iOS App to the App Store
- Detailed Explanation of iOS App Signing Methods: From Certificate Types to Cross-Platform Management Solutions
- iOS App Submission Guide, Apple Developer Account Registration, IPA Packaging, etc.
- Windows 上无需 Xcode 生成 iOS 签名证书和描述文件教程
- 扫码注册测试设备 + 无线安装 IPA 到 iPhone 教程
- iOS App Submission Pitfalls: Common Issues and Solutions for Certificates, Packaging, and Submission Review
- Essential Knowledge and Process for App Publishing: Certificate Types, Provisioning Profiles, and Submission
- iOS App Distribution Tutorial: App Store, TestFlight, and Ad Hoc Configuration and Upload Methods
- How Long Does It Take to Apply for an Apple Developer Account as a Company? Materials and Time Needed for App Launch
- Common Reasons for App Store Review Rejection: Screenshot Specs and Permission Description Pitfalls
- App Publishing: A Comprehensive Overview of Domestic Android App Stores and Their Features, with Key Points for Channel Distribution
- Detailed Analysis: Complete Guide to Publishing iOS Apps on the App Store
- How to Get iOS Device UDID: A Complete Guide to Query Methods and Adding Test Devices
- Can Multiple Apps Use the Same iOS Certificate? Shared Rules and Provisioning Profile Configuration
- appuploader-cli 使用教程:在 Windows 上用命令行把 IPA 上传到 App Store
- appuploader-cli 接入 CI/CD 自动上传 IPA 教程
- Windows / Linux / Mac 上怎么生成 AppStoreInfo.plist,不装 Xcode 也能拿到上架用的资源描述文件
- Appuploader (Happy Listing) Login Tutorial: Web Login, App Login, and API Key Methods
- App Store App Management Features
- 2026 年 iTMSTransporter Windows 上传发布 IPA 教程
- Windows / Linux / Mac 上不用 Xcode 把 IPA 上传到 App Store,upload 命令详解
- Bundle ID Registration and Management: App ID Creation Guide, Naming Rules, Capability Toggles, and Deletion Notes
- iOS Certificate Creation and Management: Type and Quantity Limits, p12 Protection Password, Cloud Backup Sync, Revocation Impact, and Notes
- AppStoreInfo.plist 是什么?怎么用、怎么生成(Windows / Linux 也能生成)
- appuploader-cli Command-Line Guide: Upload IPA to App Store Connect and Integrate with CI/CD Pipelines
- Test Device Registration and Management: Two Ways to Obtain UDID via USB Connection or QR Code Scan
- 没有 Mac 也能做完整 iOS 发布流程,证书、上传、装机在 Windows 上完成
- No-Login File Viewing & App Store Submission: A Practical Guide
- Apple Account Management Guide: Practical Operations for Team, Membership Status, and License Activation
- iOS Provisioning Profile Management: Create, Regenerate, and Clean Invalid Profiles
- App Store IPA Upload Automation: .p8 Key Auth and CI/CD Integration in Practice
- 开心上架是什么,一站式 Apple 开发者工作台总览
- 面向团队与外包公司,iOS 多账号协作 + CI/CD 自动化发布方
- How to Configure iOS Push Notifications: APNs Push Certificates, Device Library, and Bulk Sending
- App 专用密码是什么,去哪里获取?
- Guide to Applying for an iOS Push Certificate and Configuring APNs Bulk Push
- App Store Multi-Language Metadata and Screenshot Batch Management (with AI Translation) Tutorial
- App Store Connect API 密钥是什么,为什么推荐用它登录?
- appuploader-cli CI/CD Auto IPA Upload Tutorial: the upload and info Commands
- How to Generate iOS Signing Certificates and Provisioning Profiles on Windows Without Xcode
- 证书/描述文件失效或过期了怎么办?重新签发与重建的完整操作
- Tutorial: Register Test Devices by QR Code + Install IPA Wirelessly to iPhone
- appuploader-cli Tutorial: Uploading an IPA to the App Store from the Command Line on Windows
- 没加入付费开发者计划的免费 Apple ID 能做什么?
- 手上有好几个 Apple 开发者账号,怎么统一管理?一键切换的多账号的方案
- What Can a Free Apple ID Do Without Joining the Paid Developer Program?
- Managing Multiple Apple Developer Accounts: A One-Click Switching Solution
- 没有 Mac 电脑能把 App 上架到 App Store 吗?Windows 提交 IPA 的方法
- appuploader-cli CI/CD Integration: Auto-Uploading IPA Guide
- 避免 Apple ID 登录总弹二次验证,三种登录方式的验证差异
- How to Generate AppStoreInfo.plist on Windows / Linux / Mac — Get the Resource Description File for App Store Submission Without Installing Xcode
- 怎么在 Windows 上用 Adobe AIR 打包 iOS 应用并上架 App Store?
- 2026 iTMSTransporter Windows IPA Upload and Release Tutorial
- 怎么用 APICloud 云编译打包 iOS 应用并上架 App Store?
- Upload IPA to App Store Without Xcode on Windows/Linux/Mac: upload Command Explained
- Appuploader 创建 iOS 证书:开发证书、发布证书和那几个必填项详解
- iOS 上架注意事项有哪些?Appuploader 的四个阶段自查清单
- 上传IPA反馈ERROR ITMS-90189版本号重复问题
- 上传IPA后需要多久才能在构建版本中看到应用?
- iOS开发者账号(个人、公司、企业)的区别
- 苹果app无法验证其完整性错误
- iOS 打包上传Appstore报错ERROR SDK version issue
- iOS开发指南:创建苹果开发者账号、新建首个APP ID和构建应用的步骤
- ipa 上传平台
- IPA上传报错网络错误
- iOS 打包上传Appstore报错ERROR ITMS-90101
- 上传Appstore报错 ITMS-90809
- iOS 打包上传Appstore报错ERROR ITMS-90076
- 上传报错 No suitable application records were found
- ios上架提示 “图像不能包含 alpha 通道或透明度”
- 如何填写苹果应用上架过程中的隐私政策信息
- 提交上传失败,提示如下bundle ID不匹配问题
- 上传Appstore报错 ITMS-90704图标错误的问题
- iOS 打包上传Appstore报错ERROR ITMS-90161
- 多个app可以使用同一个ios证书吗?
- 苹果开发者账号注册
- TestFlight提交时出现的ITMS-90426错误
- uni-app中隐藏H5页面头部导航栏page-head的两种方式?
- Start using AppUploader (Windows version)
- Start using AppUploader (Mac version)
- Install and log in to AppUploader
- Certificate Management
- Provisioning Profile Management
- Submit and Upload
- Install and Test
- Batch Upload Screenshots
- Obtain Activation Code
- Generate App-Specific Password
- Configure Push Certificate
- File Viewing Feature
- What is a Bundle ID
- Apple Certificates Overview
- Submitting a UniApp IPA to the App Store
- APP Filing Operation Tutorial
- What to Do If Your Apple Account Is Disabled
- App Store Developer Name Change
- Uploaded IPA Not Showing Build in iTunes Connect
- Provisioning Profile and Certificate Mismatch
- Upload IPA :ERROR ITMS-90189
- How long to see app in build after uploading IPA
- iOS Dev Account (Individual, Company, Enterprise)
- App Integrity Verification Failed Error
- iOS Upload Error SDK Version Issue
- iOS Dev Guide Create Apple Dev ID and Build Steps
- IPA Upload Platform
- IPA Upload Network Error
- iOS Upload Error ITMS-90101
- App Store Upload Error ITMS-90809
- iOS Upload Error ITMS-90076
- Upload Error No Suitable Application Records Found
- iOS Image No Alpha Channel
- How to Fill Apple App Privacy Policy Info
- Upload Failed Bundle ID Mismatch
- App Store Upload Error ITMS-90704 Icon Issue
- iOS Upload Error ITMS-90161
- Can Multiple Apps Use the Same iOS Certificate
- Apple Developer Account Registration
- TestFlight Submission Error ITMS-90426
- uniapp Hide H5 Page Header (page-head) Two Methods
- 开始使用appuploder(Win版本)
- 开始使用appuploder(Mac版本)
- 安装和登录appuploader
- 证书管理
- 描述文件管理
- 提交上传
- 安装测试
- 批量上传截图
- 获取激活码
- 生成专用密码
- 配置推送证书
- 文件查看功能
- 什么是Bundle ID
- 苹果的各种证书说明
- uniapp打包的ipa上架
- APP备案操作教程
- 苹果账号被禁用怎么办?
- appstore开发者名称修改
- 上传了ipa但iTunes Connect没有构建版本问题
- 编译提示描述文件和证书不匹配
- appuploader命令行教程
- appuploader cli
- AppStoreInfo.plist生成教程
- introduce how to generate AppStoreInfo.plist
- appuploader-cli command manual