Gradle 写法 → Kotlin DSL

12 阅读1分钟

老式 Gradle 写法 → Kotlin DSL

老写法(Groovy — build.gradle)

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'

android {
    compileSdkVersion 34
    defaultConfig {
        applicationId "com.example.app"
        minSdkVersion 21
        targetSdkVersion 34
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation 'androidx.core:core-ktx:1.12.0'
    implementation 'com.squareup.retrofit2:retrofit:2.9.0'
}

问题在哪里

Groovy 是动态语言,IDE 补全和语法检查都很弱。脚本中字符串拼接版本号容易出错。不能跳转到依赖的源码,type-safe 不足。

新写法(Kotlin DSL — build.gradle.kts)

plugins {
    id("com.android.application")
    id("org.jetbrains.kotlin.android")
}

android {
    compileSdk = 34
    defaultConfig {
        applicationId = "com.example.app"
        minSdk = 21
        targetSdk = 34
        versionCode = 1
        versionName = "1.0"
    }
    buildTypes {
        release {
            isMinifyEnabled = true
            proguardFiles(
                getDefaultProguardFile("proguard-android-optimize.txt"),
                "proguard-rules.pro"
            )
        }
    }
}

dependencies {
    implementation("androidx.core:core-ktx:1.12.0")
    implementation("com.squareup.retrofit2:retrofit:2.9.0")
}

一句话注意

Kotlin DSL 文件扩展名是 .kts。Groovy 的 apply plugin: 换成 plugins { id(...) }。Groovy 的属性赋值 key value 变成 Kotlin 的 key = value——注意 compileSdkVersion 变成了 compileSdkminifyEnabledisMinifyEnabled,这些是 AGP 自动映射的 Kotlin 属性名。

迁移最简单的方式:在项目根目录新建 build.gradle.kts,把 Groovy 内容逐行对应搬到 Kotlin 写法。Android Studio 有 "Convert Groovy to Kotlin DSL" 的右键菜单操作(在 build.gradle 文件上右键 → Refactor → Convert),可以一键转换。


Java Android 老项目迁移系列,持续更新中。