<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>KMM踩坑笔记 on Last Stand</title><link>https://amatsuzero.github.io/LastStand/tags/kmm%E8%B8%A9%E5%9D%91%E7%AC%94%E8%AE%B0/</link><description>Recent content in KMM踩坑笔记 on Last Stand</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Mon, 01 Jun 2026 16:14:41 +0800</lastBuildDate><atom:link href="https://amatsuzero.github.io/LastStand/tags/kmm%E8%B8%A9%E5%9D%91%E7%AC%94%E8%AE%B0/index.xml" rel="self" type="application/rss+xml"/><item><title>KMM 跨平台落地：从基础认知到 ovCompose iOS/鸿蒙实践</title><link>https://amatsuzero.github.io/LastStand/posts/kmm/</link><pubDate>Mon, 01 Jun 2026 16:14:41 +0800</pubDate><guid>https://amatsuzero.github.io/LastStand/posts/kmm/</guid><description>&lt;h2 id="阅读导航建议先看"&gt;阅读导航（建议先看）&lt;/h2&gt;
&lt;p&gt;这篇文章信息量很大，建议按下面顺序读：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;先读 0 章&lt;/strong&gt;：把 KMM、LLVM/IR、KuiklyBase-kotlin 的关系建立起来。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;再读 2 章&lt;/strong&gt;：看 ovCompose 在 iOS 上如何解决混排与性能问题（重点是 2.4）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;最后读 3 章&lt;/strong&gt;：看 ovCompose 在鸿蒙上的架构补齐与落地结果。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果你时间有限，可以先看每章的小结段，再回到细节表格和时序图。&lt;/p&gt;
&lt;h2 id="0-什么是-kmm"&gt;0. 什么是 KMM&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;KMM（Kotlin Multiplatform Mobile）&lt;/strong&gt; 是 JetBrains 推出的跨端代码复用方案：共享业务逻辑，不共享 UI。它的核心价值不是“写一套 UI 到处跑”，而是“用一套业务代码支撑多端原生体验”。&lt;/p&gt;
&lt;p&gt;为了避免概念混淆，可以先把 KMM 放到两个对比里看：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;对比 RN/Flutter&lt;/strong&gt;：RN/Flutter 是 UI + 逻辑一起跨端，带独立渲染与运行时；KMM 只共享业务逻辑，UI 仍由 iOS/Android 原生实现。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;对比传统混编 SDK&lt;/strong&gt;：传统方式多是单端产物复用；KMM 是同一套 Kotlin 源码多端编译，天然支持平台差异化实现。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;一句话：&lt;strong&gt;KMM 更像“跨端业务层统一”，而不是“跨端 UI 统一”。&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id="01-给非编译器读者的背景知识llvm--ir"&gt;0.1 给非编译器读者的背景知识（LLVM / IR）&lt;/h3&gt;
&lt;p&gt;如果你不是编译器方向，可以先记住 4 句话：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;编译器&lt;/strong&gt;做的事，就是把高级语言（Kotlin）翻译成目标平台可执行代码。&lt;/li&gt;
&lt;li&gt;**IR（Intermediate Representation，中间表示）**是“中间语言”，用于把“前端语法分析”和“后端机器码生成”解耦。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;LLVM&lt;/strong&gt;不是单一编译器，而是一套编译器基础设施（优化器 + 后端代码生成等）。&lt;/li&gt;
&lt;li&gt;KMP 的 Native 路线里，常见链路是：&lt;code&gt;Kotlin 源码 -&amp;gt; Kotlin IR -&amp;gt; LLVM IR -&amp;gt; 机器码/.so&lt;/code&gt;。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;其中最容易混淆的是两个 IR：&lt;/p&gt;</description></item></channel></rss>