求推荐便捷将build.gradle Groovy转换为KTS的工具/插件/脚本
从Groovy DSL迁移到Kotlin DSL的实用工具与技巧
官方Gradle内置转换命令
Gradle官方提供了原生的转换辅助工具,在项目根目录执行以下命令:
gradle init --type kotlin-dsl
它会自动扫描项目中所有Groovy格式的build.gradle文件,生成对应的build.gradle.kts文件,能处理大部分基础语法转换——比如自动给implementation补全括号,修正compileOptions这类闭包的语法差异,把Groovy里的无等号属性赋值转换成Kotlin要求的带等号写法。
Android Studio内置迁移助手
Android Studio Giraffe及后续版本自带了一键转换功能:
- 右键点击目标
build.gradle文件,选择Convert File to Kotlin DSL - IDE会实时检测转换后的语法错误,并给出快速修复建议。比如针对
compileOptions的报错,会自动把Groovy代码:
修正为KTS的正确写法:compileOptions { sourceCompatibility JavaVersion.VERSION_17 targetCompatibility JavaVersion.VERSION_17 }compileOptions { sourceCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_17 }
社区自定义转换脚本
可以用社区维护的批量转换脚本,快速处理重复语法问题:
- 在项目根目录的
build.gradle中添加如下任务:task convertToKts { doLast { fileTree('.').include('**/*.gradle').exclude('**/*.gradle.kts').each { file -> def ktsFile = new File(file.path.replace('.gradle', '.gradle.kts')) def content = file.text // 补全implementation的括号 content = content.replaceAll(/implementation\s+['"]/, "implementation(\"") content = content.replaceAll(/['"]\s*$/, "\")") // 给属性赋值添加等号 content = content.replaceAll(/(\w+Compatibility)\s+(\w+\.\w+)/, "\$1 = \$2") ktsFile.write(content) } } } - 执行
./gradlew convertToKts,脚本会批量处理基础语法转换,之后只需手动修正少量复杂配置(比如自定义插件、动态依赖版本逻辑)。
手动修正核心技巧
工具转换失效时,记住几个关键语法差异:
- Groovy中省略的括号必须补全:
implementation 'com.android.tools.build:gradle:7.4.0'→implementation("com.android.tools.build:gradle:7.4.0") - Groovy闭包内的属性赋值要加等号:
minSdkVersion 21→minSdkVersion = 21 - 集合语法转换:Groovy的
['a', 'b']→ Kotlin的listOf("a", "b")
内容的提问来源于stack exchange,提问作者Ahmad Arif Faizin
相关产品推荐
相关产品推荐

