java - io.realm.exceptions.RealmFileException:助记符无效。错误
问题描述
我遇到了这个错误
io.realm.exceptions.RealmFileException:无法在路径无效的助记符处打开领域。”
我在互联网上搜索发现这是目前在领域核心中的一个未解决问题。我想问两件事 -
1) 每次打开应用程序时,我都尝试重新运行以下代码,它为我解决了这个问题。-
RealmConfiguration config = new RealmConfiguration.Builder()
.encryptionKey(key)
.schemaVersion(0)
.migration(new Migration())
.build();
Realm.setDefaultConfiguration(config);
这是修补程序吗?有没有更好的解决方法?
2) 初始化领域配置的领域强制方式是什么?我们是每次打开应用程序时都重新运行上面的代码,还是只执行一次并使用Realm.setDefaultConfiguration
一个标志来查看它是否已设置?
重现的步骤和有关我的应用程序的一些详细信息如下:-
1)应用程序首次打开,此代码检查是否需要设置默认配置:
boolean cond1 = mSharedPreferenceManager.checkKeyExistence(UtilityManager.IS_DEFAULT_CONFIG_INITIALISED,SharedPreferenceManager.USER_AUTH_STORE);
if(!cond1) {
RealmConfiguration config = new RealmConfiguration.Builder()
.encryptionKey(key)
.schemaVersion(0)
.migration(new Migration())
.build();
Realm.setDefaultConfiguration(config);
mSharedPreferenceManager.saveToPreferences(true, UtilityManager.IS_DEFAULT_CONFIG_INITIALISED, SharedPreferenceManager.USER_AUTH_STORE);
}
由于我在第一次安装时设置了标志,因此 if 块中的上述代码下次不再运行。
2)当我下次打开应用程序时,只Realm.init(this);
运行并且代码崩溃并出现助记符错误。
有关应用程序中领域使用的一些重要细节 - 目前应用程序中没有发生迁移,只是一个空的占位符类。只有一个名为 default.realm 的领域数据库存在。
下面的堆栈跟踪
E/AndroidRuntime:致命异常:主进程:com.example.app5,PID:4419 java.lang.RuntimeException:无法启动活动 ComponentInfo{com.example.app5/com.example.app5.ui.MainActivity}:io。 realm.exceptions.RealmFileException:无法在路径“/data/data/com.example.app5/files/default.realm”打开领域:助记符无效。top_ref[0]:D80ED9100000019C,top_ref[1]:CDD91816A436DE3C,助记符:B9 A4 9D 6E,fmt[0]:41,fmt[1]:206,标志:FE。(无效的助记符。top_ref[0]:D80ED9100000019C,top_ref[1]:CDD91816A436DE3C,助记符:B9 A4 9D 6E,fmt[0]:41,fmt[1]:206,标志:FE)(/data/data/com .example.app5/files/default.realm)在 /Users/cm/Realm/realm-java/realm/realm-library/src/main/cpp/io_realm_internal_OsSharedRealm.cpp 第 101 行种类:ACCESS_ERROR。在 android.app.ActivityThread。java:493) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) 原因:io.realm.exceptions.RealmFileException:无法在路径'/data/data/com.example 打开领域.app5/files/default.realm':助记符无效。top_ref[0]:D80ED9100000019C,top_ref[1]:CDD91816A436DE3C,助记符:B9 A4 9D 6E,fmt[0]:41,fmt[1]:206,标志:FE。(无效的助记符。top_ref[0]:D80ED9100000019C,top_ref[1]:CDD91816A436DE3C,助记符:B9 A4 9D 6E,fmt[0]:41,fmt[1]:206,标志:FE)(/data/data/com .example.app5/files/default.realm)在 /Users/cm/Realm/realm-java/realm/realm-library/src/main/cpp/io_realm_internal_OsSharedRealm.cpp 第 101 行种类:ACCESS_ERROR。在 io.realm.internal.OsSharedRealm.nativeGetSharedRealm(Native Method) 在 io.realm.internal.OsSharedRealm.(OsSharedRealm.java:171) 在 io.realm。主要(ZygoteInit.java:858)2018-11-28 12:38:43.356 1844-1917/?E/InputDispatcher: channel 'ba15b10 com.example.app5/com.example.app5.ui.SplashActivity (server)' ~ Channel 已不可恢复地损坏,将被处理掉!2018-11-28 12:38:43.441 2537-3071/? E/s.nexuslaunche: 无法打开 APK '/data/app/com.example.app5-Ozu0pufh-sj1_M7EbxGkXA==/base.apk' I/O 错误 2018-11-28 12:38:43.441 2537-3071/ ? E/ResourcesManager:未能添加资产路径/data/app/com.example.app5-Ozu0pufh-sj1_M7EbxGkXA==/base.apk 2018-11-28 12:38:44.092 2805-2907/?E/ActivityThread:无法找到 com.google.android.apps.gsa.testing.ui.audio.recorded 的提供者信息 ~ 频道无法恢复,将被处理掉!2018-11-28 12:38:43.441 2537-3071/? E/s.nexuslaunche: 无法打开 APK '/data/app/com.example.app5-Ozu0pufh-sj1_M7EbxGkXA==/base.apk' I/O 错误 2018-11-28 12:38:43.441 2537-3071/ ? E/ResourcesManager:未能添加资产路径/data/app/com.example.app5-Ozu0pufh-sj1_M7EbxGkXA==/base.apk 2018-11-28 12:38:44.092 2805-2907/?E/ActivityThread:无法找到 com.google.android.apps.gsa.testing.ui.audio.recorded 的提供者信息 ~ 频道无法恢复,将被处理掉!2018-11-28 12:38:43.441 2537-3071/? E/s.nexuslaunche: 无法打开 APK '/data/app/com.example.app5-Ozu0pufh-sj1_M7EbxGkXA==/base.apk' I/O 错误 2018-11-28 12:38:43.441 2537-3071/ ? E/ResourcesManager:未能添加资产路径/data/app/com.example.app5-Ozu0pufh-sj1_M7EbxGkXA==/base.apk 2018-11-28 12:38:44.092 2805-2907/?E/ActivityThread:无法找到 com.google.android.apps.gsa.testing.ui.audio.recorded 的提供者信息 092 2805-2907/? E/ActivityThread:无法找到 com.google.android.apps.gsa.testing.ui.audio.recorded 的提供者信息 092 2805-2907/? E/ActivityThread:无法找到 com.google.android.apps.gsa.testing.ui.audio.recorded 的提供者信息
解决方案
推荐阅读
- reactjs - React FontAwesome 图标不喜欢 Material-UI 工具提示
- swift - 需要在我的应用程序中提供一些演示数据,它使用领域作为数据库
- r - R- 子集或打印 5x14 数据帧中所有可能的列对
- vue.js - Firefox 触摸模拟器不会在 Vue.js 中触发 mouseover 事件
- arrays - 如何在点击时对 JSON 数组进行排序?
- ansible - 如何在 Ansible 中添加不同主机的变量
- next.js - NextJS[next-i18next] - 从数据库(DB)导入翻译
- node.js - Chromium (V8) 与 Firefox (SpiderMonkey) 访问未定义属性时出错
- javascript - 在 React Native 中使用 Momentjs 计算预订结束前的剩余时间
- yarnpkg - 将参数传递给 prescript 但不传递给脚本?