β¨ Why Developers Love GPC
| π€ The Old Way |
π The GPC Way |
| Open browser, navigate menus, wait... |
gpc bundles upload --track internal |
| Copy-paste release notes manually |
gpc listings sync --dir ./metadata/ |
| Check reviews one by one |
gpc reviews list --min-rating 1 | jq |
| Complex CI/CD setup |
Single binary + env vars |
| "Is it uploaded yet?" |
Instant feedback |
Inspired by App Store Connect CLI β the same philosophy, now for Android.
π¦ Installation
# Homebrew (recommended)
brew tap AndroidPoet/tap && brew install playconsole-cli
# Install script (Linux/macOS)
curl -fsSL https://raw.githubusercontent.com/AndroidPoet/playconsole-cli/main/install.sh | bash
# Build from source
git clone https://github.com/AndroidPoet/playconsole-cli.git
cd playconsole-cli && make build
After install, you can use either playconsole-cli or the shorter alias gpc.
β‘ Quick Start
1. Create a service account (Google Cloud Console)
mkdir -p ~/.config/gpc
mv ~/Downloads/your-key.json ~/.config/gpc/service-account.json
chmod 600 ~/.config/gpc/service-account.json
2. Enable the API β Enable Google Play Android Developer API
3. Grant access in Play Console API Settings
4. Configure & verify
gpc auth login --credentials ~/.config/gpc/service-account.json
gpc apps list # See your apps
5. Deploy! π
gpc bundles upload --file app.aab --track internal
gpc tracks promote --from internal --to production --rollout 10
π― Commands
π€ Release Management
gpc bundles upload --file app.aab --track internal # Upload
gpc tracks list # List tracks
gpc tracks promote --from internal --to beta # Promote
gpc tracks update --track production --rollout 50 # Staged rollout
gpc tracks halt --track production # Emergency halt
πͺ Store Presence
gpc listings sync --dir ./metadata/ # Sync all listings
gpc listings update --locale en-US --title "My App" # Update listing
gpc images sync --dir ./screenshots/ # Sync screenshots
β Reviews
gpc reviews list --min-rating 1 --max-rating 2 # Negative reviews
gpc reviews reply --review-id "gp:..." --text "Thanks!"
gpc reviews list | jq '[.[] | select(.rating == 5)]' # Filter with jq
π° Monetization
gpc products list # In-app products
gpc subscriptions list # Subscriptions
gpc purchases verify --token "..." --product-id premium
π§ͺ Testing
gpc testing internal-sharing upload --file app.aab # Instant test link
gpc testing testers add --track beta --email "dev@company.com"
π₯ Team
gpc users list
gpc users grant --email "dev@company.com" --role releaseManager
π CI/CD Integration
GitHub Actions
name: Deploy to Play Store
on:
push:
tags: ['v*']
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Build
run: ./gradlew bundleRelease
- name: Install GPC
run: |
curl -fsSL https://raw.githubusercontent.com/AndroidPoet/playconsole-cli/main/install.sh | bash
echo "$HOME/.local/bin" >> $GITHUB_PATH
- name: Deploy
env:
GPC_CREDENTIALS_B64: ${{ secrets.PLAY_CREDENTIALS }}
GPC_PACKAGE: com.yourcompany.app
run: |
gpc bundles upload --file app/build/outputs/bundle/release/app-release.aab --track internal
gpc tracks promote --from internal --to production --rollout 10
Encode Credentials for CI
base64 < service-account.json | pbcopy # macOS
base64 < service-account.json | xclip # Linux
# Add as GPC_CREDENTIALS_B64 secret
βοΈ Environment Variables
| Variable |
Description |
GPC_CREDENTIALS_PATH |
Path to service account JSON |
GPC_CREDENTIALS_B64 |
Base64-encoded credentials (CI) |
GPC_PACKAGE |
Default package name |
GPC_PROFILE |
Auth profile to use |
GPC_OUTPUT |
Format: json | table | tsv |
gpc tracks list # JSON (default, for scripting)
gpc tracks list --pretty # Pretty JSON
gpc tracks list --output table # ASCII table
gpc tracks list --output tsv # Tab-separated
π§ Design Philosophy
- Explicit over clever β No magic, clear intent
- JSON-first β Pipe to jq, grep, or your scripts
- No prompts β Works in CI without interaction
- Clean exit codes β 0 success, 1 error, 2 validation
π Security
- Credentials stored with
0600 permissions
- Service account keys never logged
- Base64 encoding for CI/CD secrets
- No credentials in command history
π Wall of Apps
Apps shipped using Play Console CLI:
π Add your app to the Wall!
Using GPC to ship your app? Get featured here!
- Fork this repo
- Edit
docs/wall-of-apps.json
- Add your app:
{
"app": "Your App Name",
"link": "https://play.google.com/store/apps/details?id=your.package",
"creator": "YourGitHubUsername"
}
- Submit a PR!
π€ Contributing
PRs welcome! Please open an issue first to discuss major changes.
make build # Build
make test # Test
make lint # Lint
π License
MIT
β¬ Back to top
Not affiliated with Google. Google Play is a trademark of Google LLC.