Gradle 写法 → Kotlin DSL

老式 Gradle 写法 → Kotlin DSL

老写法(Groovy --- build.gradle)

groovy 复制代码
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)

kotlin 复制代码
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 老项目迁移系列,持续更新中。

相关推荐
RainCityLucky1 小时前
Java Swing 自定义组件库分享(十三)
java·笔记·后端
三少爷的鞋1 小时前
协程深度解析:明明只有 8 个异步任务,为何 App 线程数瞬间突破 一倍?
android
无限的鲜花10 小时前
反射(原创推荐)
java·开发语言
IT二叔10 小时前
Java项目部署-03-teamcity-cicd-docker镜像流水线方式部署
java·ci/cd·持续部署
一路向北he10 小时前
字节钢铁军团--“提供情境,而非控制”
java·开发语言·前端
超级数据查看器11 小时前
超级数据查看器 v10.0 发布
java·大数据·数据库·sqlite·安卓
GitLqr11 小时前
Flutter 3.44 插件内置 Kotlin (KGP) 双向兼容适配指南
android·flutter·dart
折哥的程序人生 · 物流技术专研12 小时前
《Java 100 天进阶之路》第50篇:阻塞队列与并发容器(2026版)
java·面试题·java进阶·blockingqueue·并发容器·集合源码·java100天进阶
ai_coder_ai12 小时前
编写自动化脚本,在自己后端服务中使用Open Api进行设备相关操作
java·运维·自动化