ObjectARX 2012 multiplatform Qt Post: 3 ; Page: 1 of 11 M1_2R2012-10-01 13:49 Hallo, I am developping
作者 | 曹立成 10 月 21 日我在上海举办的 QCon 全球软件开发大会上分享了 Kotlin Multiplatform 相关的内容,这里记录成文章,分享给你。 所以我们选择了 Kotlin Multiplatform。 在下文中,我会多次提到 KMM 这个简称,这里先简单讲一下 KMM 是什么: 基于 KMP(Kotlin Multiplatform)派生,全称 Kotlin Multiplatform Mobile。 (技术解析) 代码工程结构 对于 Kotlin Multiplatform 来说,代码工程结构会和其他的工程不太一样。 使用 Kotlin Multiplatform 实现逻辑跨端,既可以低成本地满足逻辑一致性诉求,又可以提升研发效能。 对于客户端技术团队,我推荐大家试一试,还挺香的。
Kotlin Multiplatform Mobile 已经退出实验阶段,进入 Beta 测试。 按照 JetBrains 的说法,Beta 版本已经足够稳定,开发人员提可以开始采用 Kotlin Multiplatform Mobile 了。 在本文写作的时候,Kotlin Multiplatform Mobile 插件还处于 Alpha 阶段。 如果你喜欢不同的方法,也可以使用 Kotlin Multiplatform 创建跨平台库,然后在独立的 iOS 和 Android 项目中使用这些库。 这里有一个精心整理的 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,开发者可以显著减少重复代码,但需注意平衡代码共享与平台体验。
Compose Multiplatform 由 Compose for Desktop 和 Compose for Web 组成,通过 Kotlin Multiplatform 支持许多不同的平台。 Compose Multiplatform 使用了许多相同的概念,因此您应该有宾至如归的感觉,”JetBrains 在博客文章中如此写道。 这意味着 Compose Multiplatform 支持桌面上的所有主要的硬件加速引擎,例如 DirectX、Metal 和 OpenGL。 其表示,在 JetBrains 内部早在今年年初就开始在 Jetbrains Toolbox App 中应用 Compose Multiplatform。 这个 App 已经有超过 100 万月活用户,并在 4 个月前完全从 C++ 和 Electron 迁移到 Compose Multiplatform。
Kotlin Multiplatform 是一种跨所有这些平台共享非 GUI 代码的技术。 2022 年的一项调查显示,Kotlin Multiplatform 应用程序的代码共享率高达 63% Kotlin Multiplatform 适用于非 GUI 代码,但有一个相关项目 Compose Multiplatform,它可用于创建共享的用户界面(UI)。 如果 Compose Multiplatform 还没有准备好,那么开发者如何支持 iOS 呢? Kotlin Multiplatform 和 Compose Multiplatform 均可免费使用。Kotlin 的代码位于 Github 上,许可证是 Apache2.0。
3、 桌面应用程序:通过Compose Multiplatform,开发者可以在Windows、macOS和Linux等桌面平台之间共享UI 。 Kotlin Multiplatform的关键特性包括: 代码共享:在项目中使用的所有平台或部分平台之间共享公共代码。 此外,Compose Multiplatform作为Kotlin Multiplatform的重要组成部分,允许开发者在Android、iOS、Web和桌面平台之间共享UI,JetBrains正在不断增强其能力 对于想要开始使用Kotlin Multiplatform的开发者,可以访问Kotlin官方文档获取入门教程和相关教育资源 。 9、 使用 Compose Multiplatform(如果需要):对于 UI 代码共享,可以使用 Compose Multiplatform 来创建可在 Android 和 iOS 上共享的用户界面
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 技术, Kotlin Multiplatform 是 JetBrains 开发的跨平台解决方案,允许在多个平台间共享代码:支持的平台Android:原生 Android 应用iOS:原生 iOS 应用 Web 一套代码,三个平台将 Jetpack Compose 与 Kotlin Multiplatform 结合,可以实现:Android 原生应用:最佳性能和用户体验iOS 原生应用:原生性能和用户体验Web gradlew :lesson-01-basic-composables:wasmJsBrowserDevelopmentRun --continuous总结Jetpack Compose 与 Kotlin Multiplatform 我们可以通过这个Compose Multiplatform学习教程项目学习Jetpack Compose 与 Kotlin Multiplatform 的原理和应用场景。
当然,我这篇文章不是来对比这两个技术的,而是来介绍另一个新的移动跨平台技术的选择 -- KMM KMM KMM的全称是:Kotlin Multiplatform Mobile,它是jetbrains公司的产品
在深入学习状态概念之前,让我们先运行第三个模块的示例,直观感受 Compose 状态管理的效果:
Column 是垂直布局容器,对应 CSS 的 flex-direction: column。项目中的 ColumnLayoutExamples 展示了各种对齐方式:
KMP使用expect 和 actual 关键字 在 Kotlin Multiplatform 项目中,expect 和 actual 关键字被用于处理不同平台的 API 调用。 通过这种方式,Kotlin Multiplatform 允许开发者编写可在多个平台上运行的共享代码,同时保留对每个平台特定 API 的访问能力,实现代码的最大化重用和原生性能的结合。 代码示例 以下是一个使用 expect 和 actual 关键字在 Kotlin Multiplatform 项目中处理不同平台 API 调用的代码示例: 共通代码 (commonMain): // 预期声明
Compose Multiplatform 与 KMM的关系 要Compose Multiplatform 与 KMM的关系,我们只要来分别了解Compose Multiplatform 与 KMM分别是什么就行了 后来Compose Multiplatform的出现弥足了KMM的短板。那么Compose Multiplatform又是什么呢? 那么其实,你现在也已经知道了KMM与Compose Multiplatform的关系。接下来我们来看Compose Multiplatform 与 KMM是如何实践的。 实践Compose Multiplatform Compose Multiplatform 专注于UI复用,我们前面提到过,有个尴尬的问题就是KMM与Compose Multiplatform 的版本和插件是不统一的 Compose Multiplatform。
项目准备 .Net 7 Visual Studio 2022 项目搭建 MultiPlatform.Blazor MultiPlatform.Maui MultiPlatform.Server 整个项目结构如下: 项目整体思路就是将Blazor UI样式抽离至 MultiPlatform.Blazor(Razor类库)项目中,MultiPlatform.Maui(安卓、IOS等 1.抽离 MultiPlatform.Maui UI 至 MultiPlatform.Blazor 添加 MultiPlatform.Blazor 项目引用 文件抽离过去后注意调整命名空间,直接调整 @using MultiPlatform.Blazor.Data 因为我们将Main.razor文件抽离到了 MultiPlatform.Blazor,所以我们还需要调整 MultiPlatform.Maui ,使用 AdditionalAssemblies 加载 MultiPlatform.Blazor 程序集 3.添加 MultiPlatform.Blazor 项目引用 最后项目结构调整如下:
对于前端开发者来说,Material 3 + Compose Multiplatform 开启了跨平台开发的新篇章。下一步,我将继续探索自定义组件的开发,学习如何构建更复杂的业务组件。
项目准备 .NET 7 Visual Studio 2022 项目搭建 MultiPlatform.Blazor MultiPlatform.Maui MultiPlatform.Server 整个项目结构如下 : 项目整体思路就是将Blazor UI样式抽离至 MultiPlatform.Blazor(Razor类库)项目中,MultiPlatform.Maui(安卓、IOS等)项目用来构建多端应用,MultiPlatform.Server 1、抽离 MultiPlatform.Maui UI 至 MultiPlatform.Blazor 添加 MultiPlatform.Blazor 项目引用 文件抽离过去后注意调整命名空间,直接调整 @using MultiPlatform.Blazor.Data 因为我们将Main.razor文件抽离到了 MultiPlatform.Blazor,所以我们还需要调整 MultiPlatform.Maui MainPage.xaml 2、调整 MultiPlatform.Server项目 1、移除 MultiPlatform.Server的 MainLayout 文件 2、更改App.razor 文件,
Kotlin Multiplatform Kotlin Multiplatform允许我们在iOS与Android应用程序的业务逻辑中使用同一套代码库。 与之相反,Kotlin Multiplatform 是对当前平台特定技术的补充,致力于替代各类平台中立性业务逻辑。 换言之,Kotlin Multiplatform 的诉求在于为解决方案库带来新工具,而非取代整个解决方案库。 Hendrix Multiplatform SDK 通过 gradle 以 Android 库项目依赖项的形式进行导入。 总 结 过去几年以来,我们一直密切关注 Kotlin Multiplatform 的发展,也坚信项目已经迎来发展拐点。
Kotlin Multiplatform / Compose Multiplatform Kotlin Multiplatform 官网 :https://kotlinlang.org/ Compose Multiplatform 官网 :https://www.jetbrains.com/lp/compose-multiplatform/ 特点 :可实现业务逻辑代码在多端共享,降低代码重复率,提高开发效率 ,Compose Multiplatform 提供丰富的 UI 组件和工具,助力构建一致的用户界面,腾讯开源的 Kuikly 基于 KMP 的类 RN 方案,支持多端开发。