如何仅为特定的buildType覆盖gradle任务

时间:2016-11-17 12:25:38

标签: android gradle android-gradle build.gradle

我有一个来自我正在使用的插件的任务,我只想在编译调试buildType时覆盖它。

我尝试在调试范围内覆盖:

buildTypes {
    debug {
      task newRelicInstrumentTask(overwrite: true) << {}
      task newRelicDeinstrumentTask(overwrite: true) << {}
    }
}

但它也为发行版buildType重写了它。

我也尝试过以下操作:

buildTypes.all{ theBuildType ->
    print(theBuildType.name)
    if (theBuildType.name == "debug")
    {
      task newRelicInstrumentTask(overwrite: true) << {}
      task newRelicDeinstrumentTask(overwrite: true) << {}
    }
  }

但是当我执行assembleRelease时它也会覆盖它。

那么我怎样才能在我运行assembleDebug时覆盖它?

2 个答案:

答案 0 :(得分:1)

类似的东西:

gradle.taskGraph.whenReady { TaskExecutionGraph teg ->
    if (teg.hasTask('assembleDebug')) {
        tasks.getByPath('newRelicInstrumentTask').enabled = false
        tasks.getByPath('newRelicDeinstrumentTask').enabled = false
    }
}

请参阅TaskExecutionGraph

答案 1 :(得分:0)

这最终效果最好:

if ((gradle.startParameter.taskNames.size() == 1) && (gradle.startParameter.taskNames.get(0).contains(
      "assembleDebug"))) {
    task newRelicInstrumentTask(overwrite: true) << {
    }

    task newRelicDeinstrumentTask(overwrite: true) << {
    }
  }