00
预备
打牢 Kotlin、协程与 Gradle 基础
- Kotlin 语法:空安全、数据类、密封类、扩展函数、Lambda
- 协程与 Flow 基础
- Gradle Kotlin DSL 与 version catalog(libs.versions.toml)
- 推荐时长
- 1–2 周
- 完成标志
- 能用协程写一个并发网络请求小程序
面向 Android / iOS / 后端开发者 · 数据截至 2026年10月
官方路线图、Compose Multiplatform 现状、社区一线评价与优缺点,附分阶段学习路线。
截至 2026年10月
官方定位:Android、iOS、桌面、Web、服务端均已可用于生产。
| 平台 | Compose UI |
|---|---|
| Android | Stable |
| iOS | Stable |
| 桌面(JVM) | Stable |
| Web(Wasm) | Beta |
iOS 相关项需要 macOS。
阶段 0 → 7
达到完成标志再进入下一阶段。
00
预备
01
KMP 基础
02
共享业务逻辑
03
Compose Multiplatform UI
04
与 iOS 原生互操作
05
测试与质量
06
构建、发布与 CI
07
进阶
简洁、表达力强,重安全与人体工学。
凭扎实的 iOS 体验、成熟的 Web 目标和可靠的 IDE 工具,成为现代跨平台应用的基础。
不论开发者用什么工具、面向什么平台,都支持。
Kotlin 2.5.0-Beta1 为 KMP 引入可选的“分离编译”方案:编译结果与 IDE 分析一致,并为 common 源集带来增量编译。
JetBrains 2025年8月曾计划“2026年 Swift 互操作达到稳定”,截至 2026-10-03 尚未实现(abd3lraouf.dev)。
共享逻辑普遍被看好,共享 UI 在 iOS 上褒贬不一。
JetBrains 官方账号
2025 年 KMP 在 Top 1 万应用中的占比翻倍,绝对增长与 React Native、Flutter 相当。
Duolingo、抖音、麦当劳、Google Docs、Zomato、H&M 都在用;81% 的团队用 Compose Multiplatform 共享 UI。
X 公司:新版 X Android 应用 100% Kotlin,X Chat 用 KMP 覆盖 Android/iOS/Web
新版 X Android 应用 100% Kotlin。
X Chat 用 KMP 覆盖 Android、iOS、Web:端到端加密、存储、同步、业务逻辑只写一次。
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 仍有平台小坑。
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。
Amir Choupannejad(团队成员 Keyvan Norouzi、Ali Saranj)· 已上线的 KMP+CMP 聊天应用:实时消息、文件分享、VoIP 通话,Android+iOS(App 名未公开)
KMP + CMP 上线,但关键系统能力仍靠原生 Swift。
CallKit、PushKit、分享扩展、钥匙串用 Swift 实现;构建时间比纯原生长,和 SwiftUI 仍有细微差异。
NineTwoThree · 软件开发公司 · 自建电商演示应用 Storium 做的评测
iOS 上 CMP 通过 Skia 渲染,而非 UIKit。
阴影、滚动回弹、文本选择与原生有差异;首次渲染可能因着色器编译变慢。
JetBrains · Kotlin Multiplatform Survey 2025
约 70% 插件用户满意或非常满意。
约 80% 使用 Compose Multiplatform。
X 上公开可检索的个人观点有限,部分观点来自 LinkedIn、Medium、DEV 等开发者社区。
2026 年的普遍共识:“共享逻辑几乎没有争议,是否共享 UI 因项目而异”。
适合:已有 Kotlin/Android 团队、逻辑重的应用、MVP 与效率类应用、想渐进共享。
需谨慎:极度追求 iOS 原生质感的消费级应用、团队无 Kotlin 经验且工期紧、主要是 UI 的应用。
Compose Multiplatform
官方称“移动端和桌面已可用于生产”,Web 仍是 Beta。
| 平台 | 状态 | 说明 |
|---|---|---|
| iOS | Stable | 自 1.8.0(2025 年 5 月) 来源 |
| Android | Stable | 基于 Jetpack Compose 来源 |
| 桌面 Windows / macOS / Linux | Stable | — 来源 |
| Web(Wasm) | Beta | 自 1.9.0(2025 年 9 月) 来源 |
2025-05
2025-09
2026-05
2026-08-25
2026-09-10
预览
2026-09-22
当前稳定
补丁版
1.12.1(2026-09-22)是 1.12.0 之后的补丁版,只修 bug,没有新功能。来源
| 平台 | 修复 |
|---|---|
| 迁移提示 多平台 | 临时重新公开 LocalSystemTheme(标为 @InternalComposeUiApi 并已弃用),后续版本会删除。来源 |
| 多平台 |
|
| 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。来源 |
官方计划
JetBrains 没有单独的 CMP 路线图页面:CMP 的计划写在 Kotlin 路线图的 Multiplatform 部分(2026-08-20 更新,下次 2027-02),以及 KMP/CMP 方向文章里。官方不承诺具体版本。来源
| 事项 | 状态 | 来源 |
|---|---|---|
| 让 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 |
| 目标 | 现状 |
|---|---|
| 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 自建设计系统。来源
逻辑共享不难卖,难的是“iOS 上感觉原生吗”。
发帖:Márton Braun · JetBrains 开发者布道师;评论:Konstantin Kustau
“每次发版我先看 iOS 性能那一条——逻辑共享从来不难卖,难的是‘iOS 上感觉原生吗’。”
1.12 带来 iOS 性能提升;上面这句来自评论区。
CMP Web(Wasm)是 canvas 渲染,对 SEO 不友好。
另一位评论者 Kashif Mehmood 抓取了 4 个已上线的 Compose Wasm 应用,关掉 JS 后标题和段落都是 0。
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 毛玻璃“几乎做不到”。
Marko Stankovic · 塞尔维亚移动开发者 · 用 expect/actual 分平台渲染对话框、文本框、导航栏(App 名未公开)
2026 年的 CMP 能做到原生质感的 85–90%。
剩下 10–15% 靠平台经验;关键交互(对话框、文本输入、导航栏)用 expect/actual 分平台渲染。
Anastasiia Dmytriieva 帖子下的评论 · 做过多次 CMP+KMP 售前方案的从业者
业务方眼里“原生感”仍是硬伤。
缺少开箱即用的 Cupertino,设计驱动的品牌多半选原生或 Flutter。
Ali M. · 荷兰 KMP 开发者 · 自己的跨平台应用(Android/桌面/iOS/macOS,App 名未公开),共享层用 Ktor、SQLDelight、ViewModel,iOS/macOS 改用 SwiftUI
共享约 95% UI 后仍改回 SwiftUI。
嵌套滚动、手势、返回手势的“恐怖谷”难以磨平。
发帖:Abdul Basit · 参加 RevenueCat Shipaton 2026 的开发者;回复者称自己有两款 CMP 应用在生产环境
连着 Xcode 调试器会卡,单独启动就流畅。
有人反馈 1.11.1 在 iOS 上卡顿;其他开发者给出上述解释,并称两款生产应用无此问题。
Enes A. · 正在开发 KMP 应用的开发者(App 名未公开)
iOS 上动画“失效”,往往是开了“减弱动态效果”。
CMP 1.8+ 会遵循该系统设置。
NineTwoThree · 软件开发公司 · 自建电商演示应用 Storium 做的评测
iOS 上通过 Skia 而非 UIKit 渲染。
阴影、回弹、文本选择与原生有差异。
X 上可检索的个人 CMP 评价较少,多数一线经验来自 LinkedIn、Medium 等社区。
练网络与 UI,对应阶段 2–3。
练本地存储与离线,对应阶段 2。
参考 JetBrains 官方 RSS Reader 示例,看完整项目如何组织。
在 GitHub 的 JetBrains 组织下搜索以上仓库名。