在带有 Realm 的项目上使用 LeakCanary

Using LeakCanary on project with Realm

我有一个使用 Realm 的 android 项目。 我正在尝试集成 LeakCanary 以查找内存泄漏,但是当 LeakCanary 尝试创建报告时,它崩溃并出现异常

encrypted.realm: Encrypted interprocess sharing is currently unsupported

据我了解,LeakCanary 试图从不同的进程访问 Realm,这会导致崩溃。

如何解决这个问题?有人在项目中使用 Realm 和 LeakCanary 吗?

正如我在本主题中所见https://github.com/realm/realm-java/issues/3053您可以通过这种方式跳过 LeakCanary 进程的 Realm 初始化

 if (!LeakCanary.isInAnalyzerProcess(this)) {
            byte[] key = new byte[64];
            Arrays.fill(key, (byte) 0);

            config = new RealmConfiguration.Builder(this).encryptionKey(key).build();
            realm = DynamicRealm.getInstance(config);
        }

或者,如果您仍然需要 Realm,您可以创建哑域配置

Realm.init(context);

if (LeakCanary.isInAnalyzerProcess(context)) {
    return new RealmConfiguration.Builder().build();
}