华为在2026年的HDC大会上正式宣布,KMP和CMP的鸿蒙适配版本进入Beta阶段,这无疑是跨平台开发者期待已久的重磅消息。与之前腾讯维护的ovCompose、Kuikly等社区方案不同,如今官方名分的确认意味着KMP/CMP在鸿蒙生态中将拥有更稳定、更深入的底层支持。更关键的是,这次Beta版本并非简单移植,而是深度适配鸿蒙系统,从底层渲染到内存管理都做了针对性的优化,让开发者有机会在保持高效开发的同时,获得接近原生的性能体验。
这次适配的技术路径相当硬核。KMP需要让Kotlin/Native把鸿蒙当成一个新Target,意味着要在LLVM层面打通。具体来说,代码从Kotlin源码出发,经过Kotlin/Native编译器(新增了OHOS_ARM64和OHOS_X64两个目标),再由华为毕昇LLVM 19生成ELF格式的静态或动态库,最终通过鸿蒙的dlopen加载。这样,Kotlin代码就真正跑在了鸿蒙系统上。而在CMP层面,最大的亮点是统一渲染路径——不再让Compose持有独立的GPU上下文和离屏buffer,而是直接对接鸿蒙的ArkUI Render Service,由系统驱动绘制。这和方法相比传统的自渲染方案,可以省去双份GPU上下文和离屏缓冲区的开销,实现更快首帧、更细粒度的局部刷新,以及更流畅的动画表现。
除了渲染性能,内存管理也是这次Beta版本的重头戏。新版本引入了CommonGC算法,替代了原来的CMS算法,通过复制式GC、区域分区管理、分代收集、读屏障等技术,在减少碎片的同时,平均降低了30%的Kotlin Native堆内存占用。而且,针对CMP页面原本持有5个DMA-BUF缓冲区的问题,优化后在退后台时只保留1个last buffer,显著减少了后台内存占用。这些改进对于图片密集型和长列表场景尤其重要——当前端用户频繁切换页面时,应用可以更轻量地“休眠”,而不是持续占用宝贵的系统资源。
在开发体验方面,这次Beta版本同样下了不少功夫。跨语言通信上,通过NAPI和Kotlin的CInterop实现了Kotlin与ArkTS的双向互操作,还支持注解式开发,减少了手写胶水代码的工作量。DFX工具链也同步升级,支持Kotlin业务栈回溯、堆内存监控和二次分配堆栈追踪,帮助开发者快速定位Crash和内存泄漏。编译优化方面,并行编译和模块化拆分让百万行级别的项目编译时间平均缩短了20%以上。更贴心的是,新版本完整移植了Navigation3的平行视界能力,开发者可以通过配置自动适配手机、折叠屏、平板的双栏布局,一套代码覆盖多设备形态。
从快手、B站、美团等大厂的落地案例来看,KMP的鸿蒙适配已经具备了生产环境可用性。快手利用KMP实现了70%鸿蒙业务覆盖,迁移效率提升30%以上;B站因为Kotlin/JS的性能瓶颈,果断转向Kotlin/Native路线,并配合CMP实现UI跨端。不过,目前CMP在鸿蒙上的成熟度仍需观察,国内厂商更多还是倾向于用KMP做逻辑跨平台,UI层则保留ArkUI原生开发。但无论如何,这次官方的Beta发布标志着鸿蒙跨平台开发进入新阶段——开发者终于可以“名正言顺”地用Kotlin写出既能跑在Android/iOS,也能跑在鸿蒙上的代码。未来随着LLVM版本对齐和Swift Export等新能力的引入,KMP/CMP在鸿蒙上的表现值得我们持续关注。