Kotlin DSL 添加新的源集

Vin*_*ing 3 android gradle-kotlin-dsl

在 Gradle 6.1.1 上,如何为 android 项目添加 sourceSets?

其他问题的答案不再有效,getByName("name")返回错误SourceSet with name 'main' not found.

官方文档说使用

sourceSets {
    main {
        java {
            srcDir("thirdParty/src/main/java")
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

然而,有超过 20 个 main 必须导入,我不确定哪一个是正确的。

Kry*_*ski 9

我正在使用 gradle 6.5.1,但是文档建议,这也应该适合您,请尝试:

sourceSets {
    named("main") {
        java.srcDir("../buildSrc/src/main/java")
    }
}
Run Code Online (Sandbox Code Playgroud)

它也适用于构建类型(调试/发布)、风格等。

原因是 Groovy 可以以某种方式解释自身并知道等等,但是在 gradle kts 上,您可以根据需要main将其称为“使用named”或“使用”等。getByNamecreate

类似的情况是 for implementapi在 groovy 中你只能使用implementationDebug它来附加它仅用于调试版本,但在 kotlin dsl 中你必须将它作为字符串调用"implementationDebug",因为没有这样的函数

----- PS -----

如果named,getByName不适合您,那么尝试尝试findByNamecreate