在这里插入图片描述

前言

在技术选型的十字路口,开发者社区对一个新兴框架的态度,往往会经历从质疑、观望到最终拥抱的完整周期。对于 Kotlin Multiplatform (KMP) 与其 UI 搭档 Compose Multiplatform (CMP) 而言,2024 至 2025 年无疑是其发展的分水岭。曾经,它们在许多开发者眼中是“听起来很美但用起来很慌”的代名词——对项目复杂性、生态成熟度、乃至学习曲线的担忧,构筑了一道无形的墙。

当开发者真正跨越心理门槛,深入实践后,往往会发现一片新大陆。这种“真香定律”的背后,并非仅仅是个人体验的转变,而是整个技术生态系统在近年来一系列坚实、持续的进化中,共同抵达了“生产力可用”的临界点。

本文将以工程视角,结合 2024 年以来 JetBrains、Google 等核心参与者的官方发布与社区的真实反馈,系统性地论证:Kotlin Multiplatform 与 Compose Multiplatform 不再是实验性的屠龙之技,而是已经迈入成熟期,成为 2026 年值得技术管理者和移动开发者严肃考虑的务实选项。

一、基石之变: Kotlin 2.0 与 K2 编译器

任何跨平台框架的雄心,都必须建立在其语言和编译器的坚实地基之上。KMP 的成熟,首先要归功于其底层核心的革命性升级——Kotlin 2.0 与其搭载的全新 K2 编译器

K2 编译器的正式稳定(GA),对于 Kotlin 语言而言,其意义不亚于一次“引擎换代”。它并非简单的性能优化,而是一次对编译器前端架构的彻底重写。根据 JetBrains 在 2024 年 5 月发布的官方博文,K2 带来的最直观改变是编译速度的显著提升,部分真实世界项目甚至实现了近乎翻倍的性能。在 JetBrains 内部一个包含超过 1200 万行 Kotlin 代码的巨型项目中,切换到 K2 模式后,构建时间缩短了 40%。对于长期困扰跨平台开发者的编译耗时与 CI/CD 效率问题,这是一个釜底抽薪式的解决方案。

K2 的核心价值:统一与加速
K2 编译器最大的战略意义在于,它统一了 Kotlin 所支持的所有平台(JVM, Native, JS/Wasm)的分析管线。过去,不同的后端有着各自独立的前端实现,导致新语言特性和优化需要重复开发、分别适配。如今,所有后端共享一套前端逻辑,这意味着:

  • 新功能同步抵达:语言的新特性(例如 Kotlin 2.2 中备受期待的上下文参数)可以一次性为所有平台实现,大大加速了语言本身的演进。
  • 生态建设提速:基于统一的分析能力,JetBrains 正在开发下一代 KMP 库分发格式。这将从根本上解决“必须在 macOS 环境下才能发布 iOS 库”等历史遗留问题,使得多平台库的开发体验无限接近于纯粹的 JVM 库,从而极大地促进了 KMP 生态的繁荣。

更重要的是,伴随着 Kotlin 1.9.20 版本,Kotlin Multiplatform 技术本身正式宣告稳定(Stable)。这意味着其核心 API、Gradle 插件配置、库发布格式等关键部分都将遵循严格的向后兼容性保证。对于追求技术方案稳定性的企业决策者而言,这无疑是最强有力的定心丸。它标志着 KMP 已经完成了从“Alpha/Beta 探索期”到“生产可用期”的身份转变。

同样关键的是,Kotlin/Native 的新内存模型也在近年趋于稳定,彻底告别了过去在并发编程上给开发者带来的心智负担。这为在 KMP 中编写高性能、高并发的共享业务逻辑扫清了最后的障碍。

可以说,一个更快、更智能、更统一的语言和编译器底座,为 KMP 生态的全面成熟打下了最坚实的基础。

二、逻辑层革命:共享代码生态从“可用”到“丰富”

如果说 K2 编译器是“发动机”,那么多平台库生态就是让 KMP 这辆车能够跑起来的“车轮”。在 2024-2025 年,KMP 的逻辑层共享生态经历了一场从“基本可用”到“丰富优选”的质变,其核心驱动力源于两大生态的深度融合。

Jetpack 库的多平台化:Google 的官方背书与赋能

长期以来,KMP 开发者在构建共享逻辑时,需要依赖社区提供的各类第三方库。尽管社区充满活力,但库的质量、维护持续性以及与 Android 官方实践的一致性,始终是技术管理者心中的一丝顾虑。

这一局面在 Google I/O 2024 大会宣布正式支持 KMP 后被彻底改变。这不仅是一句口号,而是实实在在的工程投入。Google 不仅在自家的 Workspace、Google Docs 等核心应用的 iOS 版中大规模采用 KMP,并验证了其生产环境的稳定性与性能,更重要的是,Google 启动了将核心 Jetpack 库多平台化的战略

根据 JetBrains 与 Google 发布的 2025 路线图和相关博客,截至 2025 年底,多个开发者在 Android 端耳熟能详的 Jetpack 库已为 iOS 提供了一级(Tier-1)支持,这意味着它们经过了全面测试,可以稳定地用于生产环境:

Jetpack 库 核心功能 在 KMP 中的价值
Room (2.7.2+) 结构化本地数据库 在共享模块中实现统一、类型安全的数据库访问逻辑,告别在 iOS 端手写 SQL 或封装 CoreData 的繁琐。
DataStore (1.1.7+) 键值对/对象存储 替代 SharedPreferences 和 NSUserDefaults,提供基于 Flow 的现代化异步数据存储方案。
Paging (3.3.6+) 分页加载 在共享 ViewModel 中实现复杂的、支持网络和数据库源的分页加载逻辑,UI 层只需简单消费数据流。
ViewModel (2.9.2+) UI 相关的状态管理 允许开发者在 commonMain 中编写 ViewModel,真正实现业务逻辑与 UI 状态的跨平台共享。
Lifecycle (2.9.2+) 生命周期感知 配合 ViewModel,在共享代码中安全地管理协程作用域,避免内存泄漏。

范式转移的信号
Jetpack 库的跨平台化,其意义远超“多了几个可用的库”。它标志着 Android 官方认可的最佳架构实践,正在通过 KMP 自然地延伸到 iOS 平台。对于广大 Android 开发者而言,这意味着他们可以将业已纯熟的技能栈(Kotlin + Coroutines + Flow + Jetpack)无缝迁移至跨平台开发,学习曲线被极大地拉平。对于技术管理者,这意味着可以基于同一套经过大规模验证的架构模式来构建和评估两个平台的应用,显著降低了技术栈的复杂度和团队认知负荷。

KMP 原生库生态的持续繁荣

除了 Jetpack 的加持,KMP 自身的原生库生态也愈发成熟。

  • 网络层Ktor 作为 JetBrains 的亲生子,已经发布了 3.0 版本,与 Kotlin 2.0 深度集成,提供了稳定、易用的 HTTP 客户端。

  • 序列化kotlinx.serialization 已经成为处理 JSON 等数据格式的事实标准。

  • 数据库:除了 Room,由 Cash App 维护的 SQLDelight 依然是备受欢迎的选择,它通过在编译期从 SQL 生成类型安全的 Kotlin API,提供了另一种强大的数据库解决方案。

  • 其他关键领域:从依赖注入(Koin)、日志(Napier),到键值存储(Multiplatform-Settings),社区都提供了稳定且维护良好的解决方案。开发者可以通过官方推荐的 klibs.io 平台,方便地检索和评估这些多平台库。

双重生态的加持,使得 KMP 在业务逻辑共享层已经构建起了宽阔的护城河。开发者如今面对的,不再是“有没有库可用”的问题,而是“在多个优秀选项中如何抉择”的幸福烦恼。

三、UI 层突破:Compose Multiplatform 走向成熟

如果说 KMP 解决了“里子”的问题,那么 Compose Multiplatform (CMP) 则致力于攻克“面子”的难题。在 2024 至 2025 年间,CMP 经历了一系列里程碑式的发布,尤其是在 iOS 和 Web 两个关键平台上,标志着它正从一个“Android 的延伸”,蜕变为一个真正意义上的全平台 UI 框架。

iOS 走向稳定:从 Beta 到 Production-Ready

Compose Multiplatform 1.8.0(2025 年 5 月发布)是整个 KMP 生态最重要的里程碑之一,它正式宣布 Compose for iOS 进入稳定(Stable)阶段。这意味着其核心 API 已最终确定,并提供了强大的兼容性保证,开发者可以放心地将其用于生产环境。

这一声明并非空谈,而是建立在多项实质性改进之上:

  • 性能对齐原生:JetBrains 在发布时公布的基准测试数据显示,在滚动性能等关键指标上,CMP for iOS 已与 SwiftUI 不相上下,并且应用启动时间也与原生应用相当。更重要的是,相比完全使用 SwiftUI 开发的应用,其包体积增量仅为约 9MB,打消了业界对性能和包体的核心顾虑。

  • 原生质感(Native Look & Feel):为了解决“非原生感”的问题,CMP 在细节上做了大量优化,包括:

    • 完全匹配 iOS 平台的滚动物理效果(即“橡皮筋”效果)。
    • 支持原生的文本编辑行为,包括文本选择、右到左语言支持
    • 与系统拖放、辅助功能(VoiceOver)、字体大小与对比度设置等深度集成。
  • 强大的互操作性:CMP for iOS 提供了与 SwiftUI 和 UIKit 的无缝互操作能力。开发者不仅可以将一个 Compose 视图嵌入到现有的 SwiftUI/UIKit 页面中,实现渐进式改造;也可以在 Compose 代码中嵌入一个原生的 UIView,以复用那些尚无 KMP 替代品的复杂原生控件(如地图、WebView)。

战略选择的分野:共享 UI vs. 原生 UI
CMP for iOS 的稳定,为技术决策者清晰地划分出两条 UI 架构路径:

  1. 务实主义路径(共享逻辑,原生 UI):这是 KMP 最经典的用法。共享模块只包含业务逻辑,UI 层则由 Android (Jetpack Compose/XML) 和 iOS (SwiftUI/UIKit) 团队分别用原生技术栈实现。这种模式能保证极致的原生体验,但对团队协作和沟通提出了极高要求。
  2. 统一化路径(共享逻辑与 UI):利用 Compose Multiplatform 将 UI 代码也一并共享,实现 95% 以上的代码复用。这能极大地提升开发效率、统一团队结构,尤其适合 MVP 产品或品牌视觉一致性要求高的应用。但挑战在于,要让 UI 在 iOS 上达到 100% 的原生质感,可能需要额外的定制工作。
    如今,这不再是一个“能不能”的问题,而是一个基于项目目标、团队构成和产品定位的“如何选”的战略问题。

Web 端迈入 Beta:拥抱 Wasm 的未来

紧随 iOS 的步伐,Compose Multiplatform 1.9.0(2025 年 10 月发布)宣布其 Web 端(基于 WebAssembly/Wasm)进入 Beta 阶段。这意味着 API 已经足够稳定,可供早期采用者投入实际应用。

  • 基于 Wasm 的高性能:与过去基于 Kotlin/JS 的方案不同,新的 Web 目标直接编译到 Wasm,理论上能提供接近原生的运行性能,为在浏览器中构建复杂、高性能的前端应用打开了大门。

  • 共享移动端代码与技能:开发者可以将为 Android/iOS 编写的 Compose UI 和逻辑代码,以极低的成本复用到 Web 端,实现“三端一体”的开发体验。JetBrains 官方的 Kotlin Playground 和 KotlinConf 应用网站,就是 CMP for Web 的最佳实践案例。

桌面端:久经考验的成熟平台

相比之下,Compose for Desktop 早已稳定,并被 JetBrains 自身广泛用于开发其下的多款旗舰产品,如 JetBrains Toolbox AppJetBrains Fleet IDE 的部分 UI。这些复杂桌面应用的成功实践,早已证明了 CMP 在桌面端构建高质量、高性能应用的能力。

综上,从移动端到桌面再到 Web,Compose Multiplatform 在 2024-2025 年间完成了关键的版图扩张,构建了一个覆盖主流平台的、统一的声明式 UI 工具集。它为 KMP 技术栈补上了最后,也是最关键的一块拼图,使其真正具备了提供端到端完整解决方案的能力。

四、工程化提效:日益顺滑的开发者体验

一个技术框架能否在真实工程中被大规模采用,开发者体验(DX)是决定性的因素。早期的 KMP 因其复杂的 Gradle 配置、不甚理想的 IDE 支持和与原生工作流的摩擦,劝退了不少满怀热情的尝试者。但在 2024-2025 年,JetBrains 在工程化和工具链上投入了巨大精力,力求抚平这些“最后一公里”的褶皱。

IDE 支持:从割裂到融合

  • 统一的 KMP 插件:JetBrains 推出了全新的 Kotlin Multiplatform 插件,并已集成到最新版的 Android Studio 和 IntelliJ IDEA 中。该插件极大地简化了 KMP 项目的创建和配置,提供了统一的运行/调试配置入口,并开始支持在 commonMain 中直接使用 Compose @Preview 注解,解决了过去预览功能只能在平台特定模块使用的痛点。

  • 强化的 Swift 互操作:IDE 对 Kotlin-Swift 互操作的支持得到了显著增强。在 Kotlin 代码和生成的 Swift 接口之间跳转、查找用例、甚至进行跨语言重构,都变得更加流畅。这对于采用“共享逻辑,原生 UI”策略的团队至关重要,它降低了 iOS 开发者将共享模块视为“黑盒”的心理障碍。

  • Hot Reload(热重载)的到来:Compose Multiplatform for iOS 已支持实验性的 Compose Hot Reload,允许开发者在修改 UI 代码后,无需重启应用即可实时看到变化。这极大地提升了 UI 的迭代效率,使得开发体验向 Flutter 等成熟框架看齐。

路线图前瞻:从插件到专属 IDE 与 Amper 构建系统
展望未来,JetBrains 的 2025 路线图揭示了更宏大的计划:

  • 独立的 KMP IDE:JetBrains 正在基于 Fleet 架构,打造一款专为 KMP 开发量身定制的 IDE。它将原生支持跨语言(Kotlin/Swift)调试、导航和重构,从根本上解决目前依赖 Xcode 与 Android Studio/IntelliJ 协同工作的割裂感。
  • Amper 构建工具:为了解决 Gradle 配置复杂的问题,JetBrains 推出了实验性的 Amper 项目。它旨在提供一种更简洁、更具声明性的方式来定义项目结构和依赖,极大地降低 KMP 的上手门槛,尤其是对于不熟悉 JVM 生态的开发者。

构建与依赖管理:走向标准化

  • 默认层级源集(Default Hierarchy Template):在 Kotlin 1.9.20 中引入的这一特性,让 Gradle 插件能自动为常见的项目结构(如共享代码于 commonMain,平台代码于 androidMain/iosMain)配置源集依赖关系,减少了大量的样板配置代码。

  • 更友好的 CocoaPods / SwiftPM 集成:KMP 对 iOS 依赖管理工具的支持愈发成熟。无论是通过 CocoaPods 还是 SwiftPM,将 KMP 构建的 Framework 集成到原生 Xcode 项目中的流程都变得更加标准化和稳定。

  • 诊断与错误提示改进:新版的 Gradle 插件增加了约 50 项诊断检查,能主动发现常见的构建配置问题,并提供修复建议。同时,在 Xcode 中构建失败时的错误输出也得到了优化,使其更易于定位问题根源。

虽然距离“零配置”的理想状态尚有距离,但 KMP 的工程化体验在近年来的进步是肉眼可见的。JetBrains 正通过“短期优化现有工具(Gradle/IDEA 插件)”和“长期投资下一代工具(Amper/Fleet IDE)”两条腿走路的方式,系统性地解决着开发流程中的痛点,为 KMP 的大规模采用铺平了道路。

五、现实的引力:生产案例与务实的收益模型

理论的成熟最终需要由现实世界的采纳来印证。如果说 2023 年之前,KMP 的成功案例还多是些个人项目或小型应用的探索,那么 2024 年之后,我们看到的是越来越多的大型、严肃的商业产品,开始将 KMP 作为其核心技术战略的一部分。

从 JetBrains 自用到 Google 旗舰

  • JetBrains 全家桶:作为 KMP 的创造者,JetBrains 自身就是其最坚定的实践者。JetBrains Toolbox App、下一代 IDE Fleet,以及团队协作工具 Space 的移动客户端,都深度使用了 KMP 和 Compose Multiplatform。这些产品本身就是对 KMP 构建复杂、高质量应用能力的最好证明。

  • Google Workspace & Google Docs:Google 在其核心生产力应用(如 Google Docs)的 iOS 版中采用 KMP 共享了大量业务逻辑,并公开分享其带来的收益:更高的功能一致性、更快的迭代速度,且性能与原生代码持平。来自 Google 官方的背书,其分量不言而喻。

  • 社区与企业标杆

    • Netflix:在其内部使用的 Prodicle 工作室应用中,利用 KMP 共享了包括网络、数据持久化在内的复杂业务逻辑。
    • McDonald’s:在其全球外送应用中,使用 KMP 共享了支付、订单等关键模块,甚至创新性地将导航逻辑也放入了共享层。
    • Philips:在其健康应用中利用 KMP 统一了蓝牙设备通信等底层逻辑。
    • Baidu:在国内,百度等大型互联网公司也在积极探索和落地 KMP。

增量引入的现实收益

KMP 最大的魅力之一在于其非侵入性渐进式采用的能力。它不要求团队推倒重来,而是可以像“插件”一样,平滑地集成到现有的原生应用中。

一个典型的增量引入路径是:

  1. 识别痛点:从一个在 Android 和 iOS 两端都存在,且逻辑复杂、频繁变更、容易出 Bug 的模块入手(例如,一个复杂的定价算法、一套网络请求的封装、或一个自定义的数据图表)。

  2. 剥离与共享:将这部分逻辑用 Kotlin 在一个独立的 shared 模块中实现。

  3. 集成与验证:将该模块编译为 AAR (for Android) 和 Framework (for iOS),替换掉原有的原生实现。

  4. 逐步扩展:在验证了其带来的收益(如减少 Bug、统一行为)后,逐步扩大共享代码的范围。

这种模式的性价比极高。它允许团队在不颠覆现有工作流和技术栈的前提下,用最小的成本和风险,精准地解决代码复用的核心痛点,享受到 KMP 带来的直接收益。

对于技术管理者而言,KMP 提供了一个极具吸引力的收益模型:它允许团队在最大化复用商业逻辑以降低成本、提升效率的同时,依然保留了利用原生 UI 打造最佳用户体验的自由。这种“鱼与熊掌兼得”的灵活性,是 KMP 在与其他跨平台方案竞争时,最独特的价值主张。它不再是一个非黑即白的激进选择,而是一个可以根据业务发展和团队状况动态调整的、充满智慧的务实之道。

结论:KMP,一个为长期价值而生的务实选择

回顾 KMP 与 Compose Multiplatform 在 2024-2026 年的演进轨迹,我们可以清晰地看到一条从“底层革新”到“生态成熟”,再到“工程化落地”的完整进化链。

  • 坚实的地基:以 Kotlin 2.0 和 K2 编译器为核心的语言层升级,为整个生态系统的高速发展提供了强劲、统一的动力。

  • 丰饶的生态:以 Jetpack 多平台库为代表的官方支持,与持续繁荣的社区库相结合,构建了足以支撑复杂业务逻辑的“军火库”。

  • 强大的 UI 工具集:Compose Multiplatform 凭借 iOS 的稳定和 Web 的入场,真正成为一个覆盖主流平台的全能型 UI 框架,并为开发者提供了“共享”或“原生”的灵活选项。

  • 持续优化的开发者体验:尽管仍有挑战,但从 IDE 插件到下一代构建工具的路线图,无不显示出 JetBrains 解决开发者痛点、降低使用门槛的决心。

  • 无可辩驳的生产验证:从 Google 到 Netflix,从大型企业到初创公司,日益增多的生产案例,宣告了 KMP 已经走出了“概念验证”阶段,成为经得起实战考验的成熟技术。

在 2026 年的今天,技术管理者在评估 KMP 时,所面临的问题已经不再是“它能用吗?”,而是“我们应该如何最好地利用它?”

它不是一个试图用一套代码“抹平”所有平台差异的理想主义乌托邦,而是一个深刻理解并尊重平台特性的现实主义工具集。它赋予团队选择的权利:是在追求极致原生体验的同时共享核心业务逻辑,还是在效率与一致性的驱动下统一 UI 与逻辑。

对于那些追求技术方案的长期价值、希望在开发效率与产品质量之间找到最佳平衡、并愿意投资于构建统一、高效移动团队的企业而言,Kotlin Multiplatform 无疑已经准备就绪。它已经从一个勇敢者的游戏,变成了一个智者的选择。

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐