How to Deploy an Android App to Google Play
Build, sign, and submit to the Play Store from Claude Code — no Android Studio required.
What you're building
A Kotlin Android app submitted to the Google Play internal test track, with PromptShip handling the Gradle build, APK signing, and Play Store upload automatically.
Prerequisites
- Android repo on GitHub with a standard Gradle project structure
- Google Play Developer account
- App created in Play Console (can have zero releases so far)
No Dockerfile needed. PromptShip detects Android projects automatically and runs
./gradlew assembleRelease in a managed build environment.
Step 1: Create and configure the app
create_app(
name: "my-android-app",
github_repo: "github.com/me/my-android-app"
)
configure_app(
app_name: "my-android-app",
app_type: "android",
android_package_name: "com.example.myapp"
)
Step 2: Add a Google Service Account
PromptShip needs API access to upload to Google Play on your behalf.
- In Play Console → Setup → API access → link to a Google Cloud project (or create one)
- In Google Cloud Console → IAM & Admin → Service Accounts → Create service account
- Grant the service account the Service Account User role in Cloud Console
- Back in Play Console → Grant the service account the Release manager role
- In Cloud Console → Service Accounts → Keys → Create new key → choose JSON → download
- Upload the key to PromptShip:
set_secret(
app_name: "my-android-app",
environment: "prod",
key: "GOOGLE_SERVICE_ACCOUNT_JSON",
value: "<paste contents of the downloaded JSON file>"
)
Step 3: Submit to Google Play
submit_app(
app_name: "my-android-app",
environment: "prod",
branch: "main",
play_track: "internal"
)
PromptShip will clone your repo, run ./gradlew assembleRelease, sign the APK with a managed keystore, and upload it to the internal test track. Check status with:
get_submit_app_status(app_name: "my-android-app")
Keystore management
PromptShip auto-generates a signing keystore on the first submission and reuses it for all future builds. Download it anytime as a base64-encoded PKCS12:
get_android_keystore(app_name: "my-android-app", environment: "prod")
To use your own keystore, set these secrets before submitting:
set_secret(app_name: "my-android-app", environment: "prod", key: "ANDROID_KEYSTORE_B64", value: "<base64>")
set_secret(app_name: "my-android-app", environment: "prod", key: "ANDROID_KEYSTORE_PASSWORD", value: "<password>")
set_secret(app_name: "my-android-app", environment: "prod", key: "ANDROID_KEYSTORE_KEY_ALIAS", value: "<alias>")
