首页 > 解决方案 > 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 的提供者信息

标签: javaandroiddatabaseandroid-studiorealm

解决方案


推荐阅读