ITmob-Ly
发布于 2024-09-13 / 301 阅读
0

如何将 Android 项目迁移到 Kotlin 2.0 和新版本的 Jetpack Compose Compiler?

2024年5月21日,Kotlin 2.0.0 版本已发布,新的 Kotlin K2 编译器已稳定。这里简要介绍一下我在我的 Android 项目为了迁移到 Kotlin 2.0 进行的更改。

以下几个简单步骤可确保顺利迁移:

确保使用的是最新版本的 Android Studio 和 Kotlin 插件,以避免兼容性问题。

1. 将版本信息和插件添加到 Version Catalog 文件

此步骤涉及更新项目的libs.versions.toml文件以包含必要的KotlinCompose 编译器版本。

[versions]
kotlin = "2.0.0"

[plugins]
org-jetbrains-kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }

compose-compiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" }

2. 修改根目录的 Gradle 文件

在根目录的 build.gradle.kts 文件中添加 Compose Compiler 插件。

plugins {
    alias(libs.plugins.compose.compiler) apply false
}

3. 删除旧版本的 Compose Compiler

指定旧版本 Compose 编译器的 Compose Options 选项 kotlinCompilerExtensionVersion 不再需要,在根目录的 build.gradle.kts 文件中将它删除。

android {
    // 删除旧版本的 Compose 编译器
    // composeOptions { kotlinCompilerExtensionVersion = "1.5.14" }
}

4. 在使用 Compose 的模块中应用 Compose Compiler

每个使用 Jetpack Compose 的模块都需要明确地应用 Compose 编译器插件。

plugins {
    alias(libs.plugins.compose.compiler)
}

5. 添加 .gitignore 文件

Kotlin 2.0 引入了一个新的构建输出目录:*.kotlin ,*需要将其添加到 .gitignore 文件中

# Kotlin 2.0 
.kotlin/

6. 配置 Compose Compiler(可选)

可选的 Compose 编译器配置,例如启用 enableStrongSkippingMode。在使用 Compose 的模块的 build.gradle.kts 文件中配置

android {
    //...
    composeCompiler {
        enableStrongSkippingMode = true
        includeSourceInformation = true
    }
}

7. 更新 Compose Compiler 依赖项(可选)

如果在项目构建设置中直接引用 Compose 编译器,而不是使用 AGP (Android Gradle Plugin) 来应用 compose 编译器插件。这种情况需要使用 Kotlin 存储库中的新依赖项替换旧的 Compose 编译器依赖项。

dependencies {
    // 删除旧的 Compose Compiler 依赖项
    // implementation("androidx.compose.compiler:compiler")
    // implementation("androidx.compose.compiler:compiler-hosted")

    // 添加新的依赖项
    implementation("org.jetbrains.kotlin:kotlin-compose-compiler-plugin-embeddable:2.0.0")
    implementation("org.jetbrains.kotlin:kotlin-compose-compiler-plugin:2.0.0")
}

其他

What's new in Kotlin 2.0.0

Jetpack Compose compiler moving to the Kotlin repository

K2 compiler migration guide