我创建了一个使用 Realm 数据库存储数据的 SDK。请参阅下面的代码,我是如何初始化我的 sdk 数据库的
Realm.init(application);
config = new RealmConfiguration.Builder().name("sdk.db")
.schemaVersion(1)
.deleteRealmIfMigrationNeeded()
.build();
Realm.setDefaultConfiguration(config);
应用类中的App类似。
- 首先创建并初始化应用程序数据库并调用 sdk 方法,该方法在内部创建并初始化 sdk.db。
但是当我运行应用程序时出现以下错误
io.realm.exceptions.RealmException: Async transaction failed
Caused by: io.realm.exceptions.RealmException: 'class com.models.db.FavouriteIdsModel' is not part of the schema for this Realm.
at io.realm.internal.RealmProxyMediator.getMissingProxyClassException(RealmProxyMediator.java:234) at io.realm.DefaultRealmModuleMediator.getSimpleClassNameImpl(DefaultRealmModuleMediator.java:82) at io.realm.internal.RealmProxyMediator.getSimpleClassName(RealmProxyMediator.java:72) at io.realm.RealmSchema.getTable(RealmSchema.java:177) at io.realm.Realm.delete(Realm.java:1689) at com.jiostb.jiogames.databaserealm.FavouriteMethod$4.execute(FavouriteMethod.java:79) at io.realm.Realm$1.run(Realm.java:1601) at io.realm.internal.async.BgPriorityRunnable.run(BgPriorityRunnable.java:34) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:458) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) at java.lang.Thread.run(Thread.java:764)
当我看到数据库文件时,我遇到了一些奇怪的事情
- sdk.db 数据存储在 app.db 中,sdk.db 也有相同的数据
最佳答案
SDK 有可能会覆盖默认配置,而不是使用其自己的内部 RealmConfiguration。
另外,如果一个库模块想要为另一个模块公开它的架构,您必须使用带有 library = true
的 @RealmModule
注释,并在配置中指定它。
关于android - lib 中的 Realm db + 应用程序中使用 lib 的 Realm db 相互冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56335915/