如何更改Android App Bundles名称(app.aab)以反映App版本和构建类型

Rom*_*ych 5 android android-gradle-plugin

在构建APK时,我可以在build.gradle脚本中更改APK名称,如下所示:

android.applicationVariants.all { variant ->
  if (variant.buildType.name != "debug") {
      variant.outputs.all {
          outputFileName = "${variant.applicationId}-v${variant.versionName}-${variant.name}.apk"
      }
  }
}
Run Code Online (Sandbox Code Playgroud)

我会有这样的东西 com.myapp.package-v1.x.x-release

有没有办法与Android App Bundles做类似的事情,总是不方便 app.aab

Rom*_*ych 2

我已经想出了如何使用 Gradle 实现这一目标的解决方案。

首先,我们必须在 Appbuild.gradle文件中创建一个 Gradle 任务,该任务将重命名app.aab副本上的原始任务。此处描述了此方法。然后为了方便起见,我们将添加另一个删除旧app.aab文件的方法。

android{ 
.....
}
dependencies{
.....
}
.....

task renameBundle(type: Copy) {
    from "$buildDir/outputs/bundle/release"
    into "$buildDir/outputs/bundle/release"

    rename 'app.aab', "${android.defaultConfig.versionName}.aab"
}

task deleteOriginalBundleFile(type: Delete) {
    delete fileTree("$buildDir/outputs/bundle/release").matching {
        include "app.aab"
    }
}
Run Code Online (Sandbox Code Playgroud)

在此示例中,输出文件名将类似于1.5.11.aab 然后我们可以将这些任务组合在一起形成publishRelease将用于发布应用程序的任务:

task publishRelease(type: GradleBuild) {
    tasks = ['clean', 'assembleRelease', 'bundleRelease', 'renameBundle', 'deleteOriginalBundleFile']
}
Run Code Online (Sandbox Code Playgroud)

  • 如何运行publishRelease?如何让它在生成签名的APK到指定目录时自动调用? (2认同)