使用Realm Kotlin是否需移除原Realm?出现io.realm重复类错误如何处理
问题解答
核心结论
你遇到的类重复报错是因为同时引入了旧版Realm Android和0.x版本的Realm Kotlin,二者包名完全重叠,默认无法共存。
- 如果你坚持使用当前0.3.1版本的Realm Kotlin,必须完全移除原Realm Android的所有相关配置和依赖才能解决冲突,这种方案不支持逐步迁移。
- 如果你需要实现渐进式迁移,可以将Realm Kotlin升级到1.0.0及以上稳定版本,该版本开始官方做了包名隔离,Realm Kotlin的API全部迁移到
io.realm.kotlin包下,和旧版Realm Android的io.realm包完全独立,可在项目中共存。
具体修复步骤(支持渐进式迁移)
- 升级Realm Kotlin的gradle插件版本到1.0.0及以上,修改classpath配置:
// 保留旧版Realm的classpath用于兼容原有代码 classpath "io.realm:realm-gradle-plugin:10.3.1" // 替换为Realm Kotlin稳定版,示例用1.13.0,可替换为最新稳定版 classpath "io.realm.kotlin:gradle-plugin:1.13.0"
- 插件配置不需要修改,两个插件可以同时启用:
id 'realm-android' id 'io.realm.kotlin'
- 升级Realm Kotlin依赖版本:
// 替换原有0.3.1版本的依赖,单Android平台也可以用library-android implementation 'io.realm.kotlin:library-base:1.13.0'
注意事项
- 新旧版本的Realm数据库默认不共享,如需迁移原有旧版数据到Realm Kotlin,需要手动实现数据迁移逻辑。
- 所有旧版Realm相关代码仍可正常运行,你可以逐步替换为Realm Kotlin的实现,待全部迁移完成后再移除旧版Realm的所有配置和依赖即可。
内容的提问来源于stack exchange,提问作者Pitos
相关产品推荐
相关产品推荐

