如何禁用默认渐变buildType后缀(-release,-debug)



我迁移了一个第三方工具的gradle.build配置,所以它使用了android gradle插件3.5.3和gradle 5.4.1。

构建进行得很顺利,但当我试图创建.aab存档时,事情就坏了,因为工具链希望输出.aab文件名为MyApplicationId.aab,但新的gradle默认为输出MyApplicationId-release.aab,带有buildType后缀,但没有。

我试图寻找一个解决方案,但关于产品口味的文档大多是关于添加后缀的。如何防止添加默认的"-release"后缀?在工具链的gradle配置文件中没有任何产品风格块。

在阅读了其他问题和答案后,我意识到我必须创建自定义任务:如何使用Gradle更改App Bundles生成的文件名?

重命名applicationVariants.outputs的outputFileName不起作用,因为它们是为.apks.使用的

我使用的是Gradle 5.4.1,所以我的Copy任务语法参考在这里。

我不太明白"app.aab"名称字符串是从哪里来的,所以我定义了自己的aab文件名字符串来匹配我的工具链的输出。

我不关心源文件,所以它不会被另一个删除任务删除。

此外,我的工具链似乎正在删除由"${}"包围的未知变量,因此我不得不通过省略括号和使用串联来正确定界来绕过${buildDir}和${flavor}。

tasks.whenTaskAdded { task ->
if (task.name.startsWith("bundle")) { // e.g: buildRelease
def renameTaskName = "rename${task.name.capitalize()}Aab" // renameBundleReleaseAab
def flavorSuffix = task.name.substring("bundle".length()).uncapitalize() // "release"
tasks.create(renameTaskName, Copy) {
def path = "$buildDir/outputs/bundle/" + "$flavorSuffix/"
def aabFile = "${android.defaultConfig.applicationId}-" + "$flavorSuffix" + ".aab"
from(path) {
include aabFile
rename aabFile, "${android.defaultConfig.applicationId}.aab"
}
into path
}
task.finalizedBy(renameTaskName)
}
}

正如最初的答案所说:这将添加比必要的更多的任务,但这些任务将被跳过,因为它们与任何文件夹都不匹配。例如

任务:app:renameBundleReleaseResourcesAab NO-SOURCE

相关内容

最新更新