Loading...
Loading...
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 skill4agent add tamtom/gplay-cli-skills gplay-gradle-build./gradlew bundleReleaseapp/build/outputs/bundle/release/app-release.aab./gradlew assembleReleaseapp/build/outputs/apk/release/app-release.apkandroid {
signingConfigs {
release {
storeFile file(System.getenv("KEYSTORE_FILE") ?: "release.keystore")
storePassword System.getenv("KEYSTORE_PASSWORD")
keyAlias System.getenv("KEY_ALIAS")
keyPassword System.getenv("KEY_PASSWORD")
}
}
buildTypes {
release {
signingConfig signingConfigs.release
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}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'
}
}app/build/outputs/mapping/release/mapping.txtgplay 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