谷歌应用商店打包改动

  • 谷歌需要 aab 包来上架。
  • 当前版本为 1.6.6 1606, 渠道为 googleplay
  • 目前没有使用加固, 直接上传 aab 包到谷歌应用商店
  • 目前使用的是谷歌的签名服务,所以没有使用自己的签名文件
  • Google Play 账号 RDP:
    • ip: google.zhuishujia.org:25600

配置改动

app/build.gradle

  • 主要是用来同步 aab 打包的命名和位置以便和 apk 打包的命名和位置一致, 方便后续脚本的使用
gradle.taskGraph.afterTask { Task task ->
    if (task.name.startsWith('bundle') && task.name.endsWith('Release') && task.state.failure == null) {
        def time = releaseDay()
        def variantName = task.name.replace('bundle', '').replace('Release', '').toLowerCase()

        // 获取对应的 flavor 配置
        def flavorName = ""
        def versionName = ""
        def versionCode = 0

        android.productFlavors.each { flavor ->
            if (variantName.startsWith(flavor.name.toLowerCase())) {
                flavorName = flavor.name
                versionName = flavor.versionName
                versionCode = flavor.versionCode
            }
        }

        if (flavorName) {
            def bundleDir = "${buildDir}/outputs/bundle/${variantName}Release"
            def bundleFile = file("${bundleDir}/app-${flavorName}-release.aab")

            if (bundleFile.exists()) {
                // 确保目标目录存在
                def targetDir = file("${buildDir}/outputs/apk/${flavorName}/release")
                targetDir.mkdirs()

                def newBundleFile = file("${targetDir}/${flavorName}Apk_v${versionName}_${UM_APP_CHANNEL}_${time}.aab")
                bundleFile.renameTo(newBundleFile)
                println "✅ AAB 文件已重命名并移动到: ${newBundleFile.absolutePath}"
            }
        }
    }
}

config.gradle 改动

  • 谷歌要求最低 android sdk 版本为 35
    android = [
            compileSdkVersion: 35,
            ...
            targetSdkVersion : 35,
            versionCode      : 387,//记得修改 qmxs ddyd 最新版为381
            ...
    ]

AndroidManifest.xml 改动

  • 移除了以下的权限方便上架
<!-- app/src/main/AndroidManifest.xml -->
    ...
    <uses-permission android:name="android.permission.QUERY_ALL_PACKAGES"
        tools:node="remove" />
    ...
    <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"
        tools:node="remove" />
    ...
<!-- art-app-update/src/main/AndroidManifest.xml -->
    ...
    <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" tools:node="remove" />
    ...
    <uses-permission android:name="android.permission.READ_MEDIA_VIDEO" tools:node="remove" />
    ...

打包脚本流程

  • 具体流程和 apk 打包大概一致
  • 目前使用的是谷歌的签名服务,上传的 aab 包是 app/build/outputs/apk/$env/align/signed 目录下的 aab 包
  1. cd build-scripts
  2. 运行 ./build-aab.sh 打包 aab 包, 输出位置为 app/build/outputs/apk/$env/align/signed
  3. 可选 (测试App是否可用) - 加固 aab 目前没有使用加固, 直接上传 aab 包到谷歌应用商店
    1. 上传 aab 到加固平台
    2. 把加固后的 aab 包粘贴到 app/build/outputs/apk/xxxw/jiagu 目录下
    3. 运行 ./zip-sign-aab.sh 签名 aab 包
  4. 可选 (测试App是否可用) - 测试安装 aab 包
    1. aab 包需要转换为 apk 包,才能安装
    2. 该转换需要安装 bundletool 工具
    3. 运行 sh ./aab-to-apk.sh, 默认输入位置为 /app/build/outputs/apk/$env/align/signed, 输出位置为 app/build/outputs/apk/$env/align/converted-aab
  5. 上传未签名的 aab 包到谷歌应用商店,使用谷歌开发者的签名进行提交

谷歌开发者界面

左边菜单目录 - 资讯主页

”建立并发布版本“ 项

  • 为最关键的上架步骤,该步骤的所有任务必须完成才能上架
  • 谷歌有时会要求上架开放性测试包才能继续,只要去左边菜单,点选 “测试及发布 -> 测试 -> 公开测试”,上传一个一样的版本就好了

“测试及发布” 项

  • 点击 “正式版“,上传aab包后,两个小时内若有问题,如非法权限,系统会提醒要求开发者提出有力证据证明该app适用该权限并合法
  • 通常要求上传示范视频证明该权限的表面用途
  • 以下两个权限无法合理化证明:
# 安装App权限,用于强制更新
REQUEST_INSTALL_PACKAGES

# 穿山甲要求的权限,谷歌已经标记就算是三方要求也不可以使用
QUERY_ALL_PACKAGES

“监控及改善” 项

  • 点击 “触及率和装置”, 用于去除平板电脑的支持, 否者谷歌会要求上传所有支持的视频和App图像

“开发更多使用者” 项

  • 商店资讯 与 商店设定 菜单, 这里通常让运营填入,因为公司的资料,图像,app使用截图,商店背景,App简介,开发者无法获取
作者:verus  创建时间:2025-09-03 13:46
最后编辑:verus  更新时间:2025-09-03 13:47