Install
$ agentstack add skill-ampli-group-agentic-mobile-blueprint-google-play-setup ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Google Play Setup
Prerequisites
- Google Play Console account ($25 one-time fee) at play.google.com/console
- EAS CLI:
npm install -g eas-cli && eas login
Required reading — Expo official guides:
Step 1: Configure Android Package Name
Set the package name in app.json before the first build — it cannot be changed after the app is published:
{
"expo": {
"android": {
"package": "com.yourorg.appname"
}
}
}
Use reverse domain notation. Must be globally unique on Play Store.
Step 2: Create Play Console App Listing
- Go to play.google.com/console → Create app
- Fill in:
- App name: Display name
- Default language: English
- App or game: App
- Free or paid: your choice
- Accept policies → Create app
Note the Application ID from the URL: play.google.com/console/u/0/developers/.../app/XXXXXXXXXXXXXXXXXX/
Step 3: Complete App Setup Requirements
Google requires these before you can upload any build:
App content declarations (Play Console → Policy → App content):
- [ ] Privacy Policy URL
- [ ] Ads declaration
- [ ] Content rating questionnaire (takes ~2 min)
- [ ] Target audience
- [ ] Data safety form (what data you collect — be honest)
Store listing (Play Console → Grow → Store presence → Main store listing):
- [ ] Short description (80 chars)
- [ ] Full description (4000 chars)
- [ ] Screenshots: Phone (minimum 2), Tablet optional
- [ ] Feature graphic: 1024×500 PNG
- [ ] App icon: 512×512 PNG
None of this blocks the first upload but it does block publishing to users.
"Finish setting up your app" banner — Play Console shows this dashboard banner after app creation. It lists required items before you can publish. Work through them in order — all must be green before the app goes live. This is separate from the store listing itself.
Step 4: Configure EAS Credentials
cd mobile
eas credentials
Select Android → production → Let EAS manage the keystore (recommended).
EAS generates and stores the Android signing keystore. Never lose this keystore — you cannot update your app without it. EAS stores it encrypted.
To verify:
eas credentials --platform android
Step 5: First Build and Manual Upload
Google requires the very first AAB to be uploaded manually via Play Console. Subsequent uploads work via eas submit.
# Build the AAB
cd mobile
eas build --platform android --profile production
# Download the AAB when done
eas build:list --platform android
# Click the download link from the output, or:
eas build:download --platform android --latest
Upload manually:
- Play Console → Release → Internal testing → Create new release
- Upload the downloaded
.aabfile - Add release notes → Save → Review release → Start rollout
After this first manual upload, eas submit will work for all future releases.
Sharing the internal testing link — Unlike TestFlight (email invites), Google Play internal testing uses a shareable opt-in link. After rollout:
- Play Console → Testing → Internal testing → Testers tab
- Copy the opt-in URL and send it to testers
- Testers open the link on their Android device and click "Accept invitation"
They won't find the app by searching — they must use the link.
Step 6: Service Account for CI/CD
Required for non-interactive submissions from GitHub Actions.
Create service account:
- Play Console → Setup → API access
- Click Link to a Google Cloud Project (or create new)
- In Google Cloud Console: IAM & Admin → Service Accounts → Create Service Account
- Name:
eas-submit - Role: Skip (add via Play Console)
- Click the service account → Keys → Add Key → Create new key → JSON
- Download the JSON file
Grant Play Console permissions:
- Back in Play Console → Setup → API access
- Find the service account → Manage Play Console permissions
- Grant: Release manager (minimum) or Admin
- Apply and save
Add to EAS:
# Option A: Store in eas.json (committed, less secure)
# Point eas.json submit profile to the file path
# Option B: Upload to EAS secrets (recommended for CI)
eas secret:create --scope project --name GOOGLE_SERVICE_ACCOUNT_KEY --value "$(cat service-account.json)"
Or store locally and reference in eas.json:
{
"submit": {
"production": {
"android": {
"serviceAccountKeyPath": "./google-services.json",
"track": "internal",
"releaseStatus": "draft"
}
}
}
}
Step 7: Submit via EAS
After the first manual upload and service account setup:
eas submit --platform android --profile production --latest
This uploads to the internal testing track with draft status by default. You manually promote to production in Play Console.
Track Strategy
| Track | Who sees it | When to use | |-------|-------------|-------------| | Internal | Up to 100 testers (your team) | Every build for QA | | Closed testing (Alpha) | Invited users | Beta before launch | | Open testing (Beta) | Anyone who opts in | Public beta | | Production | All users | Launch |
Start with Internal track. Promote builds through tracks in Play Console — no rebuild needed.
Gotchas
"Package name already taken" — The package name is globally unique. Use a specific reverse domain.
Upload rejected: "Version code already used" — Always use appVersionSource: "remote" + autoIncrement: true in eas.json.
"You need to upload an AAB first" — You must manually upload the very first build. eas submit will fail until then.
Service account upload fails with 403 — The service account needs Release manager or Admin permissions in Play Console (not just Google Cloud IAM). Check Play Console → API access → service account permissions.
"App not found" during submit — The applicationId in eas.json must exactly match the package name in app.json and Play Console.
Data safety form blocks publishing — Fill it in Play Console → Policy → App content → Data safety. Must declare all data collected (Supabase auth = email/user ID, PostHog = device info).
First submission review takes 3–7 days — Build your buffer into the timeline. Subsequent updates usually review in hours.
Camera/microphone/location access requires a public Privacy Policy URL — Google will reject or unpublish apps that request sensitive permissions without a publicly accessible privacy policy. The URL must be reachable without login.
Data safety form blocks publishing — Fill it in Play Console → Policy → App content → Data safety. Must declare all data collected (Supabase auth = email/user ID, PostHog = device info, camera = photos if saved).
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: Ampli-Group
- Source: Ampli-Group/agentic-mobile-blueprint
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.