Kotlin DSLAndroid Studio 默认的模板已推荐使用 Kotlin DSL 取代 Groovy DSL 作为构建脚本。Kotlin DSL 已成为 AGP 8.0 文档优先Groovy DSL 仍受支持但新特性适配滞后。Kotlin DSL 不是“另一种写法”而是构建脚本工程化的基础设施升级。Kotlin DSL 脚本相对于Groovy DSL 脚本最大的优势是良好的代码提示。kotlin-dsl 对 groovy -dsl的语法转变基本上是把单引号改成双引号然后加上括号或者加上等于号。在Groovy DSL中也可以使用双引号字符串模板。基础配置差异文件名称增加.ktsbuild.gradle文件名称变为build.gradle.kts方法调用变为赋值语句namespace com.example.app // Groovy 中为方法调用namespace com.example.app // Kotlin 中为赋值语句布尔属性增加 is 前缀minifyEnabled false // 无 is 前缀isMinifyEnabled false // 布尔属性带 is 前缀区别Groovy 写法Kotlin 写法原因布尔属性minifyEnabled falseisMinifyEnabled falseKotlin Bean 属性规范字符串拼接lib-$versionlib-$version需双引号Kotlin 字符串模板要求访问 ext 属性ext.libVersion 1.0extra[libVersion] 1.0Kotlin 无动态 ext集合追加include :moduleinclude(:module)Kotlin 无 操作符插件版本id pluginid(plugin) version x.y.zKotlin DSL 要求显式版本根项目依赖管理革命Version Catalog 类型安全访问器。先独立配置依赖版本在gradle/libs.versions.toml中配置依赖版本[versions] kotlin 1.9.20 androidx-core 1.12.0 [libraries] androidx-core-ktx { group androidx.core, name core-ktx, version.ref androidx-core } kotlin-stdlib { group org.jetbrains.kotlin, name kotlin-stdlib, version.ref kotlin }再使用依赖在build.gradle.kts中使用依赖dependencies { //依赖libs.versions.toml中配置的库版本 implementation(libs.androidx.core.ktx) // ✅ 编译时检查IDE 智能提示 implementation(libs.kotlin.stdlib) //直接硬编码依赖库版本 //字符串模板安全使用 val retrofitVersion 2.9.0 implementation(com.squareup.retrofit2:retrofit:$retrofitVersion) }Kotlin 语言特性赋能// 扩展函数封装公共逻辑放入 buildSrc 或 convention plugin fun Project.configureAndroidLint() { tasks.withTypeLintTask().configureEach { lintConfig file(lint.xml) isCheckDependencies true } } // 作用域函数简化配置 android.buildFeatures.apply { viewBinding true compose true } // 安全访问 project 属性 val debugMode extra[debugMode] as? Boolean ?: falselibs.versions.tomllibs.versions.toml文件的使用https://blog.csdn.net/android_cai_niao/article/details/160431318[libraries]的写法# 写法一拆分 group name更清晰 androidx-ktx { group androidx.core, name core-ktx, version.ref androidx-ktx } # 写法二合并简写 module更简洁 androidx-ktx { module androidx.core:core-ktx, version.ref androidx-ktx } # 写法三内联版本号不推荐版本分散 androidx-ktx { module androidx.core:core-ktx, version 1.12.0 }[bundles]bundle作用是把依赖打包[bundles] hilt [hilt-android, hilt-compiler]别名归化所有依赖的别名alias都会被 Gradle 标准化处理凡是别名中含有 -、_ 或 . 的引用时都统一转换为 .原因是Gradle 用点号 . 来生成层级访问器type-safe accessor如果允许别名里直接写 .会产生歧义所以统一把 - 和 _ 都归一化为 .然后在前面加上libs.*前缀。引用版本值libs.versions.alias.get()引用库依赖libs.alias引用插件libs.plugins.alias引用bundlelibs.bundls.alias推荐的命名规范是使用 kebab-case如 androidx-ktx这样可以在构建文件中获得更好的代码补全支持。kebab-case命名风格Kebab-case命名风格单词之间用连字符-连接所有字母小写。就像串在烤串上的肉块 所以叫 “kebab”烤串常见命名风格kebab-case短横线连接androidx-ktx、my-librarycamelCase首单词小写后续首字母大写androidxKtx、myLibraryPascalCase每个单词首字母大写AndroidxKtx、MyLibrarysnake_case下划线连接androidx_ktx、my_librarySCREAMING_SNAKE_CASE下划线全大写ANDROIDX_KTX、MY_LIBRARY各场景的惯用风格kebab-case → HTML/CSS 类名、libs.versions.toml 的别名、URLcamelCase → Java/Kotlin 变量名、函数名PascalCase → Java/Kotlin 类名snake_case → Python 变量名、数据库字段名libs.versions.toml 推荐 kebab-case是因为 - 会被 Gradle 自动转成 .天然形成层级结构代码补全体验更好。apply plugin: kotlin-android-extensions‌Kotlin Android Extensions‌ 是 JetBrains 为简化 Android 开发而提供的插件允许开发者通过 XML 布局中的id直接访问 View例如btn_login.setOnClickListener { ... }无需调用findViewById()。该插件自 ‌Kotlin 1.2‌ 引入在早期广泛用于减少样板代码现已废弃。废弃时间线‌2020 年起‌Google 官方逐步明确不再推荐使用 Kotlin Android Extensions。‌Kotlin 1.8.02021 年底‌正式‌禁用‌该插件。‌当前2026 年‌该插件‌已完全废弃‌新项目不应使用。