KTS语法

其实 KTS (Kotlin Script) 并没有那么可怕,它的核心逻辑和 Groovy 是一样的,只是"方言"变了

Groovy 像是文言文或者狂草 (写意,少写一个括号也能跑,但在哪里跑我也得猜); KTS 像是法律文书或者楷书(严谨,必须加括号,必须加等号,但哪里写错了 IDE 立马标红)

下面我们通过一个 HelloWorld 级别的工程,左边 Groovy,右边 KTS,来一场面对面的"翻译"


一、 三条核心"翻译"法则

在看代码前,只需要记住这三条法则,就能读懂 80% 的 KTS 代码:

  1. 字符串必须用双引号
    • Groovy: 'Hello'"Hello" 都可以。
    • KTS: 必须是 "Hello"
  2. 赋值必须用 =
    • Groovy: compileSdkVersion 30 (像是在喊命令)。
    • KTS: compileSdk = 30 (这是在给属性赋值)。
  3. 函数调用尽量加 ()
    • Groovy: implementation 'com.xxx'
    • KTS: implementation("com.xxx")

二、 根目录 build.gradle 对照

这是项目的入口配置

1. 声明插件 (Plugins)

Groovy (build.gradle):

groovy 复制代码
// 以前的旧写法是 buildscript { dependencies { classpath ... } }
// 现在的写法:
plugins {
    id 'com.android.application' version '8.2.0' apply false
    id 'com.android.library' version '8.2.0' apply false
    id 'org.jetbrains.kotlin.android' version '1.9.20' apply false
}

KTS (build.gradle.kts):

kotlin 复制代码
plugins {
    // 区别1:必须用双引号
    // 区别2:必须用括号 id(...)
    id("com.android.application") version "8.2.0" apply false
    id("com.android.library") version "8.2.0" apply false
    id("org.jetbrains.kotlin.android") version "1.9.20" apply false
}

感受:这里差别不大,主要是加了括号和双引号。


三、 App 模块 build.gradle 对照 (重头戏)

这里是差异最大的地方,也是IDE 提示优势体现最明显的地方

1. 插件引用

Groovy:

groovy 复制代码
plugins {
    id 'com.android.application'
    id 'kotlin-android'
}

KTS:

kotlin 复制代码
plugins {
    id("com.android.application")
    id("kotlin-android")
}

2. Android 配置块 (最能体现赋值语法的区别)

Groovy:

groovy 复制代码
android {
    namespace 'com.example.myapp' // 只有空格
    compileSdkVersion 34          // 只有空格

    defaultConfig {
        applicationId "com.example.myapp"
        minSdkVersion 24
        targetSdkVersion 34
        versionCode 1
        versionName "1.0"
    }
    
    // 签名配置等...
}

KTS:

kotlin 复制代码
android {
    namespace = "com.example.myapp" // 必须加 = 号
    compileSdk = 34                 // 属性名变了(更简洁),且必须加 = 号

    defaultConfig {
        applicationId = "com.example.myapp"
        minSdk = 24                 // 必须加 = 
        targetSdk = 34              // 必须加 =
        versionCode = 1
        versionName = "1.0"
    }
}

🔥 IDE 提示优势时刻: 在 KTS 中,你把鼠标放在 compileSdk 上,按 Ctrl+左键(Mac 是 Cmd+左键),你是可以点进源码的! 你会看到它是 BaseExtension 类下的一个 var compileSdk: Int 属性。 这意味着: 如果你敲 compileSdk = "34" (字符串),IDE 会直接爆红告诉你类型错误,而在 Groovy 中可能要等到编译失败才告诉你。

3. BuildTypes (构建类型)

这是最容易让人懵的地方,因为 Groovy 太动态了

Groovy:

groovy 复制代码
buildTypes {
    release { // 这里的 release 是凭空写出来的,Groovy 会动态创建
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}

KTS:

kotlin 复制代码
buildTypes {
    // KTS 是静态语言,不能凭空变出 release。
    // 必须用 getByName 或者 create 来获取已经存在的 release 配置
    getByName("release") {
        isMinifyEnabled = true // 布尔值通常加 is 前缀,且必须用 =
        
        // 函数调用必须加括号
        proguardFiles(
            getDefaultProguardFile("proguard-android-optimize.txt"),
            "proguard-rules.pro"
        )
    }
}

4. 依赖 (Dependencies)

Groovy:

groovy 复制代码
dependencies {
    implementation 'androidx.core:core-ktx:1.12.0'
    implementation 'androidx.appcompat:appcompat:1.6.1'
    testImplementation 'junit:junit:4.13.2'
}

KTS:

kotlin 复制代码
dependencies {
    // 必须加括号,必须双引号
    implementation("androidx.core:core-ktx:1.12.0")
    implementation("androidx.appcompat:appcompat:1.6.1")
    testImplementation("junit:junit:4.13.2")
}

四、 回应"痛点":Config.gradle 在 KTS 里怎么办?

之前用了 config.gradle 来统一管理版本号。在 KTS 时代(以及 2025 年现在的标准),我们有了官方钦定的替代品:Version Catalog (libs.versions.toml)

这比 config.gradle 爽太多了,而且支持 KTS 的代码提示

1. 创建 gradle/libs.versions.toml 文件:

toml 复制代码
[versions]
kotlin = "1.9.20"
coreKtx = "1.12.0"

[libraries]
androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" }

2. 在 KTS 中使用 (IDE 智能提示炸裂):

当在 build.gradle.kts 里打字时:

kotlin 复制代码
dependencies {
    // 当你敲下 libs. 时,IDE 会自动弹出 androidx,然后弹出 core...
    // 就像写 Java 代码一样爽,完全不用去记名字!
    implementation(libs.androidx.core.ktx) 
}

这比用 rootProject.ext.versionName 这种"盲猜"的写法要安全舒服得多

总结

KTS 并没有增加复杂度,它只是增加了严谨度

为什么值得转?

  1. 写代码的感觉:在写 Gradle 脚本时,不再是"抄代码",而是像写 Kotlin 业务代码一样,有类、有对象、有方法。
  2. 排错:少写个括号,IDE 界面上直接标红,不用等到点了 Run 跑了一半才报错。
  3. 跳转:按住 Ctrl/Cmd 点击任何配置项,直接看文档源码,不再需要百度"compileSdkVersion 接受什么类型"。

建议:下次新开一个小 Demo 项目时,勾选 "Kotlin DSL",照着上面的对照表试一次,会发现"真香"的

相关推荐
GoldenPlayer2 小时前
后台服务Service销毁逻辑+单例造成的内存泄露
android
GoldenPlayer2 小时前
自定义APK&gradle全局配置文件
android
うちは止水2 小时前
Android Hal层开发流程
android·hal
李小轰_Rex2 小时前
把手机变成听诊器!摄像头 30 秒隔空测心率 - 开箱即用
android·音视频开发
为码消得人憔悴4 小时前
Android perfetto - 记录分析memory
android·性能优化
尤老师FPGA4 小时前
使用ZYNQ芯片和LVGL框架实现用户高刷新UI设计系列教程(第四十二讲)
android·java·ui
成都大菠萝4 小时前
2-2-29 快速掌握Kotlin-过滤函数filter
android
成都大菠萝4 小时前
2-2-18 快速掌握Kotlin-扩展属性
android
成都大菠萝4 小时前
2-2-21 快速掌握Kotlin-定义扩展文件
android