Remote Debugging has been terminated with reason:

2019-08-16 17:49发布

问题:

I am getting connection lost error, when try to see the realm database. here's how i am initalizing stetho and realm. i am still getting this error. I have even put withDeleteIfMigrationNeeded( true ). still didn't work.

public class ApplicationClass extends Application {

    //  Database Name...
    private static final String DB_NAME = "Cheruvu.realm";

    @Override
    public void onCreate() {
        super.onCreate();
        configureRealm();
    }

    private void configureRealm() {

        Realm.init( this );

        RealmInspectorModulesProvider realmInspectorModulesProvider = RealmInspectorModulesProvider.builder(this)
                  .withDeleteIfMigrationNeeded(true)
                  .build();

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

        RealmConfiguration config = new RealmConfiguration.Builder()
                .name( DB_NAME )
                .deleteRealmIfMigrationNeeded()
                .encryptionKey( generateSecurityKey() )
                .build();

        Realm.deleteRealm( config );

        Realm.setDefaultConfiguration( config );
    }

   private byte[] generateSecurityKey() {
        ByteBuffer bb = ByteBuffer.wrap( new byte[64] );
        bb.putInt( UUID.randomUUID().hashCode() );
        return bb.array();
    }

    @Override
    public void onTerminate() {
        super.onTerminate();
        Realm realm = Realm.getDefaultInstance();
        if (!realm.isClosed()) {
            Realm.getDefaultInstance().close();
        }
    }
}

this is my dependencies :

//  stetho for database lookup
implementation "com.uphyca:stetho_realm:2.3.0"
implementation "com.facebook.stetho:stetho:1.5.0"

回答1:

You are missing the encryption key for the Realm.

String securityKey = generateSecurityKey();

    RealmInspectorModulesProvider realmInspectorModulesProvider = RealmInspectorModulesProvider.builder(this)
              .withDeleteIfMigrationNeeded(true)
              .withEncryptionKey(DB_NAME, securityKey)
              .build();

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

    RealmConfiguration config = new RealmConfiguration.Builder()
            .name( DB_NAME )
            .deleteRealmIfMigrationNeeded()
            .encryptionKey(securityKey)
            .build();