mcpField
G
gplay-gradle-build

gplay-gradle-build

github.com/tamtom开发52413 次安装13 周前更新
代码仓库

关于 gplay-gradle-build

面向准备将 Android 应用发布到 Google Play 的开发者,提供 Gradle 构建指导。内容涵盖签名、版本管理、构建变体及发布检查。

主要功能

  1. 01构建发布版 AAB 或 APK
  2. 02配置发布签名
  3. 03管理应用版本号
  4. 04构建产品风味变体
  5. 05配置 R8 并上传映射文件

适用场景

  1. 01准备 Android 应用的 Play Store 发布
  2. 02在 CI/CD 中构建签名产物
  3. 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

最佳实践

  1. 切勿提交密钥库 - 将其存储在安全位置
  2. 使用环境变量存储凭据
  3. 为发布构建启用 ProGuard/R8
  4. 每次发布后上传映射文件
  5. 每次构建都增加版本代码
  6. 上传前测试发布构建
  7. 尽可能使用 App Bundle(AAB)而不是 APK

评论

支持 Markdown