OverviewHistoryStatsSecurity
npx skills add ...
Documentation
SKILL.md
npx skills add tamtom/gplay-cli-skills --skill gplay-gradle-build
Build, sign, and package Android apps with Gradle before uploading to Google Play. Use when asked to create an APK or AAB, configure signing, or set up build pipelines.
npx skills add tamtom/gplay-cli-skills --skill gplay-gradle-build
Use this skill when you need to build an Android app before uploading to Play Store.
App Bundles are required for new apps on Google Play:
Output: app/build/outputs/bundle/release/app-release.aab
For apps not using bundles:
Output: app/build/outputs/apk/release/app-release.apk
Mapping file location: app/build/outputs/mapping/release/mapping.txt
Upload to Play Console for crash symbolication:
export KEYSTORE_FILE=/path/to/release.keystore
export KEYSTORE_PASSWORD=your_keystore_password
export KEY_ALIAS=your_key_alias
export KEY_PASSWORD=your_key_password
./gradlew bundleReleaseVERSION_NAME=1.2.3
VERSION_CODE=123android {
defaultConfig {
versionCode project.property('VERSION_CODE').toInteger()
versionName project.property('VERSION_NAME')
}
}# Read current version
CURRENT_VERSION=$(grep VERSION_CODE gradle.properties | cut -d'=' -f2)
NEW_VERSION=$((CURRENT_VERSION + 1))
# Update gradle.properties
sed -i "" "s/VERSION_CODE=$CURRENT_VERSION/VERSION_CODE=$NEW_VERSION/" gradle.properties
# Build
./gradlew bundleReleasebuildTypes {
release {
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}gplay deobfuscation upload \
--package com.example.app \
--edit $EDIT_ID \
--apk-version 123 \
--type proguard \
--file app/build/outputs/mapping/release/mapping.txtandroid {
flavorDimensions "version"
productFlavors {
free {
dimension "version"
applicationIdSuffix ".free"
}
paid {
dimension "version"
}
}
}./gradlew bundleFreeRelease
./gradlew bundlePaidRelease- name: Build Release AAB
run: |
echo "${{ secrets.KEYSTORE_BASE64 }}" | base64 -d > release.keystore
export KEYSTORE_FILE=release.keystore
export KEYSTORE_PASSWORD="${{ secrets.KEYSTORE_PASSWORD }}"
export KEY_ALIAS="${{ secrets.KEY_ALIAS }}"
export KEY_PASSWORD="${{ secrets.KEY_PASSWORD }}"
./gradlew bundleRelease
- name: Upload to Play Store
env:
GPLAY_SERVICE_ACCOUNT: ${{ secrets.PLAY_SERVICE_ACCOUNT }}
run: |
gplay release \
--package com.example.app \
--track internal \
--bundle app/build/outputs/bundle/release/app-release.aab./gradlew clean bundleRelease./gradlew bundleRelease -PminSdkVersion=21 -PtargetSdkVersion=34./gradlew bundleRelease -x test -x lint./gradlew bundle # Builds all variants# Verify keystore
keytool -list -v -keystore release.keystorebundletool build-apks \
--bundle=app-release.aab \
--output=output.apks \
--mode=universal
unzip output.apks./gradlew tasks --all | grep Version