Kotlin MultiPlatform 跨平台版本的记账 App

前言


一刻记账 KMP (Kotlin MultiPlatform) 跨平台版本今天终于把 Android 和 iOS 进度拉齐了.

之前只有纯 Android 的版本. 最近大半年有空就在迁移代码到 KMP 上

中间学了 iOS 基础知识. xcode 的使用. 跨平台的架构的搭建... 感觉经历了很多很多. 一把辛酸泪

迁移的心路历程

迁移到 KMP 的过程中. 最大的问题是各种三方库的迁移.

比如:

KMP 的优点

  • 语言 Kotlin 和 Compose UI 是我目前用过最好的语言和 UI 工具.
    • 特别是 Kotlin 语言, 真的棒!!!
  • 迁移的过程中. 由于我学习 Kotlin 很早. 所以迁移的时候, 80% 以上的 Kotlin 代码都能直接复用
  • Compose 也是学习的比较早. 所以 Compose 代码几乎 99% 都是直接可以用的.
  • Android 模块中可以直接访问到共享的 Shared 模块.
  • 平台的特性可以直接在 iOSMain 模块或者 appleMain 模块使用 Kotlin 代码直接调用到 iOS 系统代码
  • KMP 跨平台的方式相比其他语言来说更加的方便
    • 使用 expect 在 共享层声明, 在各个实现层就可以使用 actual 进行实现





KMP 的缺点

  • 我感觉在 IOS 端的支持不是很好.
    • 比如有些功能需要写成插件. 但是 iOS 端的实现我得使用 Kotlin 代码去调用 Swift 的库. 虽然官方对 Apple 几乎所有的系统库都支持调用. 但是调用的方法和参数和直接写 Swift 代码还是挺不一样的. 我甚至有时候都看着搜索出来的 Swift 实现. 我也没法翻译成 Kotlin 进行调用.
    • 还有些 Swift 的 Extend 扩展, 在 iOSMain 模块或者 appleMain 模块是没办法调用到的. 这让我很烦恼. 比如 Swift 代码中的 CIFilter.qrCodeGenerator() 我使用 Kotlin 代码就没办法直接调用到. 因为 CIFilter.qrCodeGenerator() 方法是一个扩展方法
    • iOS 端的调试比较困难. 至少我现在没有调试的办法. 我说的主要是调试平台共用的部分的代码.
    • iOS 的运行速度好像不是很高. 比如我打印一个 Error, iOS 平台会卡住. 虽然我 Release 不打, 但是卡我 debug 包我也难受
  • KMP 的生态还不如 Flutter. 生态还不成熟表示我很多库有时候需要自己实现几个端的. 开发效率会降低
  • 鸡肋的热重载功能
    • 目前据我所知, 热重载仅支持 Desktop 的 Target. hot-load
    • 并且我使用下来, 和我重启一遍 Desktop App 没啥两样啊. 速度贼慢

写在最后

希望 KMP 越来越好~~~~~~~

另外我的 一刻记账 App 也是一个 KMP 跨平台的尝试. 希望大家感兴趣的下载看看. 下载注册即送会员哦

KMP 迁移之前的开源版本在这 纯 Android 一刻记账开源版本

相关推荐
0wioiw019 小时前
Android-Kotlin基础(Jetpack④-Room)
android·开发语言·kotlin
华科云商xiao徐2 天前
Kotlin动态代理池+无头浏览器协程化实战
爬虫·tcp/ip·kotlin
智江鹏2 天前
Android 之 Kotlin中的符号
android·开发语言·kotlin
pengyu2 天前
【Kotlin系统化精讲:叁】 | 变量与常量:自由与约束的代码博弈
android·kotlin
jzlhll1232 天前
kotlin协程2025 通俗易懂三部曲之下篇 异常处理
kotlin·协程
欲儿2 天前
Kotlin Native调用C curl
c语言·开发语言·kotlin·语言调用
alexhilton2 天前
初探Compose中的着色器RuntimeShader
android·kotlin·android jetpack
小墙程序员2 天前
kotlin元编程(二)使用 Kotlin 来生成源代码
android·kotlin·android studio
小墙程序员2 天前
kotlin元编程(一)一文理解 Kotlin 反射
android·kotlin·android studio
KotlinKUG贵州2 天前
贪心算法:从“瞎蒙”到稳赚
算法·kotlin