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 |
由于 Compose Multiplatform 基于 Jetpack Compose,使用这两个框架的体验非常相似。
它们均由 Compose 编译器与运行时驱动,采用相同的核心概念和 UI 构建 API,
包括 @Composable
函数、 remember
等状态处理 API、 Row
和 Column
等 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 | |
---|---|---|
支持 | 支持 | |
支持 | 支持 | |
支持 | 支持 | |
支持 | 支持 | |
支持 | 支持 | |
支持(除 | 支持 | |
支持 | 支持 | |
支持 | ||
支持 | ||
支持 | ||
资源管理 | 使用 | 使用 |
不支持 | 支持 | |
用于 UI 组件、导航、架构等的 第三方库 | 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 实现详情: