Android gradle: 所有 buildTypes 同时被执行

Android gradle: All buildTypes are getting executed at the same time

我有一个 android gradle 项目,我正在尝试为其配置 buildTypes。这是我的一部分 build.gradle:

android {

...

    buildTypes {
        debug {
            println("inside debug...")
        }    
        release {
            println("inside release...")
        }
    }

...
}

当我从终端 运行 assembleDebug 任务时,我得到的输出为:

inside debug...
inside release...

为什么要打印发布块?执行assembleDebug任务时只打印debug块,执行assembleRelease任务时只打印release块怎么办?

我对 android 和 gradle 都很陌生,所以任何帮助都会很棒。

简单的答案是:他们不是

Gradle(这是一种简化)分两个阶段工作:配置执行。在 configuration 阶段 whole 脚本被评估 - 这就是为什么你添加的 println 语句确实出现在输出中的原因。

要验证发布和调试任务是否都是 运行 添加以下代码:

assembleDebug << {
   println 'debug run'
}

assembleRelease << {
   println 'release run'
}

使用 << 添加了一个动作,该动作将在任务为 运行 时执行。在 执行 阶段的操作是 运行。