appuploader-cli command manual
This manual lists every appuploader-cli command with its purpose, usage, every flag and examples. It is generated from the tool’s command definitions and matches the current version. New to the tool? Start with the getting started guide.
In a terminal, appuploader-cli <command> --help shows the same information.
Contents
- Global flags
- Accounts and teams: login · logout · account · whoami · team · api-key · agreement
- Project and release pipeline: init · doctor · release · skill · exit-codes
- Signing: Bundle IDs, certificates, devices and profiles: bundle · cert · device · profile · signing
- Apps, versions and builds: app · version · build
- Store listing, screenshots and assets: metadata · screenshot · preview · asset · custom-page · page-test
- App Review and TestFlight: review · testflight
- In-app purchases, pricing, privacy and Game Center: iap · pricing · privacy · game-center
- Exit codes · Environment variables
Global flags
Every command accepts these flags.
| Flag | Description |
|---|---|
--account string |
saved account to use: alias, Apple ID or API key id (APPUPLOADER_ACCOUNT) |
--json |
machine-readable output: one JSON object on stdout, progress on stderr |
--project string |
path to appuploader.yaml (default: the nearest one above the working directory) |
--proxy string |
HTTP(S) proxy for this run |
-q, --quiet |
no progress output |
--team string |
developer team id (APPUPLOADER_TEAM_ID) |
-v, --verbose |
show what the tool does behind the scenes |
-y, --yes |
answer yes to confirmations (scripts must pass it for destructive commands) |
Commands that act on an app also take --app (bundle ID or App Store Connect app ID; default: app.bundle_id in appuploader.yaml) and, where a version matters, --app-version (default: release.version, else the editable version).
Accounts and teams
appuploader-cli login
Sign in with an API key or an Apple ID and keep the session.
We recommend signing in with an Apple ID and an app-specific password: it never triggers two-factor authentication and can do everything, including what Apple’s API cannot (create apps, accept agreements, set prices and privacy labels).
An App Store Connect API key needs no password or code either, but cannot do those things; a free Apple ID (–free) can manage signing only.
Passwords come from an environment variable or stdin, never from a flag. With a regular password a two-factor code is asked for on the terminal; a script passes –2fa-code, or –2fa-from-file
Usage
appuploader-cli login [flags]
Flags
| Flag | Description |
|---|---|
--2fa-code string |
two-factor verification code (APPUPLOADER_2FA_CODE) |
--2fa-from-file string |
wait for the verification code to appear in this file (deleted once read) |
--2fa-stdin |
read the verification code from stdin |
--alias string |
name for this account, usable with –account |
--api-issuer-id string |
API key issuer id (APPUPLOADER_API_ISSUER_ID) |
--api-key-file string |
App Store Connect API key as a JSON file {key_id, issuer_id, key} (APPUPLOADER_API_KEY_FILE) |
--api-key-id string |
API key id (APPUPLOADER_API_KEY_ID) |
--api-key-path string |
path to the AuthKey_*.p8 file (APPUPLOADER_API_KEY_PATH, or its content in APPUPLOADER_API_KEY_P8) |
--apple-id string |
Apple ID email (APPUPLOADER_APPLE_ID) |
--free |
the Apple ID has no paid Developer Program membership (signing only: certificates, bundle ids, profiles, devices) |
--password-env string |
environment variable that holds the password (default APPUPLOADER_PASSWORD); an app-specific password goes here too |
--password-stdin |
read the password from the first line of stdin |
--save-key |
keep the .p8 with the account so later runs need no key material |
--sms |
have the code sent by SMS instead of to trusted devices |
--voice |
have the code read out in a phone call |
Examples
1APPLE_PW='xxxx-xxxx-xxxx-xxxx' appuploader-cli login --apple-id dev@example.com --password-env APPLE_PW --alias me # app-specific password, recommended
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
Sign the selected account out (it stays listed; account remove deletes it).
Usage
appuploader-cli logout
Examples
1appuploader-cli logout --account me
appuploader-cli account
Saved accounts.
appuploader-cli account list
List the saved accounts.
Usage
appuploader-cli account list [flags]
Flags
| Flag | Description |
|---|---|
--no-check |
do not check whether each session is still signed in |
Examples
1appuploader-cli account list
2appuploader-cli account list --no-check # faster: skip the session check
appuploader-cli account remove
Delete the selected account, its session and its certificates folder.
Usage
appuploader-cli account remove
Examples
1appuploader-cli account remove --account me --yes
appuploader-cli whoami
Show which account and team the commands act as.
Usage
appuploader-cli whoami
Examples
1appuploader-cli whoami
2appuploader-cli whoami --account ci --json
appuploader-cli team
Developer teams.
appuploader-cli team list
List the teams the account belongs to.
Usage
appuploader-cli team list
Examples
1appuploader-cli team list
appuploader-cli team use
Make a team the account’s default.
Usage
appuploader-cli team use <team-id>
Examples
1appuploader-cli team use ABCDE12345
appuploader-cli api-key
App Store Connect API keys (Apple ID only).
Subcommands: create, list, revoke
appuploader-cli api-key create
Create an App Store Connect API key (Apple ID with the Admin role).
Usage
appuploader-cli api-key create [flags]
Flags
| Flag | Description |
|---|---|
--alias string |
name for the account created with –login |
--login |
also sign the new key in as an account |
--name string |
key name as shown in App Store Connect (default “appuploader-cli”) |
--out string |
write the key to this JSON file (default AuthKey_ |
Examples
1appuploader-cli api-key create --name ci --login --alias ci-key
appuploader-cli api-key list
List the team’s API keys.
Usage
appuploader-cli api-key list
Examples
1appuploader-cli api-key list
appuploader-cli api-key revoke
Revoke an API key.
Usage
appuploader-cli api-key revoke <key-id>
Examples
1appuploader-cli api-key revoke ABC123DEFG --yes
appuploader-cli agreement
Apple developer agreements (Apple ID only).
appuploader-cli agreement accept
Accept pending agreements (all of them when no id is given).
Usage
appuploader-cli agreement accept [agreement-id...]
Examples
1appuploader-cli agreement accept --yes
2appuploader-cli agreement accept 2ed0a77d-…
appuploader-cli agreement list
List the Apple agreements waiting to be accepted.
Tax and banking agreements can only be completed in App Store Connect → Business.
Usage
appuploader-cli agreement list
Examples
1appuploader-cli agreement list
Project and release pipeline
appuploader-cli init
Write a starter appuploader.yaml for the project.
The project file names the app, the version, the account and where the listing, screenshots and signing files live; every command reads it. –from-app also downloads the live listing.
Usage
appuploader-cli init [flags]
Flags
| Flag | Description |
|---|---|
--bundle-id string |
the app’s bundle id |
--dir string |
directory to write appuploader.yaml into (default “.”) |
--force |
overwrite an existing file |
--from-app |
also download the app’s current listing into the metadata folder (needs a signed-in account) |
--name string |
the app’s name |
Examples
1appuploader-cli init --bundle-id com.example.app --name "My App"
2appuploader-cli init --bundle-id com.example.app --from-app
appuploader-cli doctor
Check that the account, team, project file, package and listing are ready.
Read-only. Checks the account, team, agreements, project file, bundle id, app record, package, listing folder and licence, and says how to fix each problem.
Usage
appuploader-cli doctor [flags]
Flags
| Flag | Description |
|---|---|
--for-release release |
also check everything release will need |
Examples
1appuploader-cli doctor
2appuploader-cli doctor --for-release --json
appuploader-cli release
Run the whole pipeline from appuploader.yaml: signing → app → version → upload → metadata → submit.
Runs every step appuploader.yaml asks for, in order:
preflight → bundle → certs → profiles → app → version → upload → metadata → screenshots → custom-pages
→ build-wait → compliance → review-info → gamecenter → iap → pricing → privacy → submit → testflight
Each step is idempotent and recorded in .appuploader/release-state.json, so re-running after a failure continues where it stopped. Publishing an approved MANUAL version is never a step: run version publish.
Usage
appuploader-cli release [flags]
Flags
| Flag | Description |
|---|---|
--build string |
ship this build (id or number) instead of uploading one |
--dry-run |
change nothing; report what each step would do |
--from string |
start at this step; steps: preflight, bundle, certs, profiles, app, version, upload, metadata, screenshots, custom-pages, build-wait, compliance, review-info, gamecenter, iap, pricing, privacy, submit, testflight |
--ipa string |
package to upload (default: release.build.path) |
--no-submit |
stop before submitting for review |
--only strings |
run only these steps, comma separated |
--p12-password-env string |
environment variable that holds the .p12 password (default APPUPLOADER_P12_PASSWORD) |
--restart |
start from the first step instead of continuing after the last failure |
--skip strings |
steps to skip, comma separated |
--to string |
stop after this step |
Examples
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
Generate the skill file for AI agents.
Writes a Markdown skill generated from this binary’s commands: the rules an agent must follow (JSON output, secrets, what it must never do on its own), exit codes and retry policy, recipes and the full command index.
--format claude: SKILL.md with front matter for Claude Code skills (default)--format agents: plain Markdown for AGENTS.md, CLAUDE.md or other agents’ instruction files--install user: writes ~/.claude/skills/appuploader-cli/SKILL.md--install project: writes ./.claude/skills/appuploader-cli/SKILL.md
Usage
appuploader-cli skill [flags]
Flags
| Flag | Description |
|---|---|
--format string |
claude (SKILL.md with front matter) or agents (plain Markdown) (default “claude”) |
--install string |
write it where Claude Code finds skills: user or project |
--out string |
write it to this file instead of stdout |
Examples
1appuploader-cli skill # print the skill to 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
Print the exit codes and error codes this tool uses.
Usage
appuploader-cli exit-codes
Examples
1appuploader-cli exit-codes
Signing: Bundle IDs, certificates, devices and profiles
appuploader-cli bundle
Bundle ids (App IDs) and their capabilities.
Subcommands: capabilities, create, delete, get, list, set
appuploader-cli bundle capabilities
List the capabilities a bundle id can have.
Usage
appuploader-cli bundle capabilities
Examples
1appuploader-cli bundle capabilities
appuploader-cli bundle create
Register a bundle id, or bring an existing one’s capabilities up to date.
Usage
appuploader-cli bundle create [identifier] [flags]
Flags
| Flag | Description |
|---|---|
--app-clip |
register an App Clip id (Apple ID accounts only) |
--cap bundle capabilities |
capability to enable: ID or ID=SETTING:OPTION (repeatable; see bundle capabilities) |
--name string |
name shown on the developer portal (default: app.name in appuploader.yaml, else the identifier) |
--parent string |
the app’s bundle id an App Clip belongs to |
--platform string |
IOS | MAC_OS | UNIVERSAL (API key accounts only) |
Examples
1appuploader-cli bundle create com.example.app --name "My App" --cap PUSH_NOTIFICATIONS,GAME_CENTER
2appuploader-cli bundle create # identifier, name and capabilities from appuploader.yaml
appuploader-cli bundle delete
Delete a bundle id.
Usage
appuploader-cli bundle delete <identifier|id>
Examples
1appuploader-cli bundle delete com.example.old --yes
appuploader-cli bundle get
Show a bundle id and its capabilities.
Usage
appuploader-cli bundle get <identifier|id>
Examples
1appuploader-cli bundle get com.example.app
appuploader-cli bundle list
List the team’s bundle ids.
Usage
appuploader-cli bundle list
Examples
1appuploader-cli bundle list
appuploader-cli bundle set
Enable (–cap) or disable (–remove) capabilities.
Usage
appuploader-cli bundle set <identifier|id> [flags]
Flags
| Flag | Description |
|---|---|
--cap stringArray |
capability to enable: ID or ID=SETTING:OPTION (repeatable) |
--remove stringArray |
capability to disable (repeatable) |
Examples
1appuploader-cli bundle set com.example.app --cap PUSH_NOTIFICATIONS --remove ICLOUD
appuploader-cli cert
Signing certificates.
Subcommands: create, download, list, revoke, types
appuploader-cli cert create
Get a usable certificate of a type: reuse one whose .p12 is at hand, else issue a new one.
The certificate’s key is generated locally and the .p12 is saved to –out. Without –new, a valid certificate of the type whose .p12 can be produced (local key or appuploader.net backup) is reused.
Usage
appuploader-cli cert create [flags]
Flags
| Flag | Description |
|---|---|
--backup |
also back the .p12 up to appuploader.net |
--min-days-left int |
issue a new one when the best existing certificate expires sooner than this (default 30) |
--new |
always issue a new certificate, even when a usable one exists |
--out string |
directory to save |
--owner-id string |
app, pass type or merchant id the certificate is for (push, Pass Type and Apple Pay types) |
--p12-password-env string |
environment variable that holds the .p12 password (default APPUPLOADER_P12_PASSWORD) |
--type cert types |
certificate type, e.g. IOS_DISTRIBUTION, IOS_DEVELOPMENT, MAC_APP_DISTRIBUTION (see cert types; default: signing.certs in appuploader.yaml) |
Examples
1P12_PW=… appuploader-cli cert create --type IOS_DISTRIBUTION --out ./signing --p12-password-env P12_PW
2appuploader-cli cert create --type IOS_DISTRIBUTION --new # issue one even if a usable one exists
appuploader-cli cert download
Save a certificate’s .p12 (from the local key, else the appuploader.net backup).
Usage
appuploader-cli cert download <cert-id> [flags]
Flags
| Flag | Description |
|---|---|
--out string |
directory to save |
Examples
1appuploader-cli cert download 7ABC123DEF --out ./signing
appuploader-cli cert list
List the team’s certificates.
Usage
appuploader-cli cert list [flags]
Flags
| Flag | Description |
|---|---|
--type string |
only this type, e.g. IOS_DISTRIBUTION |
--valid |
hide expired and revoked certificates |
Examples
1appuploader-cli cert list --type IOS_DISTRIBUTION --valid
appuploader-cli cert revoke
Revoke a certificate and delete its local key.
Usage
appuploader-cli cert revoke <cert-id>
Examples
1appuploader-cli cert revoke 7ABC123DEF --yes
appuploader-cli cert types
List the certificate types this account can issue.
Usage
appuploader-cli cert types
Examples
1appuploader-cli cert types
appuploader-cli device
Registered test devices.
Subcommands: add, import, list, set
appuploader-cli device add
Register a device (an already registered UDID is reported, not an error).
Usage
appuploader-cli device add <udid> [flags]
Flags
| Flag | Description |
|---|---|
--name string |
device name (required) |
--platform string |
IOS | MAC_OS | TV_OS | … (default “IOS”) |
Examples
1appuploader-cli device add 00008110-000A1B2C3D4E5F6 --name "QA iPhone"
appuploader-cli device import
Register devices from a devices.txt (TSV) or .deviceids file.
Usage
appuploader-cli device import <file>
Examples
1appuploader-cli device import devices.txt
appuploader-cli device list
List registered devices.
Usage
appuploader-cli device list [flags]
Flags
| Flag | Description |
|---|---|
--enabled |
hide disabled devices |
--platform string |
only this platform: IOS, MAC_OS, … |
Examples
1appuploader-cli device list --enabled
appuploader-cli device set
Rename, enable or disable a device.
Usage
appuploader-cli device set <device-id> [flags]
Flags
| Flag | Description |
|---|---|
--enabled |
–enabled=false disables the device, –enabled enables it (default true) |
--name string |
new name |
Examples
1appuploader-cli device set ABCD1234 --name "QA iPhone 2"
2appuploader-cli device set ABCD1234 --enabled=false
appuploader-cli profile
Provisioning profiles.
Subcommands: clean, create, delete, download, list
appuploader-cli profile clean
Delete expired and/or invalid profiles.
Usage
appuploader-cli profile clean [flags]
Flags
| Flag | Description |
|---|---|
--dry-run |
only list what would be deleted |
--expired |
delete expired profiles |
--invalid |
delete invalid profiles |
--prefix string |
only profiles whose name starts with this |
Examples
1appuploader-cli profile clean --expired --invalid --dry-run
appuploader-cli profile create
Get a working profile of this name: reuse it, rebuild it when stale, or create it.
Picks every valid certificate of the right kind and (for development and ad-hoc profiles) the devices asked for, creates the profile or rebuilds it when its certificates or devices have changed, and saves the file to –out.
Usage
appuploader-cli profile create [name] [flags]
Flags
| Flag | Description |
|---|---|
--all-devices |
include every enabled device (development and ad-hoc profiles) |
--bundle-id string |
bundle id (default: app.bundle_id in appuploader.yaml) |
--cert stringArray |
certificate id to include (repeatable; default: every valid certificate of the right kind) |
--device stringArray |
device id to include (repeatable; development and ad-hoc profiles) |
--force |
rebuild even when the current profile already matches |
--out string |
directory to save the profile file into (default: signing.out_dir in appuploader.yaml) |
--type string |
profile type: IOS_APP_STORE, IOS_APP_DEVELOPMENT, IOS_APP_ADHOC, MAC_APP_STORE, … (required with a name) |
Examples
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 # every profile in appuploader.yaml
appuploader-cli profile delete
Delete a profile.
Usage
appuploader-cli profile delete <name|id|uuid>
Examples
1appuploader-cli profile delete "App Old" --yes
appuploader-cli profile download
Save a profile’s .mobileprovision file.
Usage
appuploader-cli profile download <name|id|uuid> [flags]
Flags
| Flag | Description |
|---|---|
--out string |
directory to save into (default “.”) |
Examples
1appuploader-cli profile download "App AppStore" --out ./signing
appuploader-cli profile list
List provisioning profiles.
Usage
appuploader-cli profile list [flags]
Flags
| Flag | Description |
|---|---|
--bundle-id string |
only profiles of this bundle id |
--state string |
only this state: ACTIVE, EXPIRED, INVALID |
--type string |
only this profile type |
Examples
1appuploader-cli profile list --bundle-id com.example.app
appuploader-cli signing
Get every certificate and profile appuploader.yaml lists, saved with a manifest.json.
The one-shot for a build machine: registers the bundle id and devices, gets every certificate and profile signing.certs / signing.profiles list, and writes them with a manifest.json (ids, paths, expiry) to signing.out_dir.
Usage
appuploader-cli signing [flags]
Flags
| Flag | Description |
|---|---|
--force |
rebuild profiles even when they already match |
--out string |
directory to save into (default: signing.out_dir) |
--p12-password-env string |
environment variable that holds the .p12 password (default APPUPLOADER_P12_PASSWORD) |
Examples
1appuploader-cli signing
2appuploader-cli signing --force # rebuild profiles even when they look fine
Apps, versions and builds
appuploader-cli app
Apps on App Store Connect.
Subcommands: create, get, list, ratings, set
appuploader-cli app create
Create the App Store Connect app record (Apple ID only); an existing app is reported, not an error.
Usage
appuploader-cli app create [bundle-id] [flags]
Flags
| Flag | Description |
|---|---|
--company-name string |
seller name, asked only for a team’s first app |
--name string |
App Store name, up to 30 characters, unique store-wide (default: app.name in appuploader.yaml) |
--platform stringArray |
IOS | MAC_OS | TV_OS | VISION_OS (repeatable; default: app.platforms) |
--primary-locale string |
primary language, e.g. en-US (default: app.primary_locale, else en-US) |
--sku string |
SKU, unique within the team (default: the bundle id) |
--version string |
first version number (default 1.0) |
Examples
1appuploader-cli app create com.example.app --name "My App" --sku myapp01 --primary-locale en-US
2appuploader-cli app create # values from appuploader.yaml
appuploader-cli app get
Show an app.
Usage
appuploader-cli app get [bundle-id|app-id]
Examples
1appuploader-cli app get com.example.app
2appuploader-cli app get 6822110130
appuploader-cli app list
List the team’s apps.
Usage
appuploader-cli app list
Examples
1appuploader-cli app list
appuploader-cli app ratings
List customers’ ratings and reviews of the version.
Usage
appuploader-cli app ratings
Examples
1appuploader-cli app ratings --json
appuploader-cli app set
Change app-level settings (content rights declaration).
Usage
appuploader-cli app set [flags]
Flags
| Flag | Description |
|---|---|
--content-rights string |
none | third_party: whether the app contains, shows or accesses third-party content (default: app.content_rights) |
Examples
1appuploader-cli app set --content-rights none
appuploader-cli version
App Store versions.
Subcommands: create, get, list, publish, set
appuploader-cli version create
Get an editable version with this number: create it, renumber the open one, or reuse it; then apply the settings.
Apple allows one editable version at a time: an open version with another number is renumbered, one with this number is reused.
Usage
appuploader-cli version create [version] [flags]
Flags
| Flag | Description |
|---|---|
--copyright string |
copyright line |
--phased |
7-day phased release (–phased=false turns it off) |
--platform string |
IOS | MAC_OS | TV_OS | VISION_OS (default: release.platform in appuploader.yaml, else IOS) |
--release-date string |
release date for SCHEDULED, RFC 3339 |
--release-type string |
MANUAL | AFTER_APPROVAL | SCHEDULED |
Examples
1appuploader-cli version create 1.2.0 --release-type MANUAL --copyright "2026 Example Ltd"
2appuploader-cli version create # release.version from appuploader.yaml
appuploader-cli version get
Show a version, its phased release and the build it ships (default: the editable version).
Usage
appuploader-cli version get [version]
Examples
1appuploader-cli version get
2appuploader-cli version get 1.2.0
appuploader-cli version list
List the app’s App Store versions.
Usage
appuploader-cli version list
Examples
1appuploader-cli version list
appuploader-cli version publish
Publish a version that App Review approved.
Releases a version that App Review approved and that waits for its developer (release type MANUAL, state PENDING_DEVELOPER_RELEASE). This makes it public and cannot be undone, so it is a separate command the user runs: the release pipeline never calls it, and the version number must be given explicitly and match.
Usage
appuploader-cli version publish <version>
Examples
1appuploader-cli version publish 1.2.0 # asks for confirmation
appuploader-cli version set
Change a version’s copyright, release type, phased release or build.
–build attaches a build without submitting (Apple needs one before the version can join a review submission).
Usage
appuploader-cli version set [version] [flags]
Flags
| Flag | Description |
|---|---|
--build string |
build to ship: build id, build number, or latest (attaches it without submitting) |
--copyright string |
copyright line |
--phased |
7-day phased release (–phased=false turns it off) |
--release-date string |
release date for SCHEDULED, RFC 3339 |
--release-type string |
MANUAL | AFTER_APPROVAL | SCHEDULED |
Examples
1appuploader-cli version set --phased --release-type AFTER_APPROVAL
2appuploader-cli version set --build latest
appuploader-cli build
Builds: upload, inspect, wait.
Subcommands: compliance, get, info, list, upload, wait
appuploader-cli build compliance
Answer the export compliance (encryption) question for a build.
Usage
appuploader-cli build compliance [build] [flags]
Flags
| Flag | Description |
|---|---|
--exempt |
the build uses no encryption, or only exempt encryption (–exempt=false: it uses non-exempt encryption) |
Examples
1appuploader-cli build compliance --exempt
2appuploader-cli build compliance 42 --exempt=false
appuploader-cli build get
Show a build: build id, build number, or latest (the default).
Usage
appuploader-cli build get [build]
Examples
1appuploader-cli build get
2appuploader-cli build get 42
appuploader-cli build info
Generate the App Store asset description plist (AppStoreInfo.plist) of an .ipa / .pkg (uses your App Uploader license).
Usage
appuploader-cli build info <file> [flags]
Flags
| Flag | Description |
|---|---|
--format string |
plist format: xml | binary (default “xml”) |
-o, --output string |
write the plist to this file instead of stdout |
-u, --username string |
Apple ID the license belongs to (default: the selected account’s Apple ID) |
Examples
1appuploader-cli build info ./build/App.ipa -o AppStoreInfo.plist
appuploader-cli build list
List the app’s builds, newest first.
Usage
appuploader-cli build list [flags]
Flags
| Flag | Description |
|---|---|
--limit int |
how many to show (default 20) |
Examples
1appuploader-cli build list --limit 5
appuploader-cli build upload
Upload a signed .ipa / .pkg to App Store Connect (uses your App Uploader license).
Uses the Apple ID’s App Uploader license; when uploading with an API key account, name the license holder with -u. A build number already on App Store Connect is reported, not uploaded twice.
Usage
appuploader-cli build upload [file] [flags]
Flags
| Flag | Description |
|---|---|
--timeout string |
how long –wait waits (default 30m) |
--type string |
package type: ios | osx | appletvos | xros (default: release.build.type, else ios) |
-u, --username string |
Apple ID the license belongs to (needed with an API key account) |
--wait |
wait until Apple has processed the build |
Examples
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
Wait until a build has been processed: build id, build number, or latest (the default).
Usage
appuploader-cli build wait [build] [flags]
Flags
| Flag | Description |
|---|---|
--timeout string |
give up after this long (default 30m) |
Examples
1appuploader-cli build wait --timeout 45m
2appuploader-cli build wait 42
Store listing, screenshots and assets
appuploader-cli metadata
Store listing text, as a folder of files per locale.
Subcommands: export, import, translate, validate
appuploader-cli metadata export
Save the version’s listing text (and optionally its media) to a folder.
Usage
appuploader-cli metadata export [flags]
Flags
| Flag | Description |
|---|---|
--dir string |
folder to write (default: metadata.dir in appuploader.yaml) |
--previews |
also download app previews |
--screenshots |
also download screenshots |
Examples
1appuploader-cli metadata export --dir ./store --screenshots --previews
appuploader-cli metadata import
Upload a listing folder to the version (only what the folder contains; an empty file never clears a value).
The folder layout is deliver-style: one sub-folder per locale with one text file per field (see cli-config.md). Only what exists on disk is uploaded; an empty file never clears Apple’s value; each locale × device slot of screenshots and previews is replaced as a whole.
Usage
appuploader-cli metadata import [flags]
Flags
| Flag | Description |
|---|---|
--dir string |
folder to read (default: metadata.dir in appuploader.yaml) |
--only strings |
only these parts: config, review, locales, screenshots, previews (default: everything present) |
Examples
1appuploader-cli metadata import --dir ./store
2appuploader-cli metadata import --only locales
appuploader-cli metadata translate
Machine-translate listing text into other locales (uses appuploader.net AI credits).
Usage
appuploader-cli metadata translate [flags]
Flags
| Flag | Description |
|---|---|
--dir string |
folder whose files to translate (default: metadata.dir) |
--from string |
source locale, e.g. en-US (default: metadata.translate.from in appuploader.yaml) |
--remote |
translate the version’s text on App Store Connect instead of local files |
--to strings |
target locales (default: metadata.translate.to) |
Examples
1appuploader-cli metadata translate --dir ./store --from en-US --to zh-Hans,ja
appuploader-cli metadata validate
Check a listing folder offline: text limits, locale names, screenshot sizes and file names.
Usage
appuploader-cli metadata validate [flags]
Flags
| Flag | Description |
|---|---|
--dir string |
folder to check (default: metadata.dir in appuploader.yaml) |
--strict |
treat warnings as errors |
Examples
1appuploader-cli metadata validate --dir ./store --strict
appuploader-cli screenshot
App Store screenshots.
Subcommands: clear, copy, list, upload
appuploader-cli screenshot clear
Delete a locale’s screenshots (all device slots, or one).
Usage
appuploader-cli screenshot clear [flags]
Flags
| Flag | Description |
|---|---|
--display-type string |
only this device slot, e.g. APP_IPHONE_67 |
--locale string |
locale (required) |
Examples
1appuploader-cli screenshot clear --locale en-US --display-type APP_IPHONE_67 --yes
appuploader-cli screenshot copy
Copy one locale’s screenshots to other locales.
Usage
appuploader-cli screenshot copy [flags]
Flags
| Flag | Description |
|---|---|
--from string |
source locale (required) |
--overwrite |
replace what the target locales already have in those device slots |
--to strings |
target locales (required) |
Examples
1appuploader-cli screenshot copy --from en-US --to de-DE,fr-FR --overwrite
appuploader-cli screenshot list
List a locale’s screenshots by device slot.
Usage
appuploader-cli screenshot list [flags]
Flags
| Flag | Description |
|---|---|
--locale string |
locale (required) |
Examples
1appuploader-cli screenshot list --locale en-US
appuploader-cli screenshot upload
Upload screenshots from a folder; each file goes to the device slot its pixel size fits.
PNG / JPEG files; each goes to the device slot its pixel size matches (iPhone Duo sizes go through the asset library). Without –replace the files are added to what the slot already shows.
Usage
appuploader-cli screenshot upload <dir> [flags]
Flags
| Flag | Description |
|---|---|
--locale string |
the folder holds one locale’s files (default: one sub-folder per locale, |
--replace |
replace each affected device slot instead of adding to it |
Examples
1appuploader-cli screenshot upload ./store/screenshots --replace
2appuploader-cli screenshot upload ./shots/en --locale en-US
appuploader-cli preview
App preview videos.
Subcommands: clear, list, upload
appuploader-cli preview clear
Delete a locale’s preview videos.
Usage
appuploader-cli preview clear [flags]
Flags
| Flag | Description |
|---|---|
--locale string |
locale (required) |
Examples
1appuploader-cli preview clear --locale en-US --yes
appuploader-cli preview list
List a locale’s preview videos by device slot.
Usage
appuploader-cli preview list [flags]
Flags
| Flag | Description |
|---|---|
--locale string |
locale (required) |
Examples
1appuploader-cli preview list --locale en-US
appuploader-cli preview upload
Upload app preview videos from
Videos named <DISPLAY_TYPE>_
Usage
appuploader-cli preview upload <dir> [flags]
Flags
| Flag | Description |
|---|---|
--locale string |
only this locale’s sub-folder |
Examples
1appuploader-cli preview upload ./store/previews
2appuploader-cli preview upload ./store/previews --locale zh-Hans
appuploader-cli asset
Asset library: upload once, show on any locale, page or test (also iPhone Duo screenshots, header and search results).
Subcommands: delete, list, place, placements, specs, unplace, upload
appuploader-cli asset delete
Delete assets from the library.
Usage
appuploader-cli asset delete <asset-id>... [flags]
Flags
| Flag | Description |
|---|---|
--purge |
also remove the asset from every place that still shows it |
Examples
1appuploader-cli asset delete 84400019-… --yes
2appuploader-cli asset delete 84400019-… --purge --yes # remove it from every place first
appuploader-cli asset list
List the app’s asset library.
Usage
appuploader-cli asset list [flags]
Flags
| Flag | Description |
|---|---|
--category string |
screenshots or creative |
--media string |
image or video |
--state strings |
only these states, e.g. FAILED,AWAITING_UPLOAD |
--unused |
only assets nothing shows any more |
Examples
1appuploader-cli asset list --category creative
2appuploader-cli asset list --unused # candidates for asset delete
appuploader-cli asset place
Screenshots and previews: the group is the device slot, detected from the first file’s size unless –group is given. Header (–type header): one 3840x1646 or 5244x2950 image, or a 3840x1646 video of 5-30 s; on iPhone only the middle two thirds show, so keep text there. Search results (–type search): one 3:2 image from 1920x1280 to 3840x2560, or 5244x2950, or a 3:2 video. Header and search results show on iOS 27 and later. Files already in the library are reused, not uploaded again.
Usage
appuploader-cli asset place <file|dir>... [flags]
Flags
| Flag | Description |
|---|---|
--append |
add after what the group already shows instead of replacing it |
--group asset specs |
placement group (default: detected from the first file’s size; see asset specs) |
--locale strings |
locale(s) (required); created when missing; the same files are placed on each, uploaded once |
--type string |
screenshot, preview, header or search (default “screenshot”) |
Examples
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
List what a locale of the version shows: screenshots, previews, header, search results.
Usage
appuploader-cli asset placements [flags]
Flags
| Flag | Description |
|---|---|
--group string |
only this placement group |
--locale string |
locale (required) |
--type string |
only this placement type: screenshot, preview, header, search |
Examples
1appuploader-cli asset placements --locale en-US
2appuploader-cli asset placements --locale en-US --type header
appuploader-cli asset specs
Show the placement groups Apple accepts, with their sizes and limits.
Apple’s current catalog of placement groups with the accepted sizes and the per-surface limits (version / custom page / page test).
Usage
appuploader-cli asset specs [flags]
Flags
| Flag | Description |
|---|---|
--group string |
only this placement group, e.g. IPHONE_DUO_PROFILE |
--type string |
only this placement type: screenshot, preview, header, search |
Examples
1appuploader-cli asset specs --type screenshot --group IPHONE_DUO_PROFILE
2appuploader-cli asset specs --type header
appuploader-cli asset unplace
Stop showing a placement group on the version’s locale(s); the files stay in the library.
Usage
appuploader-cli asset unplace [flags]
Flags
| Flag | Description |
|---|---|
--group string |
only this group (default: every group of the type) |
--locale strings |
locale(s) (required) |
--type string |
screenshot, preview, header or search (required) |
Examples
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
Upload files into the asset library without showing them anywhere yet.
Usage
appuploader-cli asset upload <file|dir>... [flags]
Flags
| Flag | Description |
|---|---|
--creative |
the files are creative assets (header, search results) rather than screenshots or previews |
--timeout string |
how long to wait for Apple to process the files (0 = do not wait) (default “2m”) |
Examples
1appuploader-cli asset upload ./header.png --creative
2appuploader-cli asset upload ./shots/
appuploader-cli custom-page
Custom product pages: extra product pages with their own URL, for ads and campaigns.
Subcommands: create, delete, get, import, list, place, set
appuploader-cli custom-page create
Create a custom product page (an existing page of that name is reused).
Usage
appuploader-cli custom-page create <name> [flags]
Flags
| Flag | Description |
|---|---|
--deep-link string |
URL the page opens in the app |
--from-version |
copy the App Store version’s product page as the starting point |
--locale strings |
locales to start with (default: the app’s primary locale) |
Examples
1appuploader-cli custom-page create "Spring Sale" --from-version --locale en-US,zh-Hans
appuploader-cli custom-page delete
Delete a custom product page.
Usage
appuploader-cli custom-page delete <page>
Examples
1appuploader-cli custom-page delete "Spring Sale" --yes
appuploader-cli custom-page get
Show a page’s versions, locales and media.
Usage
appuploader-cli custom-page get <page>
Examples
1appuploader-cli custom-page get "Spring Sale" --json
appuploader-cli custom-page import
Create or update custom product pages from a folder of pages.
One folder per page: config.yaml, metadata/
Usage
appuploader-cli custom-page import [flags]
Flags
| Flag | Description |
|---|---|
--dir string |
folder with one sub-folder per page (default: custom_pages.dir in appuploader.yaml) |
--dry-run |
only report what would change |
--submit |
also put each page on the draft review submission (default: custom_pages.submit) |
Examples
1appuploader-cli custom-page import --dry-run
2appuploader-cli custom-page import --dir ./store/custom_pages --submit
appuploader-cli custom-page list
List the app’s custom product pages.
Usage
appuploader-cli custom-page list
Examples
1appuploader-cli custom-page list
appuploader-cli custom-page place
Make one placement group of a page locale show exactly these files.
Usage
appuploader-cli custom-page place <page> <file|dir>... [flags]
Flags
| Flag | Description |
|---|---|
--group asset specs |
placement group (default: detected from the first file’s size; see asset specs) |
--locale string |
locale (required); added to the page when missing |
--type string |
screenshot, preview, header or search (default “screenshot”) |
Examples
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
Change a page’s name, visibility or deep link, or a locale’s promotional text.
Usage
appuploader-cli custom-page set <page> [flags]
Flags
| Flag | Description |
|---|---|
--deep-link string |
URL the page opens in the app |
--locale string |
locale to add to the page or to give the promotional text |
--name string |
new name |
--promotional-text string |
promotional text for –locale, up to 170 characters |
--visible |
whether the page is live at its URL (–visible=false hides it) (default true) |
Examples
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
Product page tests: A/B test icons, screenshots, previews and creative assets of a live app.
Subcommands: create, delete, get, list, place, start, stop, treatment
appuploader-cli page-test create
Create a test with its treatments (an existing test of that name is reused).
Usage
appuploader-cli page-test create <name> [flags]
Flags
| Flag | Description |
|---|---|
--platform string |
platform (default “IOS”) |
--traffic int |
percentage of eligible visitors that see a treatment, 1-100 (required) |
--treatment strings |
treatment names, up to 3, e.g. B,C |
Examples
1appuploader-cli page-test create "Header test" --traffic 30 --treatment B,C
appuploader-cli page-test delete
Delete a test that has not started.
Usage
appuploader-cli page-test delete <test>
Examples
1appuploader-cli page-test delete "Header test" --yes
appuploader-cli page-test get
Show a test’s treatments, locales and media.
Usage
appuploader-cli page-test get <test>
Examples
1appuploader-cli page-test get "Header test"
appuploader-cli page-test list
List the app’s product page tests.
Usage
appuploader-cli page-test list
Examples
1appuploader-cli page-test list
appuploader-cli page-test place
Make one placement group of a treatment locale show exactly these files.
Usage
appuploader-cli page-test place <test> <file|dir>... [flags]
Flags
| Flag | Description |
|---|---|
--group asset specs |
placement group (default: detected from the first file’s size; see asset specs) |
--locale string |
locale (required); added to the treatment when missing |
--treatment string |
treatment name or id (required) |
--type string |
screenshot, preview, header or search (default “screenshot”) |
Examples
1appuploader-cli page-test place "Header test" --treatment B --locale en-US --type header ./b-header.png
appuploader-cli page-test start
Start an approved test.
Usage
appuploader-cli page-test start <test>
Examples
1appuploader-cli page-test start "Header test" # once App Review approved it
appuploader-cli page-test stop
Stop a running test.
Usage
appuploader-cli page-test stop <test>
Examples
1appuploader-cli page-test stop "Header test" --yes
appuploader-cli page-test treatment
Add a treatment to a test (an existing one of that name is reused).
Usage
appuploader-cli page-test treatment <test> <name> [flags]
Flags
| Flag | Description |
|---|---|
--icon string |
alternate app icon name shipped in the build |
Examples
1appuploader-cli page-test treatment "Header test" D --icon AppIconDark
App Review and TestFlight
appuploader-cli review
App Review: what to review, submitting, status.
Subcommands: add, cancel, info, remove, status, submit
appuploader-cli review add
Put items on the draft review submission.
What can go on the draft:
version: the App Store version (it needs a build: version set –build)iap <product-id>: an in-app purchase; the app’s first one is reviewed only together with a versiongame-center: every leaderboard waiting for reviewasset <asset-id>...: library assets, so they are approved ahead of a page update or an Apple Ads campaigncustom-page <page>: a custom product page’s editable versionpage-test <test>: a product page test
Usage
appuploader-cli review add <version|iap|game-center|asset|custom-page|page-test> [name|id...] [flags]
Flags
| Flag | Description |
|---|---|
--platform string |
platform of the draft when one has to be created (default “IOS”) |
Examples
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-… # approve ahead of a page update or an Apple Ads campaign
5appuploader-cli review add custom-page "Spring Sale"
6appuploader-cli review add page-test "Header test"
appuploader-cli review cancel
Withdraw the submission that is with App Review.
Without an id it picks the submission with Apple, never the unsent draft; when several are with Apple, name one (see review status).
Usage
appuploader-cli review cancel [submission-id]
Examples
1appuploader-cli review cancel --yes
2appuploader-cli review cancel 6c4eccf6-… --yes
appuploader-cli review info
App Review contact and demo account.
appuploader-cli review info get
Show the App Review contact, demo account and notes of the version.
Usage
appuploader-cli review info get
Examples
1appuploader-cli review info get
appuploader-cli review info set
Set App Review information; fields left out keep their value.
Usage
appuploader-cli review info set [flags]
Flags
| Flag | Description |
|---|---|
--demo-password-env string |
environment variable that holds the demo account password |
--demo-required |
the reviewer needs the demo account (–demo-required=false: not needed) |
--demo-user string |
demo account user name |
--email string |
contact email |
--first-name string |
contact first name |
--from string |
read the fields from a review_information.yaml (default: the one in metadata.dir) |
--last-name string |
contact last name |
--notes string |
notes for the reviewer |
--phone string |
contact phone |
Examples
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
Take items off the draft review submission.
Names what to remove the way review add does, or gives an item id from review status. Items on a submission that is with Apple are withdrawn with review cancel.
Usage
appuploader-cli review remove <version|iap|asset|custom-page|page-test|item-id> [name|id...]
Examples
1appuploader-cli review remove version
2appuploader-cli review remove custom-page "Spring Sale"
3appuploader-cli review remove ZDM5OWEw… # an item id from review status
appuploader-cli review status
Show the version’s state and every open submission (the draft and any with Apple) with what is on it.
Usage
appuploader-cli review status
Examples
1appuploader-cli review status
2appuploader-cli review status --json
appuploader-cli review submit
Attach a build and send the version (with everything on the draft) to App Review.
Attaches the build, puts the version on the draft review submission next to whatever is already on it, and sends the submission to App Review. Already submitted is reported, not repeated.
Usage
appuploader-cli review submit [flags]
Flags
| Flag | Description |
|---|---|
--build string |
build id, build number, or latest (default “latest”) |
--skip-iap-check |
submit even when the app’s first in-app purchase is not on the draft |
Examples
1appuploader-cli review submit
2appuploader-cli review submit --build 42
appuploader-cli testflight
TestFlight beta groups and testers.
Subcommands: distribute, group, tester
appuploader-cli testflight distribute
Give a build to beta groups.
Usage
appuploader-cli testflight distribute [flags]
Flags
| Flag | Description |
|---|---|
--build string |
build id, build number, or latest (default “latest”) |
--group strings |
group names or ids (default: testflight.groups in appuploader.yaml) |
Examples
1appuploader-cli testflight distribute --group "Internal QA"
2appuploader-cli testflight distribute --build 42 --group "Internal QA",Beta
appuploader-cli testflight group
Beta groups.
Subcommands: create, delete, list
appuploader-cli testflight group create
Create a beta group (an existing group of that name is reused).
Usage
appuploader-cli testflight group create <name>
Examples
1appuploader-cli testflight group create "Internal QA"
appuploader-cli testflight group delete
Delete a beta group.
Usage
appuploader-cli testflight group delete <group>
Examples
1appuploader-cli testflight group delete "Old group" --yes
appuploader-cli testflight group list
List beta groups.
Usage
appuploader-cli testflight group list
Examples
1appuploader-cli testflight group list
appuploader-cli testflight tester
Beta testers.
Subcommands: invite, list, remove
appuploader-cli testflight tester invite
Invite testers to a group: one –email, or a CSV file.
Usage
appuploader-cli testflight tester invite [flags]
Flags
| Flag | Description |
|---|---|
--csv string |
CSV file: email,first_name,last_name per line |
--email string |
tester email |
--first-name string |
tester first name |
--group string |
group name or id (required) |
--last-name string |
tester last name |
Examples
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 per line
appuploader-cli testflight tester list
List a group’s testers.
Usage
appuploader-cli testflight tester list [flags]
Flags
| Flag | Description |
|---|---|
--group string |
group name or id (required) |
Examples
1appuploader-cli testflight tester list --group "Internal QA"
appuploader-cli testflight tester remove
Remove a tester from a group.
Usage
appuploader-cli testflight tester remove <tester-id|email> [flags]
Flags
| Flag | Description |
|---|---|
--group string |
group name or id (required) |
Examples
1appuploader-cli testflight tester remove qa@example.com --group "Internal QA"
In-app purchases, pricing, privacy and Game Center
appuploader-cli iap
In-app purchases.
Subcommands: create, delete, export, get, import, list, set
appuploader-cli iap create
Create a product (an existing product with that id is reused).
Usage
appuploader-cli iap create <product-id> [flags]
Flags
| Flag | Description |
|---|---|
--reference-name string |
internal name (required) |
--review-note string |
note for App Review |
--type string |
CONSUMABLE | NON_CONSUMABLE | NON_RENEWING_SUBSCRIPTION (required) |
Examples
1appuploader-cli iap create com.example.app.full --type NON_CONSUMABLE --reference-name "Full game"
appuploader-cli iap delete
Delete a product (Apple keeps its product id reserved).
Usage
appuploader-cli iap delete <product-id|id>
Examples
1appuploader-cli iap delete com.example.app.old --yes
appuploader-cli iap export
Save every product to the listing folder’s in_app_purchases/.
Usage
appuploader-cli iap export [flags]
Flags
| Flag | Description |
|---|---|
--dir string |
listing folder (default: metadata.dir in appuploader.yaml) |
--include-images |
also download review screenshots and promo images |
Examples
1appuploader-cli iap export --dir ./store --include-images
appuploader-cli iap get
Show a product.
Usage
appuploader-cli iap get <product-id|id>
Examples
1appuploader-cli iap get com.example.app.coins100
appuploader-cli iap import
Create or update products from the listing folder’s in_app_purchases/ (never deletes).
Reads one folder per product under in_app_purchases/ (see cli-config.md); products are created or updated, never deleted. A product’s first review goes with the next review submit: see review add iap.
Usage
appuploader-cli iap import [flags]
Flags
| Flag | Description |
|---|---|
--dir string |
listing folder (default: metadata.dir in appuploader.yaml) |
--include-images |
also upload review screenshots and promo images |
Examples
1appuploader-cli iap import --dir ./store --include-images
appuploader-cli iap list
List the app’s in-app purchases.
Usage
appuploader-cli iap list
Examples
1appuploader-cli iap list
appuploader-cli iap set
Change a product’s name, review note, family sharing or price.
Usage
appuploader-cli iap set <product-id|id> [flags]
Flags
| Flag | Description |
|---|---|
--family-sharable |
share with the family (non-consumables; –family-sharable=false turns it off) |
--price float |
customer price in the base territory’s currency |
--reference-name string |
internal name |
--review-note string |
note for App Review |
--territory string |
base territory for –price, ISO 3166-1 alpha-3 (default “USA”) |
Examples
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 price and where it is sold.
Subcommands: get, set, territories
appuploader-cli pricing get
Show the app’s price.
Usage
appuploader-cli pricing get
Examples
1appuploader-cli pricing get
appuploader-cli pricing set
Set the app’s price and / or where it is sold.
Apple’s price tiers are chosen by the customer price in the base territory; the other territories follow Apple’s equalization. Setting what is already set changes nothing.
Usage
appuploader-cli pricing set [flags]
Flags
| Flag | Description |
|---|---|
--exclude strings |
with –territories all: sell everywhere except these |
--free |
make the app free |
--price float |
customer price in the base territory’s currency (default: pricing.customer_price in appuploader.yaml) |
--territories string |
where to sell: all, or a list like USA,GBR,JPN (default: pricing.territories in appuploader.yaml) |
--territory string |
base territory for –price (default: pricing.base_territory, else USA) |
Examples
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 # pricing section of appuploader.yaml
appuploader-cli pricing territories
List where the app can be sold and where it is.
Usage
appuploader-cli pricing territories
Examples
1appuploader-cli pricing territories
appuploader-cli privacy
App privacy label (Apple ID only).
Subcommands: catalog, export, import, publish, status, unpublish
appuploader-cli privacy catalog
List the data types and purposes a privacy label can declare.
Usage
appuploader-cli privacy catalog
Examples
1appuploader-cli privacy catalog
appuploader-cli privacy export
Save the app’s privacy label as a YAML file.
Usage
appuploader-cli privacy export [flags]
Flags
| Flag | Description |
|---|---|
--out string |
file to write (default: privacy.file in appuploader.yaml, else stdout) |
Examples
1appuploader-cli privacy export --out privacy.yaml
appuploader-cli privacy import
Apply a privacy label from a YAML file (and publish it when the file says so).
Usage
appuploader-cli privacy import [privacy.yaml]
Examples
1appuploader-cli privacy import privacy.yaml
appuploader-cli privacy publish
Publish the privacy label.
Usage
appuploader-cli privacy publish
Examples
1appuploader-cli privacy publish
appuploader-cli privacy status
Show whether the privacy label is published.
Usage
appuploader-cli privacy status
Examples
1appuploader-cli privacy status
appuploader-cli privacy unpublish
Unpublish the privacy label.
Usage
appuploader-cli privacy unpublish
Examples
1appuploader-cli privacy unpublish --yes
appuploader-cli game-center
Game Center and leaderboards.
appuploader-cli game-center status
Show whether Game Center is on and list the app’s leaderboards.
Usage
appuploader-cli game-center status
Examples
1appuploader-cli game-center status
appuploader-cli game-center sync
Turn Game Center on and create or update the leaderboards appuploader.yaml lists (never deletes).
Usage
appuploader-cli game-center sync [flags]
Flags
| Flag | Description |
|---|---|
--dry-run |
only report what would change |
Examples
1appuploader-cli game-center sync --dry-run
2appuploader-cli game-center sync
Exit codes
With --json, a failure carries a stable code and exit_code. Errors with retryable: true can be retried after a back-off.
| exit_code | code | Description |
|---|---|---|
| 0 | ok |
Success |
| 1 | internal_error |
Unexpected failure |
| 2 | bad_input |
Usage or flag error |
| 3 | not_found |
Not found |
| 4 | conflict |
Already exists, or the current state does not allow it |
| 5 | capability_not_supported |
This kind of account cannot do it; use another --account |
| 6 | forbidden 等 |
program_inactive / not_enrolled / unpaid_account |
| 7 | agreement_required |
Accept the Apple agreement first |
| 8 | rate_limited |
Rate limited; retry later |
| 9 | upstream_error 等 |
Apple-side error, timeout or unreachable; retryable |
| 10 | needs_2fa |
A two-factor code is needed |
| 11 | bad_credentials 等 |
bad_api_key / verify_refused / account_locked |
| 12 | session_expired |
Session expired; run login again |
| 13 | license_required |
An App Uploader license is needed |
| 14 | wait_timeout |
Timed out waiting for Apple; retryable |
| 15 | team_required / account_ambiguous |
Pass --team or --account |
| 130 | interrupted |
Interrupted |
Environment variables
These environment variables are equivalent to the matching flags and suit CI and scripts.
| Environment variables | Description |
|---|---|
APPUPLOADER_ACCOUNT / APPUPLOADER_TEAM_ID |
Choose the account / team |
APPUPLOADER_APPLE_ID / APPUPLOADER_PASSWORD |
Apple ID sign-in; put an app-specific password in APPUPLOADER_PASSWORD |
APPUPLOADER_API_KEY_ID / APPUPLOADER_API_ISSUER_ID |
API key ID and issuer ID |
APPUPLOADER_API_KEY_PATH / APPUPLOADER_API_KEY_P8 / APPUPLOADER_API_KEY_FILE |
.p8 path / .p8 content / JSON key file |
APPUPLOADER_2FA_CODE |
Two-factor code for sign-in |
APPUPLOADER_P12_PASSWORD |
.p12 password |
APPUPLOADER_CONFIG |
Path to appuploader.yaml |
APPUPLOADER_DATA_DIR |
Data folder, default ~/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 命令手册