Kotlin Multiplatform Development Help

Compose Multiplatform 与 Jetpack Compose

Compose Multiplatform 是由 JetBrains 开发的跨平台 UI 工具包。
它通过支持更多平台,扩展了谷歌为 Android 开发的 Jetpack Compose 工具包。

Compose Multiplatform 使 compose API 可通过 Kotlin 通用代码调用,
允许你编写可在 Android、iOS、桌面和 Web 上运行的共享 compose UI 代码。

Compose Multiplatform

Jetpack Compose

支持平台

Android、iOS、桌面、Web

Android

维护方

JetBrains

Google

由于 Compose Multiplatform 基于 Jetpack Compose,使用这两个框架的体验非常相似。
它们均由 Compose 编译器与运行时驱动,采用相同的核心概念和 UI 构建 API,
包括 @Composable 函数、 remember 等状态处理 API、 RowColumn 等 UI 组件、
修饰符、动画 API 等。这意味着你可以将 Jetpack Compose 的现有知识复用于 Compose Multiplatform,
并能参考几乎所有 Jetpack Compose 资料(包括 谷歌官方文档)。

当然,Compose Multiplatform 也有平台特定的功能与注意事项:

  • Android 专属组件页面列出了与 Android 平台紧密绑定的 API,因此无法在通用 Compose Multiplatform 代码中使用。

  • 部分平台专属 API(如桌面的窗口处理 API 或 iOS 的 UIKit 兼容 API)仅在其对应平台可用。

以下是常用组件与 API 的可用性概览:

Compose Multiplatform

Jetpack Compose

Compose 动画

支持

支持

Compose 编译器

支持

支持

Compose 基础库

支持

支持

Compose Material

支持

支持

Compose Material 3

支持

支持

Compose 运行时

支持(除 androidx.compose.runtime.rxjava2androidx.compose.runtime.rxjava3 外)

支持

Compose UI

支持

支持

Jetpack 生命周期

支持

支持

Jetpack ViewModel

支持

支持

Jetpack Navigation Compose

支持

支持

资源管理

使用 Res 类的 Compose Multiplatform 资源库

使用 R 类的 Android 资源系统

地图 Compose

不支持

支持

用于 UI 组件、导航、架构等的 第三方库

Compose Multiplatform 库

Jetpack Compose 和 Compose Multiplatform 库

技术细节

Compose Multiplatform 基于谷歌发布的代码与版本构建。
虽然谷歌专注于 Android 版 Jetpack Compose,
但谷歌与 JetBrains 密切合作以实现 Compose Multiplatform。

Jetpack 包含谷歌为 Android 发布的一线库(如 Foundation 和 Material)。
为了让 这些库 的 API 能在通用代码中使用,
JetBrains 维护了这些库的多平台版本,并针对非 Android 平台发布。

为 Android 构建 Compose Multiplatform 应用时,实际使用的是谷歌发布的 Jetpack Compose 构件。
例如,添加 compose.material3 依赖时,Android 目标会使用 androidx.compose.material3:material3
而其他目标会使用 org.jetbrains.compose.material3:material3
这是基于多平台构件中的 Gradle 模块元数据自动完成的。

Compose Multiplatform 生态库

通过 Compose Multiplatform,你可以将使用 compose API 的库发布为 Kotlin 多平台库
使其能通过通用 Kotlin 代码在多个平台上使用。

因此,如果你正在构建新的 compose API 库,建议利用此特性将其开发为基于 Compose Multiplatform 的多平台库。
若已有 Android 版 Jetpack Compose 库,可考虑将其升级为多平台库。
生态中已有 大量 Compose Multiplatform 库

当库通过 Compose Multiplatform 发布时,仅使用 Jetpack Compose 的应用仍可无缝使用它——它们只需调用该库的 Android 构件。

后续步骤

阅读以下组件的 Compose Multiplatform 实现详情:

22 四月 2025