Временно отключите Leak Canary из приложений отладки

Я использую канареечную утечку для обнаружения потенциальных утечек в моем приложении для Android. Но когда я разрабатывал feature , это меня очень беспокоило, так как время от времени она начинала делать дампы кучи. Я использую его в debugImplemetation.

dependencies {
  debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.4'
} 

Теперь я хочу временно отключить его. Как мне это сделать ?. Один ответ, который я нашел, это

    LeakCanary.Config config = LeakCanary.getConfig().newBuilder()
                        .dumpHeap(false)
                        .build();
                LeakCanary.setConfig(config)

Это работает, но в режиме выпуска эта библиотека недоступна, поэтому она не будет компилироваться. Если я использую implementation вместо debugImplemetation , я увеличу размер apk и не добавлю никакого значения. Могу ли я что-нибудь сделать?


person FiXiT    schedule 25.06.2020    source источник


Ответы (1)


  • Шаг 1. Продолжение сохранения канареечной зависимости Leak в качестве debugImplementation.
  • Шаг 2. Создайте метод Util в папке src/debug/java/.
   

     import leakcanary.AppWatcher
        import leakcanary.LeakCanary
            fun configureLeakCanary(isEnable: Boolean = false) {
                LeakCanary.config = LeakCanary.config.copy(dumpHeap = isEnable)
                LeakCanary.showLeakDisplayActivityLauncherIcon(isEnable)
            }

  • Шаг 3. Создайте ту же функцию Util в src/release/java для подавления ошибок компилятора.

    /**
     * This method is added just to ensure we can build the demo application in release mode.
     */
    fun configureLeakCanary(isEnable: Boolean = false) {
        // This log is added just to supress kotlin unused variable lint warning and this will never be logger.
        android.util.Log.i("Demo Application", "Leak canary is disabled - State isEnable - ${isEnable}")
        // do nothing
    }

  • Шаг 4 — В классе приложения onCreate()

     if (BuildConfig.DEBUG) {
       configureLeakCanary();
     }

Ссылка — https://square.github.io/leakcanary/recipes/#disabling-leakcanary

person scout    schedule 02.07.2020