关于 gplay-gradle-build
面向准备将 Android 应用发布到 Google Play 的开发者,提供 Gradle 构建指导。内容涵盖签名、版本管理、构建变体及发布检查。
主要功能
- 01构建发布版 AAB 或 APK
- 02配置发布签名
- 03管理应用版本号
- 04构建产品风味变体
- 05配置 R8 并上传映射文件
适用场景
- 01准备 Android 应用的 Play Store 发布
- 02在 CI/CD 中构建签名产物
- 03生成指定风味的发布包
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ tamtom/ gplay-cli-skills --skill gplay-gradle-build安装后在 Claude Code 中输入/gplay-gradle-build确认已加载。
详细介绍
Google Play 的 Gradle 构建
当你需要在上传到 Play Store 之前构建 Android 应用时,请使用此技能。
构建类型
App Bundle(AAB)- 推荐
Google Play 要求新应用使用 App Bundle:
./gradlew bundleRelease
输出:app/build/outputs/bundle/release/app-release.aab
APK - 旧版
适用于不使用 App Bundle 的应用:
./gradlew assembleRelease
输出:app/build/outputs/apk/release/app-release.apk
签名配置
build.gradle(应用级)
android {
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 bundleRelease
版本管理
gradle.properties
VERSION_NAME=1.2.3
VERSION_CODE=123
build.gradle
android {
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 bundleRelease
ProGuard/R8 配置
启用 R8(AGP 3.4+ 中默认启用)
buildTypes {
release {
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
生成映射文件
映射文件位置:app/build/outputs/mapping/release/mapping.txt
上传到 Play Console 以便对崩溃堆栈进行符号化处理:
gplay deobfuscation upload \
--package com.example.app \
--edit $EDIT_ID \
--apk-version 123 \
--type proguard \
--file app/build/outputs/mapping/release/mapping.txt
构建变体
产品风味
android {
flavorDimensions "version"
productFlavors {
free {
dimension "version"
applicationIdSuffix ".free"
}
paid {
dimension "version"
}
}
}
构建指定风味
./gradlew bundleFreeRelease
./gradlew bundlePaidRelease
CI/CD 构建
GitHub Actions 示例
- 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
使用指定的 SDK 版本构建
./gradlew bundleRelease -PminSdkVersion=21 -PtargetSdkVersion=34
不运行测试进行构建
./gradlew bundleRelease -x test -x lint
构建多个变体
./gradlew bundle # Builds all variants
故障排除
构建因签名错误而失败
# Verify keystore
keytool -list -v -keystore release.keystore
检查 AAB 内容
bundletool build-apks \
--bundle=app-release.aab \
--output=output.apks \
--mode=universal
unzip output.apks
验证版本代码
./gradlew tasks --all | grep Version
最佳实践
- 切勿提交密钥库 - 将其存储在安全位置
- 使用环境变量存储凭据
- 为发布构建启用 ProGuard/R8
- 每次发布后上传映射文件
- 每次构建都增加版本代码
- 上传前测试发布构建
- 尽可能使用 App Bundle(AAB)而不是 APK
评论
支持 Markdown