0

我正在build.gradle用特定代码修改一个单一风格的代码。具体来说,我正在内部修改这个循环

 project.android.applicationVariants.all { variant ->

将johndoe风味的自定义代码包装在

if (variant.flavorName.toLowerCase().contains("johndoe")) {

...或者这个解决方案有一些缺点?

4

2 回答 2

2

简而言之,是的。当有多个风味维度和构建类型组合时,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 构建将知道在构建项目时需要完成一个额外的步骤。

于 2019-10-18T23:54:13.960 回答
1

不是 Android 开发人员,但这基本上是其他大型 Gradle 项目为配置特定subprojects(在您的情况下为变体)所做的工作。例子:

除非您注意到您的构建比执行上述操作要慢,否则您很好。

您还可以使用 Build Scans 来更深入地了解您的 Gradle 配置:https ://guides.gradle.org/creating-build-scans/

于 2019-10-10T16:21:09.403 回答