我有一个 Android 项目,我想制作一个 KMP 项目,这样我也可以在 iOS 上运行它,我正在使用 Room 和 Retrofit 库,但似乎它们不支持 KMP,因为它们生成 Java 代码,有吗有办法解决这个问题吗?如果没有,我应该使用什么,以及如何使用不同的数据库库而不丢失保留的数据?
流行的 Kotlin 多平台替代品是:
不幸的是,没有办法让它们工作,除非你为 iOS 使用不同的库并仅将这两个库保留在 Android 端。
作为替代方案,我建议使用 Ktor 而不是 Retrofit,因为它是一个纯 kotlin 库,并且转换非常容易,特别是如果您的应用程序使用干净的架构并且数据层与其他层分离.
对于数据库管理,您可以使用SQLDelight代替Room,它不像Room那么直观,并且可能有点难以习惯,但它是一个很好的选择,转换需要执行多个步骤,主要是因为您将有确保一切都与原来完全相同,这样您就可以保留存储的数据而不会丢失。
注意:第三点很重要的是保持向后兼容性,否则,拥有比最新版本更旧的数据库版本的用户将无法使用您的应用程序。
如果你决定这样做,我写了一篇详细的文章,一步步介绍从 Room 迁移到 SQLDelight,而不丢失保存的数据,希望有帮助!