Android/Gradle:根据构建类型有条件地应用插件

Jos*_*seF 13 android gradle build.gradle android-gradle-plugin gradle-plugin

我想做一些像(伪代码)的东西:

if (BuildType == "release"){
    apply plugin: 'testfairy'
} else if (BuildType == "debug"){
    apply plugin: 'io.fabric'
}
Run Code Online (Sandbox Code Playgroud)

这个想法是基于构建类型,应用(或不应用)插件.怎么做 ?

小智 11

使用Gradle 4.6,可以进行以下工作:

if (getGradle().getStartParameter().getTaskRequests().toString().contains("Release")) {
    apply plugin: 'testfairy'
} else if (getGradle().getStartParameter().getTaskRequests().toString().contains("Debug")) {
    apply plugin: 'io.fabric'
}
Run Code Online (Sandbox Code Playgroud)


Jos*_*seF 5

基于Gradle核心开发人员Stefan Oehme,他:

插件不能仅应用于"项目的一部分".它们是否适用.这会成为一个问题的用例是什么?

所以,答案是不可能的.我已经暴露了我的用例,这会成为一个问题,我会看到你说的是什么.

  • 这是一个奇怪的自我回答,因为问题的措辞并不是询问插件是否只能应用于项目的*部分*;而是询问插件是否只能应用于项目的*部分*。它询问是否有一种方法可以*有条件地*将插件应用到*整个*项目。 (3认同)
  • @jason-grife 有答案,应该标记为这个问题的解决方案 (2认同)