为什么我不能在构建脚本中使用gradle task connectedDebugAndroidTest?

Ale*_*xey 12 android gradle android-gradle-plugin

我可以从我的构建脚本中引用connectedCheck任务(来自android插件):

connectedCheck.finalizedBy AndroidShowTestResults
Run Code Online (Sandbox Code Playgroud)

但是尝试使用connectedDebugAndroidTest(也来自android插件)

connectedDebugAndroidTest.finalizedBy AndroidShowTestResults
Run Code Online (Sandbox Code Playgroud)

给我

错误:(48,0)无法在项目':app'上找到属性'connectedDebugAndroidTest'.

如果我试试

task connectedDebugAndroidTest << {print '123'}
Run Code Online (Sandbox Code Playgroud)

它诅咒我

错误:无法添加任务':app:connectedDebugAndroidTest'作为具有该名称的任务已存在.

我不明白为什么我不能参考connectedDebugAndroidTest

可用的gradle任务如下所示:

Gradle任务

RaG*_*aGe 5

android插件推迟了几个任务的添加,尤其是其中具有buildType或flavor名称的任务,直到配置阶段的最后阶段。反过来,这意味着如果您尝试按名称引用这些尚未添加的任务,则很可能会看到“不存在”类型的错误消息。如果要添加有关延迟创建的任务的依赖关系,则应等待配置完成:

gradle.projectsEvaluated {
    connectedDebugAndroidTest.finalizedBy AndroidShowTestResults
}
Run Code Online (Sandbox Code Playgroud)

另外,您可以在任务图事件中添加侦听器,这样就可以在将特定任务添加到任务图后立即进行处理:

tasks.whenTaskAdded { task ->
    if (task.name == 'connectedDebugAndroidTest') {
        task.finalizedBy AndroidShowTestResults
    }
}
Run Code Online (Sandbox Code Playgroud)