Skip to content

gplay releases sharing upload

Upload an APK or AAB to Google Play Internal App Sharing and print the private, shareable downloadUrl an authorized tester follows to install it. This bypasses tracks and the Edit lifecycle entirely — a QA/preview gesture, not a release.

APK vs AAB is auto-detected by file extension (.apk / .aab); pass --format apk|bundle to override when the extension is ambiguous.

--output json passes the InternalAppSharingArtifact through verbatim (downloadUrl, certificateFingerprint, sha256). --dry-run validates the package and the local artifact without any HTTP call. No --confirm is required (the link is private and creates no track or production release); GPLAY_READONLY still refuses it (exit 4).

[experimental] — the surface may still evolve (ADR-0010).

gplay releases sharing upload <app.apk|app.aab> [flags]
FlagDescription
--dry-runvalidate the package and artifact without any HTTP call
--format stringartifact type: apk or bundle (overrides extension auto-detect)
--output stringoutput format: table, json, or markdown (default: auto — table on TTY, json in pipes/CI)
--package stringAndroid package name (overrides .gplay/config.json pin)
FlagDescription
--account stringname of a stored Account to use (overrides env and active Account)
--retry intretry transient failures (transport errors, 5xx, 429) up to N times with exponential backoff (default: 0, no retry)
--service-account stringpath to a service-account JSON, or inline JSON content (overrides --account, env, and active Account)
--timeout durationper-request API timeout, e.g. 30s or 2m (default: 60s for control-plane calls, none for uploads)
-v, --verboselog flow steps to stderr (info level)