Kotlin 2版本即将发布

K2编译器本身已经准备就绪: JetBrains 现在正处于消除最终错误或推迟到 2.0.20/2.1.0 的阶段。从 RC1 开始,您可以发布新的二进制文件,供仍以 Kotlin 1.9 为目标的项目使用(Kotlin 支持 N+1 前向兼容性)。您今天应该能够在您的项目中使用 K2 2.0.0-RC2。

Gradle Gradle 是一个充满力量的构建系统,您最有可能在其中遇到与 K2 的集成问题,尤其是在重要或多平台项目中。在撰写本文时,KGP(kotlin gradle 插件)2.0 在我测试的项目中没有留下任何问题。 Compose Multiplatform 和 KMP 插件仍然有一些粗糙的边缘,即使用启用了 compose 资源生成的桌面应用程序。

K2 IDE 插件模式 看来 K2 IDE 插件不会随 K2 本身一起发布。它目前仍处于 alpha 阶段,并且在最新的 Android Studio 稳定版本中不可用。

编译器插件 虽然还不是一个稳定的 API,但许多项目都使用某种形式的编译器插件。流行的例子包括 Compose、kotlinx-serialization、zipline 等。我还发布了几个 - redacted-compiler-pluginMoshiX。对于几乎所有这些,您都需要找到一个与 2.0 兼容的版本来测试 K2,因为编译器 API 在版本之间经常发生变化,并且需要在其之上构建新的插件版本。任何第一方插件(即托管在 Kotlin monorepo 中)都不需要这个,因为它们是用 Kotlin 本身进行版本控制的。

Compose Compose 的编译器正在迁移到 K2 的 Kotlin monorepo,使其能够与 Kotlin 同时发布。 JetBrains 和 Google 已经编写了很好的设置指南。

KAPT KAPT 是 Kotlin 的 Java 注解处理工具。 Dagger、AutoValue 等流行处理器仍然依赖它在 Kotlin 项目中工作。

KAPT 4 仍处于预览阶段,在 K2 发布时可能不会默认启用,但无论如何您仍然应该尝试一下。

KSP2 KSP是 Kotlin 优先的注释处理工具,旨在在大多数用例中取代 KAPT。与 KAPT 一样,KSP 是建立在 之上的AnalysisHandlerExtension,因此需要重新实现以支持 K2。这称为 KSP2。它计划与为 KSP 1 编写的处理器实现 API 兼容。

Kotlin 元数据 kotlinx-metadata-jvm是一个用于高效读取和写入 Kotlin@Metadata注释的 API。许多 Java 注释处理和静态分析工具使用它来理解有关它们正在处理/分析的字节码的 Kotlin 语言功能。

Android Lint Android Lint 的分析核心有一个新的 K2 UAST 实现,但它仍处于实验阶段,在 K2 发布后的一段时间内可能不会默认启用。但是,如果它适合您,您应该尝试并使用它。 Android 团队对提交的问题反应非常迅速,经常在一个版本中修复问题。与 KSP2 一样,它也是构建在 K2 中新的分析 API 之上。

性能 K2 有望显着提高编译器和 IDE 插件的性能