在带有 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();
}
我有一个使用 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();
}