База данных Realm с шифрованием в Android с использованием Stetho, ошибка для визуализации в браузере Chrome

Я хотел бы просмотреть свою базу данных Realm в браузере Chrome с помощью Stetho в Windows.

Когда я не установил ключ шифрования, у меня нет проблем с его визуализацией, но, поскольку я установил его, мое приложение вылетает, когда я пытаюсь визуализировать базу данных, а затем запустить браузер Chrome.

Это мой исходный код в onCreate моего приложения:

// Initialize Realm. Should only be done once when the application starts.
Realm.init(this);
RealmConfiguration realmConfiguration = new RealmConfiguration.Builder()
    .encryptionKey("myencryptionkey64bits into bytes[]")
    .deleteRealmIfMigrationNeeded()
    .build();
Realm.setDefaultConfiguration(realmConfiguration);

// Create my RealmInspectorModulesProvider
RealmInspectorModulesProvider realmInspectorModulesProvider = RealmInspectorModulesProvider.builder(this)
    .withEncryptionKey("encrypted.realm", "myencryptionkey64bits into bytes[]")
    .build();

// Initialize Stetho
Stetho.initialize(Stetho.newInitializerBuilder(this)
    .enableDumpapp(Stetho.defaultDumperPluginsProvider(this))
    .enableWebKitInspector(realmInspectorModulesProvider)
    .build());

Исключение:

E/REALM_JNI: jni: ThrowingException 5, Realm at path '/data/data/com.mypackage/files/default.realm' already opened with a different encryption key. in /Users/cm/Realm/realm-java/realm/realm-library/src/main/cpp/io_realm_internal_SharedRealm.cpp line 92, .
E/REALM_JNI: Exception has been throw: Unrecoverable error. Realm at path '/data/data/com.mypackage/files/default.realm' already opened with a different encryption key. in /Users/cm/Realm/realm-java/realm/realm-library/src/main/cpp/io_realm_internal_SharedRealm.cpp line 92
E/REALM_JNI: jni: ThrowingException 5, Realm at path '/data/data/com.mypackage/files/default.realm' already opened with different inMemory settings. in /Users/cm/Realm/realm-java/realm/realm-library/src/main/cpp/io_realm_internal_SharedRealm.cpp line 92, .
E/REALM_JNI: Exception has been throw: Unrecoverable error. Realm at path '/data/data/com.mypackage/files/default.realm' already opened with different inMemory settings. in /Users/cm/Realm/realm-java/realm/realm-library/src/main/cpp/io_realm_internal_SharedRealm.cpp line 92

E/AndroidRuntime: FATAL EXCEPTION: StethoWorker-main-19
Process: com.mypackage.debug, PID: 31197
io.realm.exceptions.RealmError: Unrecoverable error. Realm at path '/data/data/com.mypackage/files/default.realm' already opened with different inMemory settings. in /Users/cm/Realm/realm-java/realm/realm-library/src/main/cpp/io_realm_internal_SharedRealm.cpp line 92
    at io.realm.internal.SharedRealm.nativeGetSharedRealm(Native Method)
    at io.realm.internal.SharedRealm.getInstance(SharedRealm.java:205)
    at io.realm.internal.SharedRealm.getInstance(SharedRealm.java:182)
    at com.uphyca.stetho_realm.RealmPeerManager.openSharedRealm(RealmPeerManager.java:149)
    at com.uphyca.stetho_realm.RealmPeerManager.openSharedRealm(RealmPeerManager.java:128)
    at com.uphyca.stetho_realm.RealmPeerManager.getDatabaseTableNames(RealmPeerManager.java:55)
    at com.uphyca.stetho_realm.Database.getDatabaseTableNames(Database.java:124)
    at java.lang.reflect.Method.invoke(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:372)
    at com.facebook.stetho.inspector.MethodDispatcher$MethodDispatchHelper.invoke(MethodDispatcher.java:96)
    at com.facebook.stetho.inspector.MethodDispatcher.dispatch(MethodDispatcher.java:67)
    at com.facebook.stetho.inspector.ChromeDevtoolsServer.handleRemoteRequest(ChromeDevtoolsServer.java:129)
    at com.facebook.stetho.inspector.ChromeDevtoolsServer.handleRemoteMessage(ChromeDevtoolsServer.java:111)
    at com.facebook.stetho.inspector.ChromeDevtoolsServer.onMessage(ChromeDevtoolsServer.java:87)
    at com.facebook.stetho.websocket.WebSocketSession$1.handleTextFrame(WebSocketSession.java:176)
    at com.facebook.stetho.websocket.WebSocketSession$1.onCompleteFrame(WebSocketSession.java:136)
    at com.facebook.stetho.websocket.ReadHandler.readLoop(ReadHandler.java:44)
    at com.facebook.stetho.websocket.WebSocketSession.handle(WebSocketSession.java:45)
    at com.facebook.stetho.websocket.WebSocketHandler.doUpgrade(WebSocketHandler.java:117)
    at com.facebook.stetho.websocket.WebSocketHandler.handleRequest(WebSocketHandler.java:83)
    at com.facebook.stetho.server.http.LightHttpServer.dispatchToHandler(LightHttpServer.java:84)
    at com.facebook.stetho.server.http.LightHttpServer.serve(LightHttpServer.java:61)
    at com.facebook.stetho.inspector.DevtoolsSocketHandler.onAccepted(DevtoolsSocketHandler.java:52)
    at com.facebook.stetho.server.ProtocolDetectingSocketHandler.onSecured(ProtocolDetectingSocketHandler.java:63)
    at com.facebook.stetho.server.SecureSocketHandler.onAccepted(SecureSocketHandler.java:33)
    at com.facebook.stetho.server.LazySocketHandler.onAccepted(LazySocketHandler.java:36)
    at com.facebook.stetho.server.LocalSocketServer$WorkerThread.run(LocalSocketServer.java:167)

Я подтверждаю, я предоставляю тот же ключ шифрования для Realm или Stetho. Я думаю, что я пропустил неправильную инициализацию объекта Stetho?

Спасибо за помощь!

1 ответ

Решение

В журнале написано, что вы пытаетесь открыть default.realm не encrypted.realm,

Не могли бы вы попробовать .withEncryptionKey("default.realm", "myencryptionkey64bits into bytes[]") вместо .withEncryptionKey("encrypted.realm", "myencryptionkey64bits into bytes[]")?

Или вы можете использовать .withDefaultEncryptionKey("myencryptionkey64bits into bytes[]") вместо этого, если вы используете один и тот же ключ для всех файлов области.

Другие вопросы по тегам