gplay-submission-checks

Pre-submission validation for Google Play releases covering metadata, screenshots, bundle integrity, data safety, and policy compliance. Use when preparing a release to avoid rejections and catch issues before submitting.

By tamtom · 398 installs

npx skills add tamtom/gplay-cli-skills --skill gplay-submission-checks

Source repository · Upstream listing

Google Play Submission Checks Use this skill to validate everything before submitting a release to Google Play, reducing rejections and failed edits. Preconditions Auth configured ( gplay auth login or GPLAY SERVICE ACCOUNT env var). Package name known ( package or GPLAY PACKAGE ). AAB/APK built and signed. Service account has at least "Release Manager" permission. Prefer the First Class Commands The CLI has canonical, purpose built commands. Reach for these before hand scripting individual validators: gplay validate package <pkg — the canonical release readiness report. Combines local artifact/metadata/screenshot/release note checks with remote track and listing state and Console only follow up items. Use bundle , listings dir , screenshots dir , track , and strict (treat warnings as failures) to scope it. gplay preflight file <app.aab — offline AAB/APK compliance and hygiene. Fully decodes AndroidManifest.xml (binary AXML for APKs, aapt2 protobuf for App Bundles) and runs nine scanners: manifest , permissions , native libs , metadata , secrets , billing , privacy , policy , size . No API calls and no credentials. Exit codes: 0 clean, 1 findings at/above fail on . See the gplay preflight skill for what each scanner catches, how to read the findings, and CI gating patterns. gplay checks upload — Google Checks compliance analysis as a CI gate. Use severity threshold PRIORITY to fail the pipeline on high priority failed checks before release. gplay publish track strict — preflight + publish in one step. Builds the readiness report, stops on blocking issues (and warnings with strict ), then runs the release workflow only if preflight passes. The detailed per artifact checks below remain useful for narrowing down a failure or for CI steps that gate on one concern at a time. Pre submission Checklist 1. Validate Bundle Integrity Checks: File exists and is readable File has .aab extension Valid ZIP archive structure Contains required bundle components (manifest, resources, dex) If using APK instead: 2. Validate Store Listing Metadata Checks: Title : max 30 characters Short description : max 80 characters Full description : max 4000 characters Required fields present Valid UTF 8 encoding Validate a specific locale: For JSON format metadata: 3. Validate Screenshots Checks: Minimum 2 screenshots per device type Maximum 8 screenshots per device type Valid image formats (PNG, JPEG) Files are readable Validate for a specific locale: 4. Verify Existing Listings on Play Store Compare local metadata against what is live: Check all configured locales: 5. Data Safety Declaration Ensure the data safety form is complete. Missing or inaccurate data safety declarations are a common rejection reason. 6. Version Code Check The version code must be strictly higher than all previous releases on every track. Check current track status: Get details for a specific track: 7. Deobfuscation / Mapping File Upload ProGuard/R8 mapping files so crash reports in Play Console are readable. This command is edit scoped (needs edit ) and the version flag is apk version , not version code : Without mapping files, crash stack traces in Android Vitals will be obfuscated and unusable. 8. Dry Run the Release The safest pre submission check. Performs the full release pipeline without committing: This will: Create an edit Upload the bundle Configure the track Validate the edit (catches API level errors) Discard the edit without committing If the dry run succeeds, the real release will succeed. 9. Edit Validation (Manual Sequence) When using the manual edit workflow, always validate before committing: Content Policy Compliance Target API Level Google Play requires apps to target a recent Android API level, and raises the floor roughly every August to "latest release minus one". Both new apps and updates are affected; builds below the floor are rejected at upload. Check the build without guessing at the current number: Fix it in build.gradle / build.gradle.kts : Do not tell the user a specific required API level from memory — read it from the policy scanner output or from Play's published requirement. Permissions Declarations Sensitive permissions require justification in the Play Console: ACCESS FINE LOCATION / ACCESS BACKGROUND LOCATION READ CONTACTS , READ CALL LOG , READ SMS CAMERA , RECORD AUDIO REQUEST INSTALL PACKAGES QUERY ALL PACKAGES Remove any permissions your app does not actually need. Unused sensitive permissions are a top rejection reason. Data Safety Form All apps must have a complete data safety section. Common data types to declare: Personal info (name, email, phone) Location (approximate, precise) Financial info (purchase history) App activity (in app search, other user generated content) Device identifiers (advertising ID) App Content Ratings Ensure your content rating questionnaire is completed in Play Console. Missing ratings block distribution. Screenshot Requirements by Device Type Device Type Image Type Min Max Min Resolution Phone phoneScreenshots 2 8 320px (min side) 7 inch Tablet sevenInchScreenshots 0 8 320px (min side) 10 inch Tablet tenInchScreenshots 0 8 320px (min side) Android TV tvScreenshots 0 8 1280x720 Wear OS wearScreenshots 0 8 320px (min side) Additional image assets: Asset Type Required Feature Graphic featureGraphic Yes (for featuring) Promo Graphic promoGraphic No Icon icon Set via Play Console TV Banner tvBanner Required for TV apps Common Rejection Reasons and Fixes 1. "Version code already exists" Cause : The version code in your bundle matches an existing release. Fix : Increment versionCode in build.gradle and rebuild. 2. "APK/Bundle targets an SDK below the required level" Cause : targetSdkVersion is too low. Fix : Update targetSdkVersion to 34 or higher and rebuild. 3. "Data safety form incomplete" Cause : The data safety declaration is missing or incomplete. Fix : Complete the data safety form in Play Console or update via CLI: 4. "Screenshots missing for required device type" Cause : Phone screenshots are required for all apps. Fix : Add at least 2 phone screenshots: 5. "Release notes missing for default locale" Cause : No "What's New" text for the default language. Fix : Include release notes in the release command: 6. "Signing key mismatch" Cause : The bundle is signed with a different key than what Play Console expects. Fix : Use the same upload key configured in Play App Signing. Check your keystore configuration. 7. "Deobfuscation file too large" Cause : Mapping file exceeds 300 MB limit. Fix : Strip unused mappings or compress the file. Pre launch Report Google Play runs automated tests on your app before review (pre launch report). Common issues surfaced: Crashes on launch : App crashes on one or more test devices Security vulnerabilities : Known CVEs in dependencies Accessibility issues : Missing content descriptions, small touch targets Performance warnings : Slow startup, excessive wake locks Check pre launch reports in Play Console after uploading to any track. Address critical issues before promoting to production. Full Pre submission Pipeline CI/CD Integration Add these checks to your CI pipeline to catch issues before they reach Play Console: Agent Behavior Prefer the first class commands: gplay validate (readiness report), gplay preflight (offline), gplay checks upload (Checks gate), and gplay publish track strict (preflight + publish) over hand scripting. Always run gplay validate before attempting a release. Use dry run (or publish track strict ) as the final gate before real releases. gplay deobfuscation upload is edit scoped: use edit and apk version (not version code ), then commit the edit. Always confirm exact flags with help before running commands. Use output table for human readable validation output. When multiple validation steps fail, report all failures together rather than stopping at the first one. Check version code conflicts by listing tracks before releasing. Remind the user about data safety declarations if they have not mentioned them. Notes gplay validate commands run locally and do not require API calls. gplay release dry run creates a real edit session but discards it after validation. gplay edits validate is the server side equivalent, catching issues that local validation cannot. Always use help to verify flags for the exact command. Use output table for human readable output; default is JSON.