Kotlin logo

Kotlin

A concise multiplatform language developed by JetBrains

Kotlin Multiplatform Releases Toolchain

Kotlin Toolchain 0.12:支持发布多平台库、Wasm 应用等功能

Read this post in other languages:

Kotlin Toolchain 0.12.0 已发布。此版本带来了多项期待已久的功能:支持发布多平台库、Wasm 应用支持预览、从命令行使用 Compose Hot Reload 等。

请继续阅读以了解详情,并查看发布说明,获取完整的变更和问题修复列表。

此外,klibs.io 现已在生产环境中使用 Kotlin Toolchain。这是一个真实的后端项目,而非示例;它基于 JDK 21、Spring Boot 4(以及 Spring AI)、PostgreSQL 和 OpenSearch 构建。我们已将 9 个约定插件转换为 Kotlin Toolchain 模板,还把两个没有内置对应项的 Gradle 插件——Jib 和 Git Properties——实现为本地 Kotlin Toolchain 插件。欢迎自行查看源代码

要使用 Kotlin Toolchain 的最新功能,请使用 IntelliJ IDEA 2026.2.1 或更高版本,并确保安装了最新版 Kotlin Toolchain 插件

试用 Kotlin Toolchain

发布 Kotlin Multiplatform 库

库发布功能已在 0.11 中以预览形式推出,但当时仅支持 JVM 库。从 0.12 开始,多平台库也可以使用完全相同的配置进行发布:

product:
  type: lib
  platforms: [jvm, android, iosArm64, iosSimulatorArm64, wasmJs]

settings:
  publishing:
    enabled: true
    group: org.example
    version: 1.0.0

Kotlin Toolchain 会发布用户从任意目标依赖您的库时所需的全部内容:公共 API、每个平台对应的产物、源代码,以及供构建工具自动选择正确内容的模块发布元数据。

同时还支持 C 互操作绑定。系统会同时发布经公共化处理的绑定和各平台对应的绑定,因此用户无需自行设置互操作,即可获得与您编译时使用的相同 C API。生成的结果可以像其他多平台库一样供 Gradle 项目使用。

更多信息请参阅文档

注意:Compose Multiplatform 库的资源目前尚未包含在发布产物中。您可以关注 KTC-5698 了解进展。

更好地遵守 Maven Central 配额

由于 Sonatype 即将实施新的 Maven Central 发布配额,我们进行了一些重要调整,以减少默认发布的文件数量:

  • 签名文件的校验和(.asc.sha1)并非必需,因此不再发布。
  • 现在默认仅发布 .md5.sha1 校验和。如果您仍需发布 .sha256.sha512 校验和,请使用 settings.publishing.checksums: [md5, sha1, sha256, sha512]

Wasm 应用支持

现在可以将 wasm-js/app 模块构建为可直接使用的 Web 应用。

Kotlin Toolchain 构建的 Wasm 应用

支持的功能包括:

  • 使用 kotlin run 命令运行 Wasm 应用。
  • 自定义 index.html 和其他资源。
  • 从 Kotlin Multiplatform 库获取传递性 npm 依赖项。

有关使用 Wasm Web 应用的更多信息,请参阅文档

终端 UI 改进

我们正在积极努力,让 kotlin 命令的输出更简洁、更易于使用。

诊断

以下是近期的一些诊断改进示例:

诊断信息改进前后对比

状态小组件中的测试

正在运行的测试现在会显示在状态小组件中相应的任务及其测试套件下方。运行过程中还会显示简短的测试执行统计信息。

仍有一些细节需要打磨,但我们会逐步完善。

IDE 改进

Compose 预览支持

Android 模块,以及将 Android 作为目标之一的 kmp/lib 模块,现在均支持 Compose 预览功能。此功能由 androidx.compose.ui.tooling.preview.Preview 注解和 Android 插件提供支持。

更好地支持 Compose 资源

IDE 现在能够正确识别 Compose 资源、实时更新 Res 类,并提供导航、补全和重构功能,同时更新 XML 和代码。

IDE 中的 Compose 资源支持

Android 工具改进

除了上述 Compose 预览支持之外,我们还支持了更多您熟悉的 Android 功能,包括:

  • Android Lint
  • Live Edit
  • Layout Inspector
  • 资源(R 类)导航和补全

iOS 改进

从 IntelliJ IDEA 2026.2.1 开始,使用 iOS 应用的体验将更接近您在 Gradle 项目中所熟悉的体验。

现在,您可以在运行配置中选择设备、配置 Xcode 选项,以及选择调试或发布配置模式。

iOS 运行配置中的 Xcode 选项

我们还修复了一些 Kotlin/Swift 互操作问题,现在应该更加稳定。

目录依赖项坐标的嵌入提示

模块文件和模板中的目录依赖项现在会在旁边显示嵌入提示,展示每个条目指向的坐标。

目录依赖项的坐标嵌入提示

更好地支持 Compose Hot Reload

现在,我们已使用 kotlin run --compose-hot-reload-mode 命令,正确支持从命令行使用 Compose Hot Reload。

常规改进

  • 首次重新加载的速度显著提升,并且构建消耗的资源应该更少。
  • 现在支持 DevTools 菜单中的 Restart the application 操作。

Compose Hot Reload MCP

我们现在支持一个 MCP 服务器,使智能体能够与通过 Compose Hot Reload 运行的应用进行交互。

首先,请在 mcp.json 中添加以下代码片段:

{
    "mcpServers": {
        "Compose Hot Reload": {
            "command": "./kotlin",
            "args": [
                "compose-hot-reload-mcp-server"
            ]
        }
    }
}

完成此设置后,智能体可以与应用交互、重新加载和重启应用、查看窗口快照,以及转储 composable 树。您可以在此处详细了解这些功能。

其他改进

使用 // 前缀的新推荐本地依赖格式

此前,定义本地模块依赖项的唯一方式是使用以 .(点)开头的相对路径。这种方法存在一些问题。例如,将模块从一个目录层级移动到另一个层级时,必须修改所有依赖路径,比如从 ../../foo 改为 ../foo。此外,在深度嵌套的目录结构中,大量出现 ../ 通常会让路径难以阅读。

现在推荐使用以 // 前缀开头、相对于项目根目录的路径来定义本地模块依赖项。您可能在 Bazel 等工具中见过这种语法。// 前缀表示项目根目录,不仅可以在 dependencies 块中使用,也可以在任何需要路径的位置使用,例如 apply

相对路径与项目根路径的本地依赖项对比

目前,旧的相对路径方式仍然有效。

这是朝着允许多个模块使用相同目录名称迈出的一步。

提高最低 JDK 和 Kotlin 版本

此前,Kotlin Toolchain 支持的最低 JDK 版本没有在任何位置明确记录。如果使用的 JDK 版本过低,构建只会在不同位置失败。现在我们提供了清晰的诊断和明确的最低要求:编译代码仅支持 JDK 17 及更高版本。如果代码需要在较低版本的 JRE 上运行,仍然可以使用 settings.jvm.release 设置更低的目标版本。

Kotlin 编译器的最低版本已从 2.1.10 提高到 2.2.20。这有助于简化我们的代码,也符合 Kotlin 标准库新的安全支持政策

更新默认版本

我们还更新了一些内置工具链和框架的默认版本:

  • Kotlin 2.4.10
  • JDK 25
  • JUnit Platform 6.1.3
  • KSP 2.3.11
  • Ktor 3.5.2
  • Spring Boot 4.1.0
  • DataFrame 1.0.0-rc01
  • Kotlinx.rpc 0.10.3

试用 Kotlin Toolchain 0.12.0

要开始使用 Kotlin Toolchain,请查看我们的入门指南。您可以根据自己的学习方式查看示例、按照教程操作,或阅读完整的用户指南。

试用 Kotlin Toolchain

要更新现有项目,请使用 kotlin update 命令。

分享反馈

Kotlin Toolchain 目前仍处于 Alpha 阶段,并在积极开发中。您可以加入 #kotlin-toolchain Slack 频道参与讨论(获取邀请:https://kotl.in/slack),分享您的使用体验;也可以通过 YouTrack 问题提出建议和想法。您的反馈和使用场景将帮助我们塑造 Kotlin Toolchain 的未来!

本博文英文原作者:Joffrey Bion

本文由 AI 辅助翻译,并经人工审校。如发现任何问题,欢迎在评论区留言指正。

Discover more