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

相关推荐
I'm Jie11 小时前
Gradle 多模块依赖集中管理方案,Version Catalogs 详解(Kotlin DSL)
android·java·spring boot·kotlin·gradle·maven
zhangphil14 小时前
Kotlin管道Channel融合flow流,协程实现Android废弃的AsyncTaskLoader(A)
kotlin
tangweiguo0305198716 小时前
Android 插件化开发完全指南(Kotlin DSL/Gradle KTS 配置)
android·kotlin
モンキー・D・小菜鸡儿16 小时前
Android BottomSheetBehavior 使用详解
android·kotlin
sinat_3842410916 小时前
从零开始打造一个 Android 音乐播放器(Kotlin + Jetpack Compose)
android·开发语言·kotlin
消失的旧时光-194317 小时前
Android(Kotlin) ↔ Flutter(Dart) 的“1:1 对应表”:架构分层来对照(MVVM/MVI 都适用)
android·flutter·kotlin
zhangphil1 天前
Kotlin协程flow缓冲buffer任务流,批次任务中选取优先级最高任务最先运行(二)
kotlin
IT乐手1 天前
在 Kotlin 中创建 DSL
kotlin
蓬松的毛球2 天前
kotlin 协程原理分析 - StateFlow 和 SharedFlow 原理
kotlin
常利兵2 天前
Kotlin Flow 从入门到实战:异步数据流处理的终极解决方案
android·kotlin