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

相关推荐
baozhengw7 分钟前
信创改造-SpringBootJar包改为WAR包部署Tomcat
java·tomcat
M1A124 分钟前
基于 Spring AOP 构建系统操作日志:从注解设计到异步落库的完整实战
java
光头闪亮亮31 分钟前
Fyne ( go跨平台GUI )项目实战-scanner摄像头扫码组件开发技术详解
android·go
RainCity36 分钟前
Java Swing 自定义组件库分享(十五)
java·笔记·后端
farerboy42 分钟前
23-Java 构造函数
java·后端
Android打工仔44 分钟前
Continuation 到底是谁创建的?
android·kotlin
坚持的小马1 小时前
Rocketmq搭建操作步骤
java·rocketmq·java-rocketmq
DeepAgent1 小时前
AI Agent 工程实践(17):Agent 为什么需要可观测性(Observability)?
android·llm·agent
砚底藏山河1 小时前
多家股票数据接口对比、企业级股票数据API
java·python·金融·maven
提笔了无痕1 小时前
MySQL SQL 从 EXPLAIN 到索引优化,搞懂 SQL 为什么慢
android·sql·mysql