KMM 跨平台落地:从基础认知到 ovCompose iOS/鸿蒙实践
阅读导航(建议先看) 这篇文章信息量很大,建议按下面顺序读: 先读 0 章:把 KMM、LLVM/IR、KuiklyBase-kotlin 的关系建立起来。 再读 2 章:看 ovCompose 在 iOS 上如何解决混排与性能问题(重点是 2.4)。 最后读 3 章:看 ovCompose 在鸿蒙上的架构补齐与落地结果。 如果你时间有限,可以先看每章的小结段,再回到细节表格和时序图。 0. 什么是 KMM KMM(Kotlin Multiplatform Mobile) 是 JetBrains 推出的跨端代码复用方案:共享业务逻辑,不共享 UI。它的核心价值不是“写一套 UI 到处跑”,而是“用一套业务代码支撑多端原生体验”。 为了避免概念混淆,可以先把 KMM 放到两个对比里看: 对比 RN/Flutter:RN/Flutter 是 UI + 逻辑一起跨端,带独立渲染与运行时;KMM 只共享业务逻辑,UI 仍由 iOS/Android 原生实现。 对比传统混编 SDK:传统方式多是单端产物复用;KMM 是同一套 Kotlin 源码多端编译,天然支持平台差异化实现。 一句话:KMM 更像“跨端业务层统一”,而不是“跨端 UI 统一”。 0.1 给非编译器读者的背景知识(LLVM / IR) 如果你不是编译器方向,可以先记住 4 句话: 编译器做的事,就是把高级语言(Kotlin)翻译成目标平台可执行代码。 **IR(Intermediate Representation,中间表示)**是“中间语言”,用于把“前端语法分析”和“后端机器码生成”解耦。 LLVM不是单一编译器,而是一套编译器基础设施(优化器 + 后端代码生成等)。 KMP 的 Native 路线里,常见链路是:Kotlin 源码 -> Kotlin IR -> LLVM IR -> 机器码/.so。 其中最容易混淆的是两个 IR: ...