如何将sourceSets转换为Kotlin DSL(含production/canary的+=转换)
Groovy转Kotlin DSL:处理SourceSets的+=语法
针对你提供的Groovy代码,将其中production和canary模块的+=转换为Kotlin DSL的写法有两种常用方式,以下是完整的转换结果和说明:
转换后的Kotlin DSL代码
sourceSets { create("main") { manifest.srcFile("src/main/AndroidManifest.xml") java.srcDirs("src/main/java") resources.srcDirs("src/main/others") // 修正原代码拼写错误:srs → src res.srcDirs("src/main/res") assets.srcDirs("src/main/assets") jniLibs.srcDirs("jniLibs") } create("production") { manifest.srcFile("src/production/AndroidManifest.xml") // 方式1:用srcDir()追加单个目录(推荐,语义更清晰) java.srcDir("src/production/java") res.srcDir("src/production/res") // 方式2:保留类似Groovy的+=语法,Kotlin DSL同样支持 // java.srcDirs += "src/production/java" // res.srcDirs += "src/production/res" } create("canary") { manifest.srcFile("src/canary/AndroidManifest.xml") java.srcDir("src/canary/java") res.srcDir("src/canary/res") // 同样可使用+=写法 // java.srcDirs += "src/canary/java" // res.srcDirs += "src/canary/res" } }
关键说明
- 语法等价性:Groovy中的
srcDirs += "路径",对应Kotlin DSL里的srcDir("路径")——两者都是向现有源目录集合中追加新目录,而非覆盖原有配置。 - +=语法兼容:如果更习惯Groovy的写法,Kotlin DSL也直接支持
srcDirs += "路径"的语法,Gradle会自动将字符串解析为项目相对路径的文件对象。 - 拼写修正:原代码中存在两处拼写错误,已在转换代码中修正:
- main模块的resources目录路径
srs/main/others改为src/main/others - production模块的
java.srcDirst改为java.srcDirs
- main模块的resources目录路径
内容的提问来源于stack exchange,提问作者Kellin Strook
相关产品推荐
相关产品推荐

