在Android中,Room和Retrofit不支持KMP,我应该使用什么来代替?

问题描述 投票:0回答:2

我有一个 Android 项目,我想制作一个 KMP 项目,这样我也可以在 iOS 上运行它,我正在使用 Room 和 Retrofit 库,但似乎它们不支持 KMP,因为它们生成 Java 代码,有吗有办法解决这个问题吗?如果没有,我应该使用什么,以及如何使用不同的数据库库而不丢失保留的数据?

android kotlin retrofit android-room
2个回答
1
投票

流行的 Kotlin 多平台替代品是:


0
投票

不幸的是,没有办法让它们工作,除非你为 iOS 使用不同的库并仅将这两个库保留在 Android 端。

作为替代方案,我建议使用 Ktor 而不是 Retrofit,因为它是一个纯 kotlin 库,并且转换非常容易,特别是如果您的应用程序使用干净的架构并且数据层与其他层分离.

对于数据库管理,您可以使用SQLDelight代替Room,它不像Room那么直观,并且可能有点难以习惯,但它是一个很好的选择,转换需要执行多个步骤,主要是因为您将有确保一切都与原来完全相同,这样您就可以保留存储的数据而不会丢失。

迁移后不要丢失数据的注意事项

  1. 确保使用完全相同的架构
  2. 确保在 SQLDelight 中使用与 Room 中完全相同的数据库文件名
  3. 为之前迁移的所有版本编写迁移文件,就像 Room 手动迁移一样,如果您使用 Room AutoMigration 方法,则在 SQLDelight 中为其编写手动迁移。

注意:第三点很重要的是保持向后兼容性,否则,拥有比最新版本更旧的数据库版本的用户将无法使用您的应用程序。

一步一步

如果你决定这样做,我写了一篇详细的文章,一步步介绍从 Room 迁移到 SQLDelight,而不丢失保存的数据,希望有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.