Android Release Readiness Workflow
Purpose
Check whether an Android app or library is ready for release without starting a publish workflow by default.
The practical decision is which version, signing, packaging, policy, changelog, and automation surfaces must be verified before a human or repo-owned release system publishes artifacts.
Source Check
Use repo-local Gradle files, release docs, CI workflows, Fastlane files, checked-out automation sources, and Dash.app docsets opportunistically for exact Gradle or Java questions. Use official documentation as authority for Android-specific release, signing, privacy, permissions, and Play behavior:
Translate documentation into concrete release files, commands, artifacts, and gates.
Inspection Workflow
- Identify release ownership:
- app module
- release build type
- product flavors
- version code and version name
- changelog or release notes
- CI release workflow
- Fastlane, Gradle Play Publisher, Play Developer Publishing API client, or custom scripts
- Inspect signing boundaries:
- signing config names
- keystore references
- environment variable names
- secret-handling docs
- local placeholder configs
- Inspect packaging:
- app bundle tasks
- APK tasks
- R8/ProGuard files
- mapping output expectations
- native debug symbols if present
- Inspect policy-sensitive surfaces:
- permissions
- exported components
- privacy disclosures
- target SDK requirements
- Play delivery tracks and rollout docs
- Route automation:
- identify the repo-owned release command or CI job
- explain required credentials or approvals
- stop before publish unless the user explicitly requested the publish action
Command Selection
Prefer dry, local, or artifact-building checks first:
./gradlew :app:lintRelease
./gradlew :app:assembleRelease
./gradlew :app:bundleRelease
Use repository-documented release commands when they exist. Treat commands that upload, promote, submit for review, or publish as explicit approval-gated actions.
Automation Routing
When a repository already owns release automation, report:
- automation owner: Gradle, CI, Fastlane, Play Developer Publishing API client, or custom script
- trigger: local command, CI workflow dispatch, tag, branch, or manual approval
- credentials: environment variable names or secret names, without printing secret values
- artifacts: AAB, APK, mapping file, native symbols, changelog, or release notes
- publish boundary: the exact command or click that would upload, promote, or release
Output Shape
Return:
Release surface: app or library module, variant, flavor, and artifact type.
Versioning: version code, version name, changelog, and policy status.
Signing: signing config, secret boundary, and local-safe checks.
Packaging: AAB, APK, R8/ProGuard, mapping, and symbol outputs.
Automation route: Gradle, CI, Fastlane, Play API, custom script, or none found.
Validation path: commands run or recommended.
Publish boundary: what was deliberately not run without explicit approval.
Guardrails
- Do not publish, upload, promote, submit for review, or change Play tracks by default.
- Do not print keystore passwords, service account keys, tokens, or signing secrets.
- Do not invent release automation when the repo has no release owner.
- Do not bump version code, version name, target SDK, or signing config without explaining the release impact.
- Do not remove R8/ProGuard rules or mapping outputs casually.
1---2name: release-readiness-workflow3description: Check Android release readiness without publishing by default, including versionCode and versionName, signing and keystore boundaries, release build types, R8/ProGuard, mapping outputs, app bundles, APKs, Play delivery handoffs, privacy, permissions, changelogs, and repository-owned release automation routing through Gradle, CI, Fastlane, or Play Developer Publishing API clients.4license: Apache-2.05---67# Android Release Readiness Workflow89## Purpose1011Check whether an Android app or library is ready for release without starting a publish workflow by default.1213The practical decision is which version, signing, packaging, policy, changelog, and automation surfaces must be verified before a human or repo-owned release system publishes artifacts.1415## Source Check1617Use repo-local Gradle files, release docs, CI workflows, Fastlane files, checked-out automation sources, and Dash.app docsets opportunistically for exact Gradle or Java questions. Use official documentation as authority for Android-specific release, signing, privacy, permissions, and Play behavior:1819- [Prepare and roll out a release](https://developer.android.com/studio/publish)20- [Android App Bundles](https://developer.android.com/guide/app-bundle)21- [Sign your app](https://developer.android.com/studio/publish/app-signing)22- [Shrink, obfuscate, and optimize your app](https://developer.android.com/build/shrink-code)23- [Play Developer API](https://developers.google.com/android-publisher)24- [Fastlane supply documentation](https://docs.fastlane.tools/actions/supply/)2526Translate documentation into concrete release files, commands, artifacts, and gates.2728## Inspection Workflow29301. Identify release ownership:31 - app module32 - release build type33 - product flavors34 - version code and version name35 - changelog or release notes36 - CI release workflow37 - Fastlane, Gradle Play Publisher, Play Developer Publishing API client, or custom scripts382. Inspect signing boundaries:39 - signing config names40 - keystore references41 - environment variable names42 - secret-handling docs43 - local placeholder configs443. Inspect packaging:45 - app bundle tasks46 - APK tasks47 - R8/ProGuard files48 - mapping output expectations49 - native debug symbols if present504. Inspect policy-sensitive surfaces:51 - permissions52 - exported components53 - privacy disclosures54 - target SDK requirements55 - Play delivery tracks and rollout docs565. Route automation:57 - identify the repo-owned release command or CI job58 - explain required credentials or approvals59 - stop before publish unless the user explicitly requested the publish action6061## Command Selection6263Prefer dry, local, or artifact-building checks first:6465```bash66./gradlew :app:lintRelease67./gradlew :app:assembleRelease68./gradlew :app:bundleRelease69```7071Use repository-documented release commands when they exist. Treat commands that upload, promote, submit for review, or publish as explicit approval-gated actions.7273## Automation Routing7475When a repository already owns release automation, report:7677- automation owner: Gradle, CI, Fastlane, Play Developer Publishing API client, or custom script78- trigger: local command, CI workflow dispatch, tag, branch, or manual approval79- credentials: environment variable names or secret names, without printing secret values80- artifacts: AAB, APK, mapping file, native symbols, changelog, or release notes81- publish boundary: the exact command or click that would upload, promote, or release8283## Output Shape8485Return:86871. `Release surface`: app or library module, variant, flavor, and artifact type.882. `Versioning`: version code, version name, changelog, and policy status.893. `Signing`: signing config, secret boundary, and local-safe checks.904. `Packaging`: AAB, APK, R8/ProGuard, mapping, and symbol outputs.915. `Automation route`: Gradle, CI, Fastlane, Play API, custom script, or none found.926. `Validation path`: commands run or recommended.937. `Publish boundary`: what was deliberately not run without explicit approval.9495## Guardrails9697- Do not publish, upload, promote, submit for review, or change Play tracks by default.98- Do not print keystore passwords, service account keys, tokens, or signing secrets.99- Do not invent release automation when the repo has no release owner.100- Do not bump version code, version name, target SDK, or signing config without explaining the release impact.101- Do not remove R8/ProGuard rules or mapping outputs casually.