我们正在声明我们的泄漏金丝雀依赖项,如项目的Github页面所述.
debugCompile 'com.squareup.leakcanary:leakcanary-android:1.3.1'
releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.3.1'
到目前为止,事情进展顺利.现在我们开始排除这样的已知泄漏:
ExcludedRefs.Builder excludedRefsBuilder = AndroidExcludedRefs.createAppDefaults();
excludedRefsBuilder.staticField("com.google.android.chimera.container.a", "a");
refWatcher = LeakCanary.install(app, DisplayLeakService.class, excludedRefsBuilder.build());
现在,当我们切换到发布版本类型时,不再找到类似AndroidExcludedRefs,DisplayLeakService和ExcludedRefs的类,因为“no-op”依赖项不包含它们.
处理这个问题的最佳方法是什么?
解决方法:
我们的LeakCanary设置在我们的类DevToolsController中实现.为了解决这个问题,我们将默认实现放入“debug”源文件夹,将“no-op”实现放入“release”源文件夹.