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 一刻记账开源版本

相关推荐
alexhilton7 小时前
Compose中的ContentScale:终极可视化指南
android·kotlin·android jetpack
jzlhll1237 小时前
kotlin Flow first() last()总结
开发语言·前端·kotlin
符哥200812 小时前
充电桩 WiFi 局域网配网(Android/Kotlin)流程、指令及实例说明文档
android·开发语言·kotlin
大傻^15 小时前
SpringAI2.0 Null Safety 实战:JSpecify 注解体系与 Kotlin 互操作
android·开发语言·人工智能·kotlin·springai
jzlhll12320 小时前
Kotlin Mutex vs Java ReentrantLock vs synchronized
java·开发语言·kotlin
Kapaseker20 小时前
一杯 Kotlin 美式品味 object 声明
android·kotlin
俩个逗号。。21 小时前
Kotlin 扩展函数详解
开发语言·kotlin
su1ka1112 天前
Kotlin(3)基本语法
kotlin
su1ka1112 天前
Kotlin(4)面向对象
kotlin
鹧鸪晏2 天前
搞懂 kotlin 泛型 out 和 in 关键字
android·kotlin