作者 | 曹立成 10 月 21 日我在上海举办的 QCon 全球软件开发大会上分享了 Kotlin Multiplatform 相关的内容,这里记录成文章,分享给你。 所以我们选择了 Kotlin Multiplatform。 在下文中,我会多次提到 KMM 这个简称,这里先简单讲一下 KMM 是什么: 基于 KMP(Kotlin Multiplatform)派生,全称 Kotlin Multiplatform Mobile。 (技术解析) 代码工程结构 对于 Kotlin Multiplatform 来说,代码工程结构会和其他的工程不太一样。 Multiplatform 在阿里巴巴的实践 1688 日志 我们在日志建设上使用了 Kotlin 收拢双端逻辑。
作者 | Sergio De Simone 译者 | 平川 策划 | 丁晓昀 Kotlin Multiplatform Mobile 由 JetBrains 创建,支持使用 Kotlin 从单个代码库创建具有原生 Kotlin Multiplatform Mobile 已经退出实验阶段,进入 Beta 测试。 按照 JetBrains 的说法,Beta 版本已经足够稳定,开发人员提可以开始采用 Kotlin Multiplatform Mobile 了。 在本文写作的时候,Kotlin Multiplatform Mobile 插件还处于 Alpha 阶段。 这里有一个精心整理的 Kotlin Multiplatform Mobile 样例的列表,感兴趣的读者可以看一下。
Kotlin Multiplatform(KMP)结合 Compose Multiplatform 正在成为跨平台开发的热门选择,它允许开发者用一套代码构建 Android、iOS、桌面(Windows 环境搭建工具要求:Android Studio 或 IntelliJ IDEA(安装 Kotlin Multiplatform 插件)Xcode(用于 iOS 编译)JDK 11+配置 gradle.properties :kotlin.native.cacheKind=none # 避免 iOS 编译缓存问题新建项目:使用 Kotlin Multiplatform Wizard 快速生成跨平台项目模板,勾选 Compose Multiplatform 支持。 学习资源官方文档Compose Multiplatform 示例项目KMP 社区通过 Compose Multiplatform,开发者可以显著减少重复代码,但需注意平衡代码共享与平台体验。
什么是KMP Kotlin Multiplatform(KMP)是JetBrains开发的一项开源技术,它允许开发者在多个平台上创建应用程序,同时高效地重用代码,保留原生编程的优势 。 Kotlin Multiplatform的关键特性包括: 代码共享:在项目中使用的所有平台或部分平台之间共享公共代码。 此外,Compose Multiplatform作为Kotlin Multiplatform的重要组成部分,允许开发者在Android、iOS、Web和桌面平台之间共享UI,JetBrains正在不断增强其能力 对于想要开始使用Kotlin Multiplatform的开发者,可以访问Kotlin官方文档获取入门教程和相关教育资源 。 总的来说,Kotlin Multiplatform为跨平台开发提供了一个强大、灵活且高效的解决方案,允许开发者在保持原生开发优势的同时,实现代码的跨平台共享和重用 。
既然 Java 已经是为跨平台代码而设计的了,那么 Kotlin Multiplatform 又增加了什么呢?答案是 Kotlin 不仅仅是一种 JVM 语言。 Kotlin Multiplatform 是一种跨所有这些平台共享非 GUI 代码的技术。 2022 年的一项调查显示,Kotlin Multiplatform 应用程序的代码共享率高达 63% Kotlin Multiplatform 适用于非 GUI 代码,但有一个相关项目 Compose 根据 JetBrains 的说法,Kotlin Multiplatform 已经被包括 Netflix 和 VMWare 在内的公司所使用。 Kotlin Multiplatform 和 Compose Multiplatform 均可免费使用。Kotlin 的代码位于 Github 上,许可证是 Apache2.0。
JetBrains 放弃了在其下一代集成开发环境 Fleet 上构建 Kotlin Multiplatform (KMP)IDE 的计划,转而在成熟的 IntelliJ IDE 中改进 KMP 功能,这让开发人员对 原文链接: https://devclass.com/2025/02/13/jetbrains-abandons-fleet-ide-for-kotlin-multiplatform-raising-doubts-about-fleets-future
二、JVM Target 支持 起初,根据预测,我认为使用 Kotlin Multiplatform 技术开发 JVM 桌面应用的人并不多。 但由于 Compose Multiplatform 最初支持的平台便是 Android 与 JVM,因此吸引了大量 Kotlin Multiplatform 开发者将自己的多平台应用的支持范围扩展到 JVM 收效较好,SQLlin 在 Kotlin Multiplatform 中文社区内拥有了一定知名度。 从 2022.11 ~ 2024.1,近一年的时间 Kotlin Multiplatform 技术迎来许多重要的变革。 希望在未来 SQLlin 可以在携程机票及整个 Kotlin Multiplatform 技术社区中有更广泛的应用场景。
本文将介绍我构建的 Compose Multiplatform项目,Compose Multiplatform包含了 Jetpack Compose 与 Kotlin Multiplatform 技术, Multiplatform? Kotlin Multiplatform 是 JetBrains 开发的跨平台解决方案,允许在多个平台间共享代码:支持的平台Android:原生 Android 应用iOS:原生 iOS 应用 Web 一套代码,三个平台将 Jetpack Compose 与 Kotlin Multiplatform 结合,可以实现:Android 原生应用:最佳性能和用户体验iOS 原生应用:原生性能和用户体验Web 我们可以通过这个Compose Multiplatform学习教程项目学习Jetpack Compose 与 Kotlin Multiplatform 的原理和应用场景。
当然,我这篇文章不是来对比这两个技术的,而是来介绍另一个新的移动跨平台技术的选择 -- KMM KMM KMM的全称是:Kotlin Multiplatform Mobile,它是jetbrains公司的产品
在深入学习状态概念之前,让我们先运行第三个模块的示例,直观感受 Compose 状态管理的效果:
Column 是垂直布局容器,对应 CSS 的 flex-direction: column。项目中的 ColumnLayoutExamples 展示了各种对齐方式:
ObjectARX 2012 multiplatform Qt Post: 3 ; Page: 1 of 11 M1_2R2012-10-01 13:49 Hallo, I am developping
KMP使用expect 和 actual 关键字 在 Kotlin Multiplatform 项目中,expect 和 actual 关键字被用于处理不同平台的 API 调用。 从 Kotlin 2.0 开始,编译器不再限制可见性的变化。 通过这种方式,Kotlin Multiplatform 允许开发者编写可在多个平台上运行的共享代码,同时保留对每个平台特定 API 的访问能力,实现代码的最大化重用和原生性能的结合。 代码示例 以下是一个使用 expect 和 actual 关键字在 Kotlin Multiplatform 项目中处理不同平台 API 调用的代码示例: 共通代码 (commonMain): // 预期声明 这样,当您在共通代码中调用 getPlatformName() 或创建 PlatformSpecificClass 的实例时,Kotlin 编译器会自动选择并使用适当平台的实际实现。
但是也有许多开发者可能还没有了解过Compose Multiplatform和KMM,那么本次分享将通过以下几点来介绍Compose Multiplatform 与KMM,让我们一起体验Kotlin跨平台的魅力 KMM是什么 KMM的全称是Kotlin Multiplatform Mobile,与之对应的是KMP—Kotlin Multiplatform Project,其实就是一个是Kotlin移动端跨平台, 但是毕竟Kotlin底层对Native、JS的支持都是Compose Multiplatform的基础。所以我更希望有一天他们可以合并,不管是版本的更新还是插件的支持都可以统一。 所以我更喜欢直接称他们为Kotlin全平台。 那么其实,你现在也已经知道了KMM与Compose Multiplatform的关系。 创建项目 在Android Studio中我们可以借助Kotlin Multiplatform Mobile plugin插件来快速的创建支持KMM的项目。
对于前端开发者来说,Material 3 + Compose Multiplatform 开启了跨平台开发的新篇章。下一步,我将继续探索自定义组件的开发,学习如何构建更复杂的业务组件。
现在,我们使用 Kotlin Multiplatform 编写平台中立性业务逻辑,并通过 Kotlin/Native 将其编译为分别面向 Android 的 Kotlin 库与面向 iOS 的原生通用框架 Kotlin Multiplatform Kotlin Multiplatform允许我们在iOS与Android应用程序的业务逻辑中使用同一套代码库。 与之相反,Kotlin Multiplatform 是对当前平台特定技术的补充,致力于替代各类平台中立性业务逻辑。 换言之,Kotlin Multiplatform 的诉求在于为解决方案库带来新工具,而非取代整个解决方案库。 实 现 为了简便起见,这里我们不再介绍 Hendrix 中的特定细节,主要讲解使用 Kotlin Multiplatform 替代 Kotlin/Swift 中的一些差异。
JetBrains 工程师 Sebastian Aigner 在官方博客宣布,Compose Multiplatform(Kotlin 的声明式 UI 框架)已经发布了 1.0 版本,现在可以在生产环境中使用了 Compose Multiplatform 由 Compose for Desktop 和 Compose for Web 组成,通过 Kotlin Multiplatform 支持许多不同的平台。 现在,用户可以在桌面上创建 Kotlin 应用程序,也可以使用 Compose for Web 的稳定 DOM API 构建生产质量的动态 Web 体验,并与 Web 上的所有浏览器 API 完全互通。 除了桌面,Compose Multiplatform 提供了一个强大的、声明性的 Kotlin/JS API 来处理 DOM——它具备你在现代 Web 框架中想要和需要的所有功能,包括全面的 DOM API 要尝试 Compose Multiplatform 快速开始构建面向多个平台的应用程序,可以使用 IntelliJ IDEA 2021.1+ 中的 Kotlin 项目向导。
Kotlin 1.3 Tools for Kotlin/Native and multiplatform projects, available in the community and ultimate Kotlin 1.3 released with stable coroutines, multiplatform projects and more In the Kotlin 1.3 release Multiplatform projects in Kotlin 1.3 Kotlin supports JVM, Android, JavaScript, and Native. Tooling support for Kotlin/Native and Multiplatform Kotlin 1.3 has tooling support for Kotlin/Native and multiplatform projects.
有了这个想法之后,Jetbrains 带来了 Kotlin Multiplatform Project 。 ➡️ 什么是 Kotlin Multiplatform Mobile? Kotlin Multiplatform Mobile (KMM) 是由 Jetbrains 提供的跨平台移动开发 SDK 。借助 Kotlin 的 跨平台能力,你可以使用一个工程为多个平台编译。 ➡️ 一步一步构建 HELLO WORLD KMM 应用 在 Android Studio 上安装 Kotlin Multiplatform Mobile 插件。 import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget plugins { kotlin("multiplatform ➡️开源 KMM 应用 JetBrains/kotlinconf-app saket/press jarroyoesp/KotlinMultiPlatform ➡️ 可用的 KMM 类库 AAkira/Kotlin-Multiplatform-Libraries
二、Flutter 之外的主流选择 首选推荐:Kuikly一句话定位:腾讯自研、基于 Kotlin Multiplatform 的企业级跨端框架,原生渲染 + 原生动态化,是 Flutter 在高性能动态化场景下最具竞争力的替代方案 Kotlin Multiplatform(KMP + Compose Multiplatform)一句话定位:JetBrains 出品,逻辑层跨平台共享,UI 层可选 Compose 统一。 优势:业务逻辑(网络、数据库)100% 跨平台共享;Compose Multiplatform 支持 Android、iOS、Desktop、Web;与现有 Android/iOS 原生代码无缝集成;Kotlin 适合谁:已有 Kotlin 团队,以逻辑层共享为主要目标,对动态化无需求的项目。 官方文档:https://www.jetbrains.com/kotlin-multiplatform/ GitHub 仓库:https://github.com/JetBrains/compose-multiplatform5