You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将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"
    }
}

关键说明

  1. 语法等价性:Groovy中的srcDirs += "路径",对应Kotlin DSL里的srcDir("路径")——两者都是向现有源目录集合中追加新目录,而非覆盖原有配置。
  2. +=语法兼容:如果更习惯Groovy的写法,Kotlin DSL也直接支持srcDirs += "路径"的语法,Gradle会自动将字符串解析为项目相对路径的文件对象。
  3. 拼写修正:原代码中存在两处拼写错误,已在转换代码中修正:
    • main模块的resources目录路径srs/main/others改为src/main/others
    • production模块的java.srcDirst改为java.srcDirs

内容的提问来源于stack exchange,提问作者Kellin Strook

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 09:53:11