我正在build.gradle
用特定代码修改一个单一风格的代码。具体来说,我正在内部修改这个循环
project.android.applicationVariants.all { variant ->
将johndoe风味的自定义代码包装在
if (variant.flavorName.toLowerCase().contains("johndoe")) {
...或者这个解决方案有一些缺点?
我正在build.gradle
用特定代码修改一个单一风格的代码。具体来说,我正在内部修改这个循环
project.android.applicationVariants.all { variant ->
将johndoe风味的自定义代码包装在
if (variant.flavorName.toLowerCase().contains("johndoe")) {
...或者这个解决方案有一些缺点?
简而言之,是的。当有多个风味维度和构建类型组合时,Android 文档abi
建议将其用于特定于变体的定制,例如在他们的示例中为不同的变体设置不同的版本代码。按照您的建议,它可以很容易地用于做某事。
需要注意的一件事是“自定义代码”在做什么。自定义代码可能正在配置构建,或者想要在构建过程中添加额外的步骤,甚至两者兼而有之!如果它与配置相关,那么“自定义代码”应该类似于上面的示例。但是,如果它想要添加额外的处理或构建逻辑,那么应该以 Gradle 的形式完成,Task
如下所示:
....
applicationVariants.all { variant ->
if (variant.buildType.name == "release") {
task("customReleaseLogic") {
description = "Runs some custom release logic"
// run some custom release logic
}
variant.assemble.dependsOn("customReleaseLogic")
}
}
....
这样,Gradle 构建将知道在构建项目时需要完成一个额外的步骤。
不是 Android 开发人员,但这基本上是其他大型 Gradle 项目为配置特定subprojects
(在您的情况下为变体)所做的工作。例子:
除非您注意到您的构建比执行上述操作要慢,否则您很好。
您还可以使用 Build Scans 来更深入地了解您的 Gradle 配置:https ://guides.gradle.org/creating-build-scans/