CPF-KMP-CMP:在鸿蒙上用 Kotlin 写跨平台应用
Kotlin Multiplatform + Compose Multiplatform 进入 OpenHarmony 生态的完整实践
一、背景:Kotlin 跨平台的鸿蒙拼图
Kotlin 作为 JetBrains 推出的现代编程语言,早已不只是 Android 的"官方语言"。通过 Kotlin Multiplatform(KMP) ,开发者可以将业务逻辑代码在 Android、iOS、Desktop、Web 等平台间共享;而 Compose Multiplatform(CMP) 则更进一步------它把 Android 上广受好评的声明式 UI 框架 Compose 带到了所有平台。
但 OpenHarmony(开源鸿蒙)作为新兴的独立操作系统,既不属于 Android 也不属于 iOS,JetBrains 官方并未提供原生支持。这意味着:
- 已有的 KMP/CMP 项目无法直接在鸿蒙上运行
- 鸿蒙开发者无法享受 Kotlin 跨平台带来的代码复用红利
- 声明式 UI 的鸿蒙开发生态尚属空白
CPF-KMP-CMP 正是为填补这一空白而诞生的社区。
二、CPF-KMP-CMP 是什么
CPF-KMP-CMP(Cross-Platform Framework - Kotlin Multiplatform & Compose Multiplatform)致力于将 Kotlin Multiplatform 和 Compose Multiplatform 的开发体验带入鸿蒙生态(OpenHarmony)。
其核心价值主张:
| 特性 | 说明 |
|---|---|
| 声明式 UI | 基于 Compose Multiplatform 的声明式 UI 框架,让鸿蒙应用开发更简洁高效 |
| 跨平台复用 | 一套 Kotlin 代码,同时编译为 Android、iOS 和 HarmonyOS 平台产物 |
| 原生性能 | 通过自研编译工具链和统一渲染引擎,在鸿蒙上提供接近原生的运行性能 |
| 完整工具链 | 从工程创建、编码调试、编译构建到签名推包的一站式开发体验 |
三、社区生态数据
截至 2026 年 9 月,CPF-KMP-CMP 组织的生态数据如下:
| 指标 | 数据 |
|---|---|
| 组织成员 | 202 人 |
| 关注者 | 236 |
| 核心仓库数 | 6+ |
| 总 Star | 150+ |
| 总 Fork | 150+ |
| 主要语言 | Kotlin、C++、Java、Markdown |
这是一个规模可观的社区------202 名成员的参与,说明鸿蒙生态对 Kotlin 跨平台方案有着强烈的需求。
四、技术架构:四大核心组件
CPF-KMP-CMP 的技术栈由四个核心仓库构成,形成从语言到 UI、从渲染到工具链的完整闭环。
1. kotlin --- 跨平台语言基础
kotlin 是 KMP 的核心编译器仓库,基于 JetBrains 官方 Kotlin 进行鸿蒙平台适配。
Star 43 | Fork 58 | 分支 main-2.2.21-OH
它允许开发者在不同平台(Android、iOS、HarmonyOS)之间共享业务逻辑代码。适配后的 Kotlin 编译器能够将 Kotlin 代码编译为鸿蒙平台可执行的产物,是整个跨平台方案的语言基础。
2. compose-multiplatform --- 声明式 UI 框架
compose-multiplatform 是基于 KMP 的声明式 UI 框架,用于跨平台开发。
Star 34 | Fork 19 | 分支 develop-1.9.2-OH
Compose Multiplatform 在鸿蒙上的适配意味着:
- 开发者可以用 Jetpack Compose 的语法编写鸿蒙 UI
- UI 代码可以在 Android 和 HarmonyOS 之间直接复用
- 底层使用 OHRenderer 提供硬件加速渲染
- 支持 Compose HTML 在 WebView 中渲染 UI
3. skiko --- 渲染引擎
skiko 是 KMP 使用的渲染框架,提供原生绑定和运行时桥接能力。
Star 15 | Fork 20 | 分支 develop-0.9.22.2-OH | 语言 C++
Skiko 是 Compose Multiplatform 的底层渲染引擎,基于 Skia 图形库。在鸿蒙适配中,它负责将 Compose UI 绘制到鸿蒙的原生 Canvas 上,是实现"原生性能"的关键组件。
4. ohos-kmp-toolchain --- Android Studio 插件
ohos-kmp-toolchain 是 KMP 鸿蒙应用开发的 Android Studio 插件。
Star 25 | Fork 13 | 语言 Kotlin
这个插件将鸿蒙开发集成到了开发者熟悉的 Android Studio 工作流中,支持:
- KMP 鸿蒙模版新建
- 工程同步(Gradle Sync)
- 构建、运行、调试
- 设备管理与日志查看
开发者无需切换到 DevEco Studio 就能完成鸿蒙应用的开发和调试。
五、版本发布:v2.2.21-1.0.0 正式版
2026 年,CPF-KMP-CMP 发布了首个正式版本:KMP v2.2.21-1.0.0 & CMP v1.9.2-1.0.0。
版本矩阵
| 组件 | 版本 | 状态 |
|---|---|---|
| kotlin | 2.2.21-1.0.0 | 正式版 |
| compose-multiplatform | 1.9.2-1.0.0 | 正式版 |
| compose-multiplatform-core | 1.9.2-1.0.0 | 正式版 |
| skiko | 0.9.22.2-1.0.0 | 正式版 |
| akinterop | 1.0.0 | 正式版 |
运行环境要求
| 环境 | 要求 |
|---|---|
| DevEco Studio | 6.0.0 |
| HarmonyOS SDK | API17 |
| Android Studio (Mac) | Hedgehog+ 2023.1.1 Patch 2 及以上 |
| Android Studio (Windows) | Otter 2 Feature Drop 2025.2.2 Patch 1 及以上 |
| ROM | API17,HarmonyOS Level 5.0 Release 及以上 |
正式版核心更新
KMP 部分:
- 首次支持 Windows/macOS/Linux 三平台开发鸿蒙应用
- 新增 sharedLib / staticLib / kexe 三种产物类型
- 支持 HTTP/HTTPS 本地请求
- 新增 LRU 缓存、异步文件 IO、协程调度器
CMP 部分:
- Compose 1.9 升级,OHRenderer ArkUI 5.0 渲染框架
- 支持 Navigation3、侧边栏、Column、折叠栏等组件
- 新增 Shadow、Material3 AlertDialog
- CMP UI 支持与 HarmonyOS 原生 Navigation/Navigation3 互操作
互操作能力:
- 新增
@Composable和@ArkEntry互调能力 - 支持 ArkTS 与 Compose UI 双向调用
- DMA 共享内存实现高效数据交换
六、开发环境与快速上手
环境要求
| 工具 | 用途 |
|---|---|
| Android Studio (>=2024.2.1) | Kotlin/KMP 工程开发 |
| DevEco Studio | 鸿蒙工程管理、签名与推包 |
| HarmonyOS 模拟器或真机 | 运行鸿蒙应用 |
| 华为开发者账号 | 签名调试 |
快速上手步骤
1. 安装 Android Studio,配置 Gradle JDK 为 JDK17
2. 安装 Kotlin 和 Kotlin Multiplatform 插件
3. 安装 ohos-kmp-toolchain 工具链插件(离线安装)
4. Gradle Sync → 启动鸿蒙工程 → 运行到模拟器或真机
七、文档与资源
CPF-KMP-CMP 提供了完善的中文文档,涵盖:
| 分类 | 内容 |
|---|---|
| 入门 | 快速开始、入门指南、工具链手册、框架介绍、架构介绍 |
| UI 开发 | 核心概念、布局、导航、资源管理、ViewModel、CMP 组件库 |
| 深入开发 | 功能开发、三方库、平台集成(FFI/CAPI)、编译构建、调试 |
| 资源 | FAQ、示例工程 |
Release Notes
- KMP v2.2.21-1.0.0 & CMP v1.9.2-1.0.0(正式版)
- KMP v2.2.21-0.4.0 & CMP v1.9.2-0.4.0(beta2)
- KMP v2.2.21-0.3.0 & CMP v1.9.2-0.3.0(beta1)
八、总结
CPF-KMP-CMP 解决了一个关键问题:让 Kotlin 跨平台开发者能够用已有的技术栈进入鸿蒙生态。
它的价值不仅在于技术适配,更在于降低了鸿蒙应用开发的门槛------开发者可以用熟悉的 Kotlin 语法、Android Studio 工具链、Compose 声明式 UI,编写出同时支持 Android、iOS 和 HarmonyOS 三大平台的应用。
| 传统鸿蒙开发 | 使用 CPF-KMP-CMP |
|---|---|
| 需要学习 ArkTS | 用 Kotlin 即可 |
| 使用 DevEco Studio | Android Studio 也能开发 |
| UI 框架与 Android 不兼容 | Compose UI 可复用 |
| 业务逻辑无法跨平台 | 一套代码三端运行 |
| 工具链生态尚不成熟 | 复用 Android/KMP 生态 |
对于已有 KMP/CMP 项目的团队,迁移到鸿蒙的路径已经打通;对于新的跨平台项目,从第一天起就可以将鸿蒙纳入目标平台。
九、相关链接
- 组织主页 :https://atomgit.com/CPF-KMP-CMP
- 文档中心 :https://atomgit.com/CPF-KMP-CMP/docs
- Kotlin 仓库 :https://atomgit.com/CPF-KMP-CMP/kotlin
- Compose Multiplatform :https://atomgit.com/CPF-KMP-CMP/compose-multiplatform
- Skiko 渲染引擎 :https://atomgit.com/CPF-KMP-CMP/skiko
- 工具链插件 :https://atomgit.com/CPF-KMP-CMP/ohos-kmp-toolchain
如果你是 Kotlin 开发者,想要进入鸿蒙生态,CPF-KMP-CMP 提供了一条从语言到 UI、从工具到文档的完整路径。202 名社区成员正在共同推动这个生态的成长。