io.realm.exceptions.RealmFileException:无效的助记符。错误

时间:2018-11-27 11:30:24

标签: java android database android-studio realm

我遇到了这个错误

  

io.realm.exceptions.RealmFileException:无法在无效的助记符路径下打开领域。”

我在互联网上搜索发现这是迄今为止在realm-core中的未解决问题。我想问两件事-

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的领域数据库。

下方的Stacktrace

  

E / Android运行时:致命异常:主要       流程: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.performLaunchActivity(ActivityThread.java:2913)           在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048)           在android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)           在android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)           在android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)           在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1808)           在android.os.Handler.dispatchMessage(Handler.java:106)           在android.os.Looper.loop(Looper.java:193)           在android.app.ActivityThread.main(ActivityThread.java:6669)           在java.lang.reflect.Method.invoke(本机方法)           在com.android.internal.os.RuntimeInit $ MethodAndArgsCaller.run(RuntimeInit.java:493)           在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(本机方法)           在io.realm.internal.OsSharedRealm。(OsSharedRealm.java:171)           在io.realm.internal.OsSharedRealm.getInstance(OsSharedRealm.java:241)           在io.realm.internal.OsSharedRealm.getInstance(OsSharedRealm.java:231)           在io.realm.RealmCache.doCreateRealmOrGetFromCache(RealmCache.java:318)           在io.realm.RealmCache.createRealmOrGetFromCache(RealmCache.java:284)           在io.realm.Realm.getDefaultInstance(Realm.java:407)           在com.example.app5.ui.MainActivity.populate(MainActivity.java:322)           在com.example.app5.ui.MainActivity.onCreate(MainActivity.java:225)           在android.app.Activity.performCreate(Activity.java:7136)           在android.app.Activity.performCreate(Activity.java:7127)           在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271)           在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2893)           在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048)           在android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)           在android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)           在android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)           在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1808)           在android.os.Handler.dispatchMessage(Handler.java:106)           在android.os.Looper.loop(Looper.java:193)           在android.app.ActivityThread.main(ActivityThread.java:6669)           在java.lang.reflect.Method.invoke(本机方法)           在com.android.internal.os.RuntimeInit $ MethodAndArgsCaller.run(RuntimeInit.java:493)           在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)   2018-11-28 12:38:43.356 1844-1917 /? E / InputDispatcher:通道'ba15b10 com.example.app5 / com.example.app5.ui.SplashActivity(服务器)'〜通道不可恢复,将被销毁!   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的提供商信息

0 个答案:

没有答案