Using GPC with Google's Android CLI
Google shipped the official Android CLI on 2026-04-16 and promoted it to stable (1.0) at Google I/O on 2026-05-19. It covers the build-and-device half of Android development. GPC covers the Play Store half. This page documents how to use them together in an agent-driven workflow.
What each tool covers
Google's Android ecosystem now includes three developer-facing tools. Each has a distinct scope:
Android CLI (stable, I/O 2026)
android sdk install-- download SDK componentsandroid create-- scaffold a project from official templatesandroid emulator-- create and manage virtual devicesandroid run-- build and deploy to a deviceandroid studio-- semantic symbol resolution, Compose preview rendering, lint analysisandroid update-- update the CLIandroid docs-- search the Android Knowledge Baseandroid skills-- browse and apply agent skills (Journeys for end-to-end UI testing)
Supported agents: Claude Code, OpenAI Codex, Google Antigravity.
Google AI Studio (I/O 2026)
- Generate native Kotlin/Compose apps from text prompts
- In-browser Android emulator for previewing
- Single-click publish to Google Play's Internal Testing Track (creates app record, packages bundle, uploads)
- Export to Android Studio or Antigravity for further development
Current limitations: internal test track only (not production), apps intended for personal use, no Firebase integration yet.
What neither tool covers
- Production releases and track promotion
- Staged rollouts with vitals gating
- Store listings, screenshots, and metadata sync
- Vitals monitoring (crash rate, ANR, startup time, LMK)
- Reviews and reporting
- Subscriptions, IAP, pricing management
- Pre-submission compliance scanning
- CI/CD pipeline integration
That entire surface is what GPC handles. 217 typed endpoints across the Android Publisher API, the Play Developer Reporting API, and the Play Custom App Publishing API.
Where GPC fits
The standard Android workflow is: build your app, then publish it. GPC handles the second half.
| Stage | Tool | What happens |
|---|---|---|
| Build | Android CLI, Android Studio, Gradle | Scaffold, build, test, debug |
| Publish | GPC | Production releases, staged rollouts, metadata, vitals, monetization, CI/CD |
Google AI Studio adds an alternative on-ramp for prototyping: generate an app from a prompt and deploy it to the Internal Testing Track with a single click. But it stops there -- no production releases, no rollouts, no metadata management. Apps built in AI Studio still need GPC (or the Console UI) to reach production.
Using them together
A full agent-driven flow from scaffold to shipped release:
# Scaffold a new project (Android CLI)
android create --template compose-tutorial --name MyApp
# Install SDK components and build
android sdk install --platform 35
android run --device pixel-9
# Before uploading, run offline compliance checks (GPC)
gpc preflight ./app/build/outputs/bundle/release/app-release.aab
# Ship to internal track with 100% rollout (GPC)
gpc releases upload \
--package com.example.app \
--track internal \
--file ./app/build/outputs/bundle/release/app-release.aab \
--rollout 1.0
# Promote internal to production at 10% once vitals are healthy (GPC)
gpc vitals crashes --package com.example.app --days 7 --json
gpc releases promote --from internal --to production --rollout 0.12
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
The handoff point is deterministic: once you have an AAB on disk, you're in Play Store territory. Whether it was built by Android CLI, Android Studio, Gradle, or generated by AI Studio, GPC takes it from there.
Shared skills format
Google's announcement standardizes SKILL.md as the agent-readable instruction format. Modular markdown, auto-triggered from prompt metadata, installable as a skill pack.
GPC has shipped this exact pattern since v0.9.56. Both skill packs install via npx skills:
# Android skills (from Google)
android skills add --all
# GPC skills (for the publishing half)
npx skills add yasserstudio/gpc-skills2
3
4
5
After both are installed, an agent has matching prompt-metadata triggers for every stage of the Android app lifecycle. A prompt like "ship this app to the internal track" routes to gpc-release-flow; "check crash rates" routes to gpc-vitals-monitoring; "scaffold a new Compose project" routes to Google's Compose skill.
The full GPC skill index:
| Skill | Covers |
|---|---|
gpc-setup | Service account, OAuth, ADC, profiles, gpc doctor |
gpc-onboarding | First-run setup and gpc quickstart wizard |
gpc-release-flow | Upload, rollout, promote, gpc publish, gpc diff, gpc changelog |
gpc-train | Automated staged rollout pipeline with crash and ANR gates |
gpc-preflight | Offline AAB compliance scanning (9 scanners) |
gpc-metadata-sync | Store listings, images, Fastlane metadata compatibility |
gpc-vitals-monitoring | Crashes, ANR, LMK, thresholds, reviews, reports |
gpc-ci-integration | GitHub Actions, GitLab CI, env vars, JSON output |
gpc-monetization | Subscriptions, IAP, RTDN, pricing, analytics |
gpc-user-management | Account users, permissions, grants, testers |
gpc-migrate-fastlane | Fastlane-to-GPC migration with command mapping |
gpc-plugin-development | Plugin SDK and lifecycle hooks |
gpc-troubleshooting | Exit codes, error catalog, debug mode |
gpc-sdk-usage | Standalone TypeScript SDK usage |
gpc-multi-app | Multiple apps, profiles, batch operations |
gpc-security | Credential storage, key rotation, audit logging |
Google's official Android Skills repo
Google maintains an official skill repository at github.com/android/skills (Apache 2.0). It contains skills for the app-development side of the Android lifecycle:
| Skill | Domain | What it covers |
|---|---|---|
android-cli | Dev tools | Android CLI usage, journeys, interactive workflows |
agp-9-upgrade | Build | Android Gradle Plugin 9 migration |
camera1-to-camerax | Camera | Camera1 API to CameraX migration |
migrate-xml-views-to-jetpack-compose | UI | XML layout to Jetpack Compose migration |
navigation-3 | Navigation | Navigation 3 library patterns and recipes |
r8-analyzer | Performance | R8/ProGuard keep rules analysis |
perfetto-sql | Profilers | Perfetto trace analysis with PerfettoSQL |
play-billing-library-version-upgrade | Play (app-side) | Play Billing Library version migration |
edge-to-edge | System | Edge-to-edge display implementation |
display-ai-glasses-with-compose-glimmer | XR | Jetpack Compose Glimmer UI for AI glasses |
These skills cover app code: Gradle config, Kotlin/Compose UI, SDK integration, device profiling, and on-device APIs. They stop at the boundary of the built artifact.
GPC's 16 skills pick up where Google's stop: everything after you have an AAB on disk. Publishing, rollouts, vitals, monetization, compliance, CI/CD.
Installing both
# Google's Android skills (via Android CLI)
android skills add --all
# GPC skills (via npx)
npx skills add yasserstudio/gpc-skills2
3
4
5
Together, the two skill packs give an agent full coverage from project scaffold to staged rollout. There is no overlap: Google's play-billing-library-version-upgrade handles in-app billing Kotlin code, while GPC's gpc-monetization handles the publishing API for subscriptions and IAP products. Google's android-cli skill teaches agents the build/device commands, while GPC's 16 skills teach agents the publishing commands.
How GPC talks to agents
Google's announcement explicitly names "third-party agents like Claude Code or Codex" as supported clients. GPC's output contract was designed for the same audience:
JSON on every command
gpc apps list --json
gpc releases list --package com.example.app --track production --json
gpc vitals crashes --package com.example.app --days 7 --json2
3
The --json flag returns a stable, versioned schema. When stdout is piped (non-TTY), GPC auto-detects and emits JSON by default without the flag. See the JSON Output Contract for the full schema.
Semantic exit codes
| Code | Meaning | Agent action |
|---|---|---|
| 0 | Success | Proceed |
| 1 | Generic error | Show stderr, halt |
| 2 | Usage error | Correct the flag, retry |
| 3 | Auth error | Prompt user to re-auth, halt |
| 4 | API error | Back off, retry with exponential backoff |
| 5 | Network error | Retry after a delay |
| 6 | Threshold breach | Block the release, surface the metric |
Full catalog at Exit Codes.
LLM-ready prompts and direct translation
Two paths for multilingual release notes, both intentional:
--format prompt— emits a ready-to-paste LLM prompt with 500-char constraints, voice rules, and source text. The binary doesn't call an LLM on this path; the agent runs the inference itself. Ship the prompt, not the model.--ai(v0.9.63+) — GPC calls the LLM for you via your own key. Auto-detectsAI_GATEWAY_API_KEY→ANTHROPIC_API_KEY→OPENAI_API_KEY→GOOGLE_GENERATIVE_AI_API_KEY. All AI SDK deps are lazy-loaded; running without--aiimports none of them.
# Prompt-only (agent-executes inference)
gpc changelog generate \
--target play-store \
--locales auto \
--format prompt > prompt.txt
# GPC-executes inference (BYO key)
gpc changelog generate \
--target play-store \
--locales auto \
--ai2
3
4
5
6
7
8
9
10
11
The dependency-free default is intentional — agents that want full control over model choice stay on --format prompt. Agents that want a single-shot command use --ai with whichever provider key they already have.
Example prompts
These prompts work across both skill packs, assuming both are installed:
Scaffold a new Compose project called Notes, then ship a 10% rollout to production after checking vitals.
The agent will:
- Trigger Google's Compose skill →
android create --template compose-tutorial --name Notes - Trigger Google's SDK skill →
android sdk install --platform 34 - Trigger Google's run skill →
android run - Trigger
gpc-preflight→gpc preflight <aab> - Trigger
gpc-vitals-monitoring→gpc vitals crashes --days 7 --json - Trigger
gpc-release-flow→gpc releases uploadthengpc releases promote --rollout 0.1
Generate Play Store release notes in English, French, and Japanese from the last 10 commits.
Triggers gpc-release-flow, then either of:
# Single-shot: GPC runs the translation via the agent's (or user's) LLM key
gpc changelog generate \
--target play-store \
--locales en-US,fr-FR,ja-JP \
--ai
# Or: emit a prompt for the agent to execute itself (full model-choice control)
gpc changelog generate \
--target play-store \
--locales en-US,fr-FR,ja-JP \
--format prompt2
3
4
5
6
7
8
9
10
11
GPC renders the constraints (500 code points per locale, voice rules, "don't translate CLI flags"). --ai calls the LLM for you via whichever provider key is set in env; --format prompt hands the agent a ready-to-execute prompt.
Further reading
- The Two Halves of Agent-First Android — longer thesis on the build/publish split, SKILL.md as the interop layer, and why the two CLIs compose rather than compete.
Related
- Installation — get GPC installed
- Quick Start — first commands
- Changelog Generation — release notes from git
- Multilingual Release Notes — per-locale Play Store notes
- JSON Output Contract — full schema for agent consumption
- Exit Codes — semantic error handling
- GPC Skills on GitHub — skill pack source
- Android Skills on GitHub — Google's official app-development skills
