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

相关推荐
我命由我1234517 小时前
Android Jetpack Compose 开发问题:Unresolved reference ‘Icons‘.
android·java-ee·kotlin·android studio·android jetpack·android-studio·android runtime
坚果的博客20 小时前
CPF-KMP-CMP:在鸿蒙上用 Kotlin 写跨平台应用
华为·kotlin·harmonyos
事圆则缓20 小时前
Kotlin 高阶工程化与 Android 深入实践
android·开发语言·kotlin
pengyu1 天前
【Kotlin 协程修仙录 · 渡劫境 · 中阶】 | 造化神兵:自定义 CoroutineDispatcher 与调度器的终极定制
android·kotlin
pengyu1 天前
【Kotlin 协程修仙录 · 渡劫境 · 初阶】 | 飞升雷劫:CPS 变换与挂起函数字节码终极透视
android·kotlin
hunterandroid2 天前
Android 多渠道打包与 Gradle 构建优化实战
android·前端·kotlin
pengyu2 天前
【Kotlin 协程修仙录 · 大乘境 · 后阶】 | 死锁天劫:协程同步原语与 ThreadLocal 迁移之道
android·kotlin
天空之城--2 天前
过去一周Android行业动态:编码技术与综合趋势精选
android·flutter·性能优化·kotlin·android jetpack
海兰3 天前
【 Python 量化交易】第10章:八大经典策略
android·python·kotlin
JMchen1233 天前
【Android 性能优化实战 60 讲】04 Memory Profiler 高阶玩法:深剖堆内存原理,实战定位 Kotlin 闭包隐式泄漏
android·性能优化·kotlin·实战·源码分析·内存泄漏·memory profiler