我正在用一种风味的特定代码修改build.gradle
。具体来说,我正在这个周期内部进行修改
project.android.applicationVariants.all { variant ->
最佳做法是将 johndoe 风味的自定义代码包装在
中if (variant.flavorName.toLowerCase().contains("johndoe")) {
...还是该解决方案有一些缺点?
答案 0 :(得分:2)
简而言之,是的。 Android Documentation建议在存在多个风味尺寸和构建类型组合时(例如在其示例中为不同的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构建将知道在构建项目时还需要执行额外的步骤。
答案 1 :(得分:1)
不是Android开发人员,但是基本上,这是其他大型Gradle项目用来配置特定的subprojects
(根据您的情况而定)所做的。例子:
除非您注意到您的构建比上述操作慢,否则您就没事了。
您还可以使用构建扫描来更深入地了解Gradle配置:https://guides.gradle.org/creating-build-scans/