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]| Flag | Description |
|---|---|
--dry-run | validate the package and artifact without any HTTP call |
--format string | artifact type: apk or bundle (overrides extension auto-detect) |
--output string | output format: table, json, or markdown (default: auto — table on TTY, json in pipes/CI) |
--package string | Android package name (overrides .gplay/config.json pin) |
Global flags
Section titled “Global flags”| Flag | Description |
|---|---|
--account string | name of a stored Account to use (overrides env and active Account) |
--retry int | retry transient failures (transport errors, 5xx, 429) up to N times with exponential backoff (default: 0, no retry) |
--service-account string | path to a service-account JSON, or inline JSON content (overrides --account, env, and active Account) |
--timeout duration | per-request API timeout, e.g. 30s or 2m (default: 60s for control-plane calls, none for uploads) |
-v, --verbose | log flow steps to stderr (info level) |