gpt4 book ai didi

android - TaskGraph.useFilter 替代 kotlin dsl

转载 作者:行者123 更新时间:2023-11-30 04:57:34 25 4
gpt4 key购买 nike

我正在寻找 gradle 中这行代码的替代方案,我正在寻找它在 kotlin dsl 中的对应部分,任何人都可以对此有所了解,因为它阻止了我的构建,并且由于 usefilter 不可用而不知所措在 kotlin dsl 中

gradle.taskGraph.useFilter {
if (task.name.contains("GoogleServices") && (task.name.contains("Perf") || task.name.contains("Demo") || task.name.contains("Dev") || task.name.contains("Debug"))) {
return false
}
return true
}

最佳答案

useFilter是在非公共(public)接口(interface) TaskExecutionGraphInternal 中声明的方法,该接口(interface)是公共(public) TaskExecutionGraph 的子类型,由实际任务图实现类实现。

useFilter 的调用在 Groovy 中工作是因为动态分派(dispatch):它在运行时搜索实际类的所有方法,因此甚至可以调用那些不能通过 public 访问的方法应用程序接口(interface)。

在 Kotlin 中,您必须将任务图显式转换为该接口(interface)才能静态调用此方法:

(gradle.taskGraph as org.gradle.execution.taskgraph.TaskExecutionGraphInternal)
.useFilter { it.name.contains("GoogleServices") && ... }

请注意,使用非公共(public) Gradle API 会使您的构建变得脆弱并且对升级 Gradle 版本敏感。

关于android - TaskGraph.useFilter 替代 kotlin dsl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58867137/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com