面向 Android / iOS / 后端开发者 · 数据截至 2026年10月

KMP 与 CMP:路线图、现状与评价 · 2026

官方路线图、Compose Multiplatform 现状、社区一线评价与优缺点,附分阶段学习路线。

8 个阶段 · 约 9–16 周到可上线 · 数据截至 2026年10月

截至 2026年10月

KMP 已可用于五类平台的生产环境。

官方定位:Android、iOS、桌面、Web、服务端均已可用于生产。

9–16 周阶段 0–6 合计
Compose Multiplatform 各平台状态 · 来源
平台Compose UI
AndroidStable
iOSStable
桌面(JVM)Stable
Web(Wasm)Beta

环境就绪清单:开工前先装好这六样。

iOS 相关项需要 macOS。

  • JDK 17+必需
  • Android Studio 或 IntelliJ IDEA 安装 Kotlin Multiplatform 插件必需
  • Xcode 仅 macOS,用于 iOS 构建、运行与编辑 SwiftiOS 需要
  • Android 模拟器必需
  • iOS 模拟器 随 Xcode 安装iOS 需要
  • Git必需

阶段 0 → 7

附:分阶段学习路线

达到完成标志再进入下一阶段。

00

预备

打牢 Kotlin、协程与 Gradle 基础

  • Kotlin 语法:空安全、数据类、密封类、扩展函数、Lambda
  • 协程与 Flow 基础
  • Gradle Kotlin DSL 与 version catalog(libs.versions.toml)
推荐时长
1–2 周
完成标志
能用协程写一个并发网络请求小程序

01

KMP 基础

理解项目结构,双端跑通

  • 项目结构:commonMain / androidMain / iosMain 源集
  • expect / actual
  • 目标平台配置
  • 用 kmp.jetbrains.com 生成项目
  • 在 Android 模拟器与 iOS 模拟器运行(需 macOS + Xcode)
推荐时长
1–2 周
完成标志
同一份共享代码在两个平台跑通
KMP 向导

02

共享业务逻辑

网络、存储与架构全部放进共享层

  • 网络:Ktor Client + kotlinx.serialization
  • 本地存储:SQLDelight 或 Room(KMP)、DataStore
  • kotlinx.datetime、kotlinx.coroutines
  • 依赖注入:Koin;日志:Kermit
  • 架构:Repository + 多平台 ViewModel(androidx lifecycle viewModel 2.11 已支持多平台)
推荐时长
2–3 周
完成标志
共享层完成“拉取列表→缓存→离线可读”

03

Compose Multiplatform UI

一套 UI 写两端

  • Composable、状态管理、Material 3
  • 多平台资源:字符串 / 图片 / 字体
  • 导航:Navigation Compose 多平台 2.10
  • 图片加载:Coil 3
  • 通用 @Preview、Compose Hot Reload(桌面即时预览) 来源
推荐时长
2–4 周
完成标志
一套 UI 同时跑在 Android 与 iOS

04

与 iOS 原生互操作

让 Swift 顺畅调用共享代码

  • Kotlin/Native 与 Objective-C / Swift 互操作
  • Swift export(持续改进中) 来源
  • Swift 包可作为依赖(Kotlin 2.4 起) 来源
  • 在 Swift 中调用挂起函数与 Flow:SKIE(易配置,Flow 映射为 AsyncSequence)或 KMP-NativeCoroutines(更成熟)
  • 在 SwiftUI 中嵌入 Compose,或反之
推荐时长
1–2 周
完成标志
iOS 端有一个 SwiftUI 页面调用共享 ViewModel

05

测试与质量

给共享层加上测试

  • kotlin.test、commonTest
  • 协程测试:kotlinx-coroutines-test
  • Turbine 测试 Flow
  • Compose UI 测试
推荐时长
1 周
完成标志
共享层测试覆盖核心逻辑

06

构建、发布与 CI

打包、上架、自动化

  • Android 打包签名
  • iOS 通过 Xcode 归档上架
  • CI:GitHub Actions / Xcode Cloud
  • 发布 KMP 库到 Maven Central
推荐时长
1–2 周
完成标志
两端各出一个可安装包

07

进阶

扩展到更多平台,深入底层

  • 桌面(JVM)与 Web(Wasm,Beta)目标 来源
  • Ktor 服务端共享模型
  • 性能与 Kotlin/Native 内存
  • 增量编译
  • 开源示例学习
推荐时长
持续

官方路线图 · 2026年9月更新

官方路线图:JetBrains 接下来做什么

来源:Kotlin roadmap

1 · 语言演进

简洁、表达力强,重安全与人体工学。

2 · Kotlin Multiplatform

凭扎实的 iOS 体验、成熟的 Web 目标和可靠的 IDE 工具,成为现代跨平台应用的基础。

3 · 保持中立

不论开发者用什么工具、面向什么平台,都支持。

  • Swift Export 从 Alpha 推进到 Beta进行中来源
  • Kotlin/Native 调试器 集成 Xcode进行中来源
  • Compose Multiplatform iOS 默认使用原生文本输入进行中来源
  • Skiko 引入 Graphite 提升渲染可靠性与 GPU 支持进行中来源
  • Kotlin/Native release 模式编译缓存进行中来源
  • Swift Export Alpha 发布 Kotlin 2.4已完成来源
  • iOS 新 TextInputService已完成来源
  • 支持 Swift 6.3已完成来源
  • Navigation3 在 Compose Multiplatform 上稳定已完成来源
  • Kotlin/Wasm 多模块编译已完成来源

分离编译(可选)

Kotlin 2.5.0-Beta1 为 KMP 引入可选的“分离编译”方案:编译结果与 IDE 分析一致,并为 common 源集带来增量编译。

JetBrains 博客,2026-09-28

Kotlin/Native 更快

在 Google Docs 代码库上,构建比一年前快 25%,内存不到一半。

JetBrains,2026年5月数据

注意:Swift 互操作稳定尚未兑现

JetBrains 2025年8月曾计划“2026年 Swift 互操作达到稳定”,截至 2026-10-03 尚未实现(abd3lraouf.dev)。

X(Twitter)与社区怎么说

共享逻辑普遍被看好,共享 UI 在 iOS 上褒贬不一。

@kotlin / @jetbrains 2026-01

JetBrains 官方账号

2025 年 KMP 在 Top 1 万应用中的占比翻倍,绝对增长与 React Native、Flutter 相当。

Duolingo、抖音、麦当劳、Google Docs、Zomato、H&M 都在用;81% 的团队用 Compose Multiplatform 共享 UI。

X 原帖

@kotlin 2026-07

X 公司:新版 X Android 应用 100% Kotlin,X Chat 用 KMP 覆盖 Android/iOS/Web

新版 X Android 应用 100% Kotlin。

X Chat 用 KMP 覆盖 Android、iOS、Web:端到端加密、存储、同步、业务逻辑只写一次。

X 原帖

开发者实战 LinkedIn,2026-03

Yevhen L. · 西班牙 Android/KMP 工程师 · 自 CMP 1.8 起开发一款大型 KMP+CMP 应用(App 名未公开),Intel Mac 上 iOS debug 构建 5→3 分钟

“总体体验非常正面。”

从 CMP 1.8 起做大型应用;iOS 返回手势等问题已修复,iOS debug 构建从 5 分钟降到 3 分钟,但 iOS 仍有平台小坑。

开发者转向 LinkedIn,2026-06 / 2026-08

2026-06:Ali M. · 荷兰 KMP 开发者 · 自己的跨平台应用(Android/桌面/iOS/macOS,App 名未公开),共享层用 Ktor、SQLDelight、ViewModel,iOS/macOS 改用 SwiftUI

2026-08:Masab Ejaz · 巴基斯坦 Android/Kotlin 开发者 · 个人产品(App 名未公开),改为 KMP 共享逻辑 + Jetpack Compose / SwiftUI

离开 Compose Multiplatform,但不离开 KMP。

有团队虽用 CMP 共享了约 95% UI,仍改回 iOS 用 SwiftUI:非原生滚动、嵌套滚动和手势的“恐怖谷”太难磨平。另一位开发者改为共享业务逻辑、各平台原生 UI。

生产聊天应用 LinkedIn,2026-08

Amir Choupannejad(团队成员 Keyvan Norouzi、Ali Saranj)· 已上线的 KMP+CMP 聊天应用:实时消息、文件分享、VoIP 通话,Android+iOS(App 名未公开)

KMP + CMP 上线,但关键系统能力仍靠原生 Swift。

CallKit、PushKit、分享扩展、钥匙串用 Swift 实现;构建时间比纯原生长,和 SwiftUI 仍有细微差异。

评测 ninetwothree,2026-07

NineTwoThree · 软件开发公司 · 自建电商演示应用 Storium 做的评测

iOS 上 CMP 通过 Skia 渲染,而非 UIKit。

阴影、滚动回弹、文本选择与原生有差异;首次渲染可能因着色器编译变慢。

阅读评测

官方调查 kotlinlang.org,2026-08

JetBrains · Kotlin Multiplatform Survey 2025

约 70% 插件用户满意或非常满意。

约 80% 使用 Compose Multiplatform。

X 上公开可检索的个人观点有限,部分观点来自 LinkedIn、Medium、DEV 等开发者社区。

优缺点一览

2026 年的普遍共识:“共享逻辑几乎没有争议,是否共享 UI 因项目而异”。

优点

  • 原生编译,无 JS 桥和额外运行时
  • 可按模块、按页面渐进引入,不必重写
  • 业务逻辑一次编写,减少“Android 修了 iOS 没修”的 bug
  • UI 共享可选,可随时回退原生
  • Google 官方支持:Jetpack 库多平台化(lifecycle、ViewModel、DataStore、Room、Navigation)
  • 大厂生产验证
  • Android 开发者上手成本低

缺点

  • Swift 互操作仍不完美:Swift Export 仍是 Alpha,挂起函数/Flow 需 SKIE 或 KMP-NativeCoroutines
  • iOS 构建慢于纯原生
  • CMP 在 iOS 上手势、滚动、文本与原生有差异
  • iOS 团队需学习 Kotlin 和 JetBrains 工具,且插件将不再支持 Swift 编辑 来源
  • 部分第三方 SDK 无多平台版本
  • Gradle 配置可能变复杂
  • Web(Wasm)仍是 Beta 来源

怎么选

适合:已有 Kotlin/Android 团队、逻辑重的应用、MVP 与效率类应用、想渐进共享。

需谨慎:极度追求 iOS 原生质感的消费级应用、团队无 Kotlin 经验且工期紧、主要是 UI 的应用。

Compose Multiplatform

Compose Multiplatform(CMP)现状与路线

官方称“移动端和桌面已可用于生产”,Web 仍是 Beta。

平台状态(kotlinlang.org/compose-multiplatform)
平台 状态 说明
iOS Stable 自 1.8.0(2025 年 5 月) 来源
Android Stable 基于 Jetpack Compose 来源
桌面 Windows / macOS / Linux Stable — 来源
Web(Wasm) Beta 自 1.9.0(2025 年 9 月) 来源
  1. 2025-05

    1.8.0:iOS 稳定 来源
  2. 2025-09

    1.9.0:Web Beta 来源
  3. 2026-05

    1.11.0 来源
  4. 2026-08-25

    1.12.0 来源
  5. 2026-09-10

    1.13.0-alpha01:预览版 来源

    预览

  6. 2026-09-22

    1.12.1:当前稳定版 来源

    当前稳定

1.11 重点

  • iOS 实验性原生文本输入(基于 UIView):精确光标、原生选择手柄、系统菜单含自动填充/翻译/搜索 来源
  • iOS 并发渲染管线默认开启,复杂布局最高约 +20% 来源
  • placedAsOverlay:便于与原生 Liquid Glass 组件互操作 来源
  • Compose UI 测试 API v2 来源
  • Web 触摸处理重写,滚动接近原生 来源
  • 最低 iOS 版本升至 14.0 来源

1.12 重点

  • Compose Hot Reload 内置实验性 MCP 服务器:AI 编码代理可触发重载、截图、检查语义树、模拟点击与输入、读日志(仅桌面目标,Android/iOS 暂不支持热重载) 来源
  • iOS 懒加载列表滚动更流畅(列表项停用移出绘制阶段) 来源
  • Web 自动按需下载 Noto 字体子集(日文、阿拉伯文、天城文、emoji) 来源
  • 桌面窗口/对话框 API v2(实验性) 来源
  • Skia 升级到 Milestone 150 来源
  • VoiceOver 支持 LiveRegion 来源

补丁版

CMP 1.12.1 改了什么

1.12.1(2026-09-22)是 1.12.0 之后的补丁版,只修 bug,没有新功能。来源

平台 修复
迁移提示 多平台 临时重新公开 LocalSystemTheme(标为 @InternalComposeUiApi 并已弃用),后续版本会删除。来源
多平台
  • 修复 Skia 在无操作参数组合下返回 null ColorFilter 导致的崩溃
  • 修复在 SelectionContainer 里选中文字时的若干崩溃
来源
iOS
  • 修复 iOS 16 及更早系统上文本工具栏不显示
  • 修复 SelectionContainer 内含 TextField 时工具栏不出现
  • 修复无障碍元素被释放后 iOS 读取其属性导致的崩溃
来源
Web 修复点了选区拖柄但没拖动时虚拟键盘被收起。来源
Resources 修复与 Kotlin 2.5 的兼容性。来源
依赖 基于 Jetpack Compose 1.12.1;Material3 仍是 1.12.0-alpha03(对应 Jetpack Material3 1.5.0-alpha22),Navigation3 1.1.2,Lifecycle 2.11.0。来源

官方计划

CMP 路线图(官方)

JetBrains 没有单独的 CMP 路线图页面:CMP 的计划写在 Kotlin 路线图的 Multiplatform 部分(2026-08-20 更新,下次 2027-02),以及 KMP/CMP 方向文章里。官方不承诺具体版本。来源

出自 Kotlin 路线图
事项 状态 来源
让 iOS 原生文本输入(Native Text Input)成为默认 🆕 进行中 CMP-10598
通过 Skiko 的 Graphite 提升渲染可靠性、面向未来的 GPU 支持 🆕 进行中 SKIKO-982
Kotlin/Wasm 升到 Stable CMP Web 走向稳定的前提,CMP Web 目前仍是 Beta 🆕 进行中 KT-88663
稳定 Navigation3 for CMP ✅ 已完成 KT-84571
iOS 新 TextInputService ✅ 已完成 KT-84569
上一份 KMP/CMP 方向文章(2025-08,Emil Flach)里的 CMP 目标及现状 · 来源
目标 现状
CMP Web 进入 Beta 已于 1.9.0(2025-09)完成
统一 @Preview 注解 已于 1.10.0 完成
iOS 新文本输入 1.11 实验性提供,下一步是设为默认
更多 Jetpack 库多平台化 Navigation 3、Paging 3 Navigation 3 已稳定
Web 用 Kotlin/JS 兼容模式兜底老浏览器 —

下一个版本线是 1.13(1.13.0-alpha01 已于 2026-09-10 发布)。

生态补充

Aleksa Simic · 团队在多个项目中主要用 Compose Unstyled

Material 3 多平台仍在 alpha 线;iOS 风格组件可用 Compose Cupertino,或用 Compose Unstyled 自建设计系统。来源

X 与社区对 CMP 的评价

逻辑共享不难卖,难的是“iOS 上感觉原生吗”。

@jetbrains X,2026-01

JetBrains 官方账号

81% 的 KMP 团队用 Compose Multiplatform 共享 UI。

X 原帖

JetBrains 开发者布道 LinkedIn,2026-08

发帖:Márton Braun · JetBrains 开发者布道师;评论:Konstantin Kustau

“每次发版我先看 iOS 性能那一条——逻辑共享从来不难卖,难的是‘iOS 上感觉原生吗’。”

1.12 带来 iOS 性能提升;上面这句来自评论区。

CMP Web(Wasm)是 canvas 渲染,对 SEO 不友好。

另一位评论者 Kashif Mehmood 抓取了 4 个已上线的 Compose Wasm 应用,关掉 JS 后标题和段落都是 0。

大型应用开发者 LinkedIn,2026-03

Yevhen L. · 西班牙 Android/KMP 工程师 · 自 CMP 1.8 起开发一款大型 KMP+CMP 应用(App 名未公开),Intel Mac 上 iOS debug 构建 5→3 分钟

总体非常正面。

iOS debug 构建从 5 分钟降到 3 分钟;但 Lazy 列表快速滑动偶有抖动、缺少完整 Cupertino 主题、iOS Liquid Glass 毛玻璃“几乎做不到”。

开发者 LinkedIn,2026-05

Marko Stankovic · 塞尔维亚移动开发者 · 用 expect/actual 分平台渲染对话框、文本框、导航栏(App 名未公开)

2026 年的 CMP 能做到原生质感的 85–90%。

剩下 10–15% 靠平台经验;关键交互(对话框、文本输入、导航栏)用 expect/actual 分平台渲染。

预售视角 LinkedIn 评论,2026-06

Anastasiia Dmytriieva 帖子下的评论 · 做过多次 CMP+KMP 售前方案的从业者

业务方眼里“原生感”仍是硬伤。

缺少开箱即用的 Cupertino,设计驱动的品牌多半选原生或 Flutter。

团队转向 LinkedIn,2026-06

Ali M. · 荷兰 KMP 开发者 · 自己的跨平台应用(Android/桌面/iOS/macOS,App 名未公开),共享层用 Ktor、SQLDelight、ViewModel,iOS/macOS 改用 SwiftUI

共享约 95% UI 后仍改回 SwiftUI。

嵌套滚动、手势、返回手势的“恐怖谷”难以磨平。

性能排查 LinkedIn,2026-08

发帖:Abdul Basit · 参加 RevenueCat Shipaton 2026 的开发者;回复者称自己有两款 CMP 应用在生产环境

连着 Xcode 调试器会卡,单独启动就流畅。

有人反馈 1.11.1 在 iOS 上卡顿;其他开发者给出上述解释,并称两款生产应用无此问题。

小坑 LinkedIn,2026-07

Enes A. · 正在开发 KMP 应用的开发者(App 名未公开)

iOS 上动画“失效”,往往是开了“减弱动态效果”。

CMP 1.8+ 会遵循该系统设置。

评测 ninetwothree,2026-07

NineTwoThree · 软件开发公司 · 自建电商演示应用 Storium 做的评测

iOS 上通过 Skia 而非 UIKit 渲染。

阴影、回弹、文本选择与原生有差异。

阅读评测

X 上可检索的个人 CMP 评价较少,多数一线经验来自 LinkedIn、Medium 等社区。

CMP 优点

CMP 缺点

  • iOS 默认 Material 风格,原生 Cupertino 需第三方库
  • Skia 自绘,滚动/手势/文本细节与原生仍有差距
  • Liquid Glass 等系统效果难复刻
  • Web 仍是 Beta
  • CallKit、推送、分享扩展、WebView 等仍需原生代码

三个练手项目,由浅入深覆盖整条路线。

1 · 天气 App

练网络与 UI,对应阶段 2–3。

  • Ktor
  • kotlinx.serialization
  • Compose Multiplatform

2 · 待办 / 笔记 App

练本地存储与离线,对应阶段 2。

  • SQLDelight / Room
  • 多平台 ViewModel
  • 离线可用

3 · RSS 阅读器

参考 JetBrains 官方 RSS Reader 示例,看完整项目如何组织。

  • 对照官方实现
  • 覆盖共享层到双端 UI

官方文档优先,周报跟进新版本。

官方文档

跟进动态

开源示例(GitHub JetBrains)

  • kotlinconf-app
  • KMP-App-Template
  • RSS Reader

在 GitHub 的 JetBrains 组织下搜索以上仓库名。