在 Android 应用程序中适配 Kotlin 2.0
由 Mux 赞助的 DEV 全球展示挑战赛:展示你的项目!
最近,Kotlin 2.0 版本已经发布,随之而来的是 Android 项目的一些调整,以便适应或实现使用这种新版本的编程语言编写的代码。该编程语言已获得 Google 官方支持,用于 Android 移动开发(根据 Google I/O 大会的最新版本,它是多平台的)。
在这篇短文中,我解释了我从一个版本迁移1.9.23到另一个版本的经验2.0.0;这是因为新版本在以 Kotlin 为编程语言的项目中引入了许多新功能,而且对于我们许多开发人员来说,从远低于某个版本的 Kotlin 进行迁移可能存在困难1.9.0。
关于 K2 编译器
K2 编译器是对 Kotlin 原编译器的完全重写,旨在显著提升 Android 应用开发效率。K2 在 Kotlin 2.0 中引入,具有诸多优势,包括:更快的编译速度、更高的性能以及更完善的跨平台支持;这些优势应用于 Android 项目时,能够生成更紧凑的代码,从而减小应用体积,并生成原生代码,这意味着移动应用拥有更强大的性能。
如何在 Android 上测试 K2 编译器?
值得一提的是,本节主要从 Android 项目的角度介绍配置方面的内容。我不会赘述 KMP 的细节,不过如果您已有使用 Kotlin 进行跨平台项目开发的经验,那么其中提到的一些细节很容易理解。
1. 一个新的构建目录
Kotlin 2.0 引入了一个新的构建输出目录:.kotlin。您必须将其添加到.gitignore文件中,以防止其内容出现在提交记录中:
#.gitignore
# Kotlin 2.0
.kotlin/
2. 应用新版本的 Kotlin
现在我们来看 gradle/libs.versions.toml 文件。在这一部分,我们假设使用版本目录来控制移动应用程序的依赖项(版本、插件等)。这里找到了 Kotlin 版本的引用,并将其更改为 2.0.0 版本。所以:
# gradle/libs.versions.toml
[versions]
agp="8.4.1"
kotlin="2.0.0"
ksp="2.0.0-1.0.21"
关于兼容性,Kotlin 符号处理器 (KSP) 库和 Android Gradle 插件(简称 AGP,仅供参考)的版本也必须更新。前面的代码片段列出了需要检查的版本。
在库级别,以下 Kotlin 库也进行了更新:
# gradle/libs.versions.toml
[libraries]
kotlin-gradle-plugin = "org.jetbrains.kotlin:kotlin-gradle-plugin:2.0.0"
kotlin-serialization-plugin = "org.jetbrains.kotlin:kotlin-serialization:2.0.0"
注意:在撰写本文时,有些库在版本变更方面没有出现问题,例如
kotlin-coroutines,,kotlin-serialization。kotlin-serialization-json
在插件层面,Kotlin 库也已更新如下,并参考了前面已提到的版本:
# gradle/libs.versions.toml
[plugins]
kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }
kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" }
kotlin-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" }
完成上述步骤后,运行命令gradle clean build或从 Android Studio 构建项目。
3. 更新 Compose 编译器
关于 Android 项目配置的另一个重要方面,特别是使用 Jetpack Compose 时,与 Kotlin 的 Compose 编译器有关。该配置允许转换带有注解的函数,@Composable以便应用优化。现在,在编译这些函数时,定义 Compose 编译器版本的方式发生了很大的变化,如下所述。
以前,compose 编译器的版本必须放在包含 Android 实现和 Jetpack Compose 实现的 gradle 项目模块的 build.gradle 文件中。
/* build.gradle.kts */
…
composeOptions {
kotlinCompilerExtensionVersion="1.5.3"
}
…
如果使用版本目录,版本信息将按如下方式显示:
# gradle/libs.versions.toml
[versions]
compose-compiler = “1.5.3”
…
/* build.gradle.kts */
…
composeOptions {
kotlinCompilerExtensionVersion = libs.versions.composeCompiler.get()
}
…
这项举措当时很好,但存在一些维护问题,因为它需要与当前版本的 Kotlin 兼容。它与 Compose 版本不同,而 IDE 并未主动进行改进。每次更新 Kotlin 版本后,都必须在 Google 上搜索 Jetpack Compose 文档,以找到兼容的 Compose 编译器版本。Kotlin 2.0 解决了这个问题。
现在,该文件中包含了一个新的 gradle 插件gradle/libs.versions.toml,该插件负责管理组织更完善的 compose 编译器版本,并与 Kotlin 版本关联。
# gradle/libs.versions.toml
[plugins]
…
kotlin-compose-compiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" }
执行此操作后,build.gradle.kts具有 Jetpack Compose 功能的 Android 模块的文件将被修改,删除并添加对插件composeOptions configuration. kotlinCompilerExtensionVersion的引用。kotlin-compose-compilerplugins { .. }
/* build.gradle.kts */
…
plugins {
…
alias(libs.plugins.compose.compiler)
}
…
完成上述步骤后,运行gradle clean build命令或从 Android Studio 构建项目或进行同步。
就这样!这个插件会根据当前的 Kotlin 版本配置 Compose 编译器版本。
结论
总体而言,K2 编译器代表着 Kotlin 在 Android 应用开发领域的一次重大进步。速度、性能和可扩展性的提升使其成为 Android 开发者的宝贵工具。
现在 Kotlin 2.0.0 的使用已成为标准,现在正是更新我们的 Android 应用程序的好时机,以便它们能够支持更多 Kotlin、KMP、Jetpack Compose 以及其他 Google、应用程序开发人员和移动库正在采用的技术,从而为具有更好功能的更现代的移动应用程序提供支持。
我希望这篇文章对您有所帮助,并且希望您能在某个时候按照这些步骤在您的 Android 应用程序中进行操作,以便顺利迁移到 Kotlin 2.0.0。
感谢阅读,祝您编程愉快!😊
文章来源:https://dev.to/marlonlom/adapt-kotlin-20-in-android-applications-3cmk