前言
现在跨平台技术层出不穷,不管是最初的RN还是到现在的Flutter、Compose,都只是在UI上跨平台,虽然Flutter虽然可以处理一些公共的业务逻辑,但目前在业务较重的情况下仍然需要各自处理。
KMM与它们都不一样
KMM用于简化跨平台开发,可以在Android和IOS之间共享通用的代码。 仅在使用各自平台能力的时候,才会去编写各自平台特定的代码。
这一点可以使我们开发一套可以在多平台之间共享的代码库,用来构建统一的代码逻辑,而不用针对各个平台都去实现自己的一套,从而导致人力的浪费。还是非常的优秀的。
那为什么之前不温不火
Compose 和 Flutter 大家可能并不陌生,但是对于 KMM 也许会存在疑惑,确实感到蛮不起眼的。
直到去年10月份Android 官方宣布 Jetpack 开始要支持 KMM,但是我当初也是没有太过于关注。
觉得KMM 变不了天,至少它还处于 Beta 阶段,虽然 Jetpack 开始支持 KMM 是个很好的消息,意味着 KMM 的社区支持有了官方保证,但是吃螃蟹的人还没有出来说话谁也不敢多说什么。
之前不温不火也是因为Jetpack 都没有支持 KMM ,所以之前不火是有道理的。
KMM不再低调
KMM
Kotlin Multiplatform Mobile – KMM 是基于 Kotlin 并应用在 iOS 和 Android 的一种跨平台技术,它的特点是结合了跨平台和原生开发协同开发的模式,如下图所示,简单的理解就是:「从纯原生开发变成了 KMM + 原生 UI 开发」。
「使用 KMM 可以把您的业务逻辑和基建部分的能力跨平台化」,例如网络请求、数据存储,状态上报等模块通过 KMM 实现 Android 和 iOS 通用,例如前面介绍的 DataStore 就可以在 iOS 上支持使用。
而且之前使用过kmm的螃蟹,百度、Netflix、VMWare、Philips 等,目前收到的反馈都挺不错,而 Beta 版本也意味着现在 KMM 已经具备了使用的基础。
随着时间的推移现在已经解决了不少之前的存在的问题。
我选择KMM的原由
上手简单
从可用性方面来说,在 KMM 上可以使用开源框架进行网络请求、数据缓存等,常见的数据格式都已经支持,并且这些开源库都已经提供稳定版本;从易用性方面来说,作为 Androider,几乎是0成本上手,且开源框架的使用都非常简单,甚至比 Android 原生的开源框架(OkHttp、Room 等)使用更简单,iOSer 可能需要一定的学习成本。
综上,我认为 KMM 在功能上已经可以满足基础的逻辑层跨平台诉求,在使用上也非常简单。