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

相关推荐
2601_9620715712 小时前
【Java报错已解决】org.springframework.beans.factory.BeanCreationException
java·开发语言
天空之城--13 小时前
Android Koin 完全指南:从原理到实践
android
zww894911113 小时前
酒馆预约系统开发实战:从需求分析到上线全流程指南
java·eclipse
zhangphil14 小时前
Android main thread主线程Choreographer doFrame发生FullSuspendCheck
android
zww894911116 小时前
匿名树洞系统开发实战:从需求分析到部署指南
java·eclipse
黑马程序员毕设17 小时前
基于Java的医院药品管理系统的优化设计与实现
java·开发语言·spring boot·小程序·架构·课程设计·毕设
木井巳17 小时前
【BFS/DFS 解决 FloodFill 算法】太平洋大西洋水流问题
java·算法·leetcode·深度优先·广度优先·宽度优先·推荐算法
白山编程大哥17 小时前
Java 集合算法:从排序、查找到底层原理的实战指南
java·python·算法
devpotato18 小时前
缓存与数据库更新顺序不一致问题
java·数据库·redis
xcl092518 小时前
酒馆预约系统开发实战:从需求分析到上线全流程指南
java·spring boot·需求分析