Kotlin Multiplatform(简称 KMP)是 JetBrains 开发的一款开源跨平台开发框架。它可以通过共享 Kotlin 语言编写的业务逻辑代码实现多平台复用。
💡 支持平台
从应用场景来看,KMP 不仅局限于移动端,它支持 iOS、Android、Web、桌面端(Windows/macOS/Linux)以及服务器端的代码共享。这种扩展性使得开发者能够用同一套代码库构建全平台应用,大幅提升开发效率。

💡 核心设计理念与特色
按需共享,极其灵活:你不需要为了跨平台而重写整个应用。你可以只共享网路请求、数据持久化(如 Room 数据库)或业务逻辑,而 UI 层继续使用原生技术(Android 用的 Jetpack Compose,iOS 用的 SwiftUI)。
原生性能与体验:KMP 在 iOS 上通过 Kotlin/Native 直接编译为原生二进制文件,能够直接调用平台特有的 API(如 iOS 的 MapKit、AVFoundation),不依赖任何中间桥接或虚拟容器,性能与原生开发完全一致。
多平台 UI 统一(可选):如果希望连 UI 代码也一起共享,可以结合使用 Compose Multiplatform (CMP)。它基于 Google 的 Jetpack Compose,允许你编写一套声明式 UI 并在 Android、iOS 和桌面端完美运行。
🛠️ 技术架构与双向互操作性
KMP 允许项目代码分为 Common 代码库(多个平台共享)和 Platform 专属代码库。它提供了一套优雅的机制来实现两者的无缝连接:
1. expect 与 actual 声明机制
当你在共享的 Common 代码中需要调用平台特有的功能(例如获取系统版本、访问蓝牙)时,无需使用复杂的条件编译,直接使用声明对齐:
在
commonMain中使用expect关键字声明一个期望的类或函数。分别在
androidMain和iosMain中使用actual关键字提供具体的原生平台实现。
2. 与 Swift 的无缝互操作
在 iOS 端,KMP 编译出的 Framework 会自动将 Kotlin 函数转换为 Swift 可调用的代码。你可以在 Android Studio 中利用专用的 Kotlin Multiplatform 插件进行跨语言(Kotlin 与 Swift)的双向断点调试与导航。
📦 生态与第三方库支持
KMP 的生态目前非常繁荣。你不需要自己造轮子,很多官方和主流开源库均已全面支持跨平台:
网络请求:Ktor 官方多平台网络库。
本地存储:Google 官方的 Room 数据库 和 DataStore。
依赖注入:Koin 或 Kotlin-Inject。
序列化:Kotlinx Serialization。
架构组件:ViewModel 现已原生支持在多平台中生命周期感知与复用。
查找平台:你可以通过 JetBrains 维护的 klibs.io 专属检索平台 快速查找数千个可用的多平台库。
更多参考: