Kotlin DSL 构建脚本

本文详细解析了Intel i3、i5、i7系列与AMD Phenom II处理器的架构、性能特点,包括多核多线程技术、睿频加速、集成显卡、缓存大小等。同时,介绍了Tick-Tock战略、APU融合技术、CPU与GPU的性能对比。还讨论了处理器的工艺、主频、功耗、缓存等方面,以及如何选择合适的处理器。最后,提到了Intel VT虚拟化技术、Intel Core i5-2410M、AMD Phenom II P960等具体型号的性能分析。

Kotlin DSL

Android Studio 默认的模板已推荐使用 Kotlin DSL 取代 Groovy DSL 作为构建脚本。Kotlin DSL 已成为 AGP 8.0+ 文档优先,Groovy DSL 仍受支持但新特性适配滞后。Kotlin DSL 不是“另一种写法”,而是构建脚本工程化的基础设施升级。

Kotlin DSL 脚本相对于Groovy DSL 脚本最大的优势是良好的代码提示。kotlin-dsl 对 groovy -dsl的语法转变,基本上是把单引号改成双引号,然后加上括号或者加上等于号。

在Groovy DSL中也可以使用双引号+字符串模板。

基础配置差异

  • 文件名称增加.kts

        build.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-$version""lib-$version"(需双引号)Kotlin 字符串模板要求
访问 ext 属性ext.libVersion = "1.0"extra["libVersion"] = "1.0"Kotlin 无动态 ext
集合追加include << ":module"include(":module")Kotlin 无 << 操作符
插件版本id 'plugin'id("plugin") version "x.y.z"Kotlin 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.withType<LintTask>().configureEach {
        lintConfig = file("lint.xml")
        isCheckDependencies = true
  }
}

// 作用域函数简化配置
android.buildFeatures.apply {
    viewBinding = true
    compose = true
}

// 安全访问 project 属性
val debugMode = extra["debugMode"] as? Boolean ?: false

应用外部脚本

// 应用外部脚本
//apply from: "..\\..\\XdlLib\\common.gradle"
apply(from = "..\\..\\XdlLib\\common.gradle.kts")

libs.versions.toml

 libs.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-ktxmy-library
camelCase首单词小写,后续首字母大写androidxKtxmyLibrary
PascalCase每个单词首字母大写AndroidxKtxMyLibrary
snake_case下划线连接androidx_ktxmy_library
SCREAMING_SNAKE_CASE下划线+全大写ANDROIDX_KTXMY_LIBRARY

各场景的惯用风格

  • kebab-case → HTML/CSS 类名、libs.versions.toml 的别名、URL
  • camelCase → 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.0(2021 年底)‌:正式‌禁用‌该插件。
  • 当前(2026 年)‌:该插件‌已完全废弃‌,新项目不应使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值