KMP开发第一步-Fleet

Kotlin Multiplatform (KMP) 概念
Kotlin Multiplatform 是一种允许您在不同平台(例如 iOS、Android、Web、桌面和服务器端)之间共享代码的 Kotlin 功能。它基于以下核心思想:
- 共享代码逻辑: 将应用程序的通用逻辑(例如业务规则、数据模型、网络请求等)编写在共享代码库中。
- 平台特定实现: 对于需要与特定平台交互的部分(例如 UI、平台特定的 API 调用),编写平台相关的代码。
- 预期声明 (expect) 和实际实现 (actual): 使用 expect 关键字在共享代码中声明平台相关的接口或类,然后使用 actual 关键字在每个目标平台中提供具体的实现。
KMP 的优势
-
代码复用,减少重复开发: KMP 最显著的优势是能够显著减少在不同平台之间重复编写代码的工作量。您可以将应用程序的核心逻辑编写一次,然后在多个平台上重用,从而节省开发时间和成本。
-
提高开发效率: 通过代码复用,开发人员可以专注于平台特定的功能和用户体验,而无需重复实现相同的业务逻辑。这有助于提高开发效率并加快产品上市速度。
-
代码一致性和维护性: 使用 KMP 可以确保不同平台上的应用程序具有一致的行为和逻辑。这有助于减少错误和 bug,并简化代码维护。当需要更改共享逻辑时,只需在一个地方进行修改,所有平台都会自动更新。
-
逐步迁移: 您不需要一次性将整个应用程序转换为 KMP。您可以选择性地将部分代码(例如数据模型或网络层)迁移到共享模块,然后逐步扩展。
-
与原生平台良好集成: KMP 与原生平台(例如 Android 的 Java/Kotlin 代码和 iOS 的 Swift/Objective-C 代码)可以很好地互操作。您可以在 KMP 代码中调用原生 API,反之亦然。
-
多平台支持: KMP 支持广泛的平台,包括:
Android: 使用 Kotlin/JVM 编译为 Java 字节码。 iOS: 使用 Kotlin/Native 编译为原生代码。 Web: 使用 Kotlin/JS 编译为 JavaScript。 JVM(服务器端、桌面应用等): 使用 Kotlin/JVM。 其他平台: Kotlin/Native 还支持其他平台,例如 macOS、Windows、Linux 等。 强大的工具支持: JetBrains 提供了强大的工具支持 KMP 开发,包括 IntelliJ IDEA 和 Fleet。这些 IDE 提供了代码补全、导航、重构、调试等功能,可以提高开发效率。
KMP 适用场景
- 业务逻辑复杂的应用程序: 如果您的应用程序具有大量的共享业务逻辑,那么 KMP 可以带来显著的优势。 需要在多个平台上保持一致性的应用程序: 如果您需要在 Android 和 iOS 等平台上提供一致的用户体验和功能,那么 KMP 是一个不错的选择。
- 希望提高开发效率和降低维护成本的团队: KMP 可以帮助团队更高效地开发和维护多平台应用程序。
KMP 不适用场景
- 依赖大量平台专用的SDK和UI 的应用程序: 如果您的应用程序主要由平台特定的 UI 组成,并且大量依赖平台专用的SDK,那么 KMP 的优势可能不明显。在这种情况下,使用平台特定的 IDE开发可能更合适。
- 简单的应用程序: 对于非常简单的应用程序,使用 KMP 可能会增加不必要的复杂性。
什么是Fleet
截图内容翻译的大概意思:为了获得最佳的 Kotlin 多平台开发体验,我们建议使用 JetBrains Fleet。 Fleet 是适用于任何语言的代码编辑器,可以转变为更强大的开发工具。它被设计为智能的,专注于核心开发工作流程(编辑-构建-运行循环),具有人工智能功能,并为远程开发和协作做好准备。Fleet这个工具支持你在所有目标平台上测试和调试你的代码。你还可以在Kotlin多平台代码和其他与Kotlin兼容的语言编写的代码之间进行导航。
Fleet目前不支持Windows电脑.Windows电脑可以用Android studio配合KMP插件也能支持我们进行多平台开发的,不过作为单一平台Android开发的IDE,有些功能和特性并没有Fleet这么全.本文作者还是建议大家用Fleet来作为多平台开发工具.
下载Fleet
- 通过Fleet官网下载
- 通过JetBrains的Toolbox下载安装(推荐)
toolbox下载地址
配置环境
- 安装Android Studio(为了让项目跑在Android模拟器上)
- 安装Xcode(为了让项目跑在iphone模拟器上)
- JDK(>=17)
环境检测(支持mac only)
- 安装KDoctor
brew install kdoctor
- 运行
kdoctor并得到结果
如截图所示,这里的结论是打勾的,说明我们的环境已经支持kotlin多平台了.如果是x的话,那么就需要根据具体的提示来处理只到这里☑为止.
到这一步我们距离开发一个在多平台上运行的Helllo World的程序已经成功一大半了.👇下面我们再花给5分钟直接实现在Android,IOS,Mac,Windows,Web上能运行的Hello World 程序.
一键配置项目

这里依次输入项目名和包名.然后勾选需要支持的平台,这里我们勾选出了后台服务的其他平台.点击下载后,我们就能得到一个基本配置好的多平台项目了.解压之后,我们直接用Fleet来打开即可.
打开项目

第一次打开的项目会下载一些依赖和后台服务项(代码补全等).有些同学可能会在这一步卡住,或者出现一些失败的提示.大致原因基本上都是因为国内网络无法访问一些国外的依赖造成的.有经验的同学可以通过配置国内镜像或者科学上网的方式,具体方式可以上网搜一下,或者留言.作者看到后会私信解决方法.
目前kotlin多平台对web支持还不是特别好,并不建议大家用kmp在生产环境开发web.
编辑项目
简单的把显示的文本换一下

运行项目
配置好模拟器后,点击右上角运行可以看到能分别运行Android,桌面,Web,IOS
下面我们一个一个运行看看效果如何.在运行web的时候报错了!应该是代理之类的问题.不过不影响我们这篇文章的主要内容和其他平台的展示.

总结
Kotlin Multiplatform 是一种强大的技术,可以帮助您在不同平台之间共享代码,提高开发效率,并降低维护成本。通过CMP还能在不同平台之间共享UI.
通过Fleet代码编辑器合理地使用 KMP+CMP,您可以一套逻辑,一套UI就能构建出高质量的多平台应用程序。