Ручная установка в Leak Canary 2? - PullRequest
0 голосов
/ 29 марта 2020

Я был одним из пользователей, использующих Leak Canary 2. Благодаря этому я смог исправить ошибку утечки памяти в своем приложении. Я недавно заметил, что (я могу опоздать узнать об этом) было обновление Leak Canary 2.2, поэтому я применил более новую версию к своему приложению, добавив строку ниже в Manifest

debugImplementation 'com.squareup.leakcanary : leakcanary- android: 2.2 '

  • Здесь возникает проблема

До реализации утечки канарейка, я хотел, чтобы она началась обнаружение утечек памяти (также установка приложения «Утечки») только при включении в настройках приложения режима «Режим разработчика». Я делюсь своим приложением в виде apk-файла, чтобы пользователи могли легко тестировать и находить ошибки. Если приложение «Утечки» устанавливается внезапно, когда пользователи устанавливают мое приложение, даже если они не включили режим разработчика, они могут не знать, что это за приложение, и на самом деле это полезно для меня, потому что другие пользователи не поймут, что это за приложение говорит. Но согласно этому сайту , мне не нужно ставить какие-либо коды для установки утечки канарейки; это будет автоматически установлено. Я не могу предотвратить его установку на устройства пользователей.

class MainActivity : AppCompatActivity() {

    companion object {
        var installed = false
        @JvmField
        var watcher: RefWatcher? = null
    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        ....

        val shared = getSharedPreferences(StaticStore.CONFIG, Context.MODE_PRIVATE)

        if (!installed && shared.getBoolean("DEV_MODE", false)) {
            watcher = LeakCanary.install(application)
            installed = true
        }

        ....
    }
}

Приведенный выше код - это то, как я выполнял ручную установку до Leak Canary 2.2. По ссылке этот ответ . Когда приложение проверяет логическое значение (DEV_MODE), которое из общих настроек имеет значение true, оно разрешает установку и заставляет watcher проверять другие действия или потоки. Если я не позвоню LeakCanary.install (приложение) , приложение «Утечки» не будет установлено, поэтому пользователи могут использовать мое приложение, не видя этого дополнительного приложения. Конечно, если они включают режим разработчика, они могут использовать функцию обнаружения утечек памяти.

Но не существует метода, подобного LeakCanaray.install () (также RefWatcher тоже), поэтому я не могу выполнить ручную установку, как раньше ...

Есть ли способы выполнить ручную установку в Leak Canary 2.2?

Есть ли у меня перестать делать так, чтобы он не устанавливался автоматически, и заметить, что пользователи установят приложение «Утечки»?

1 Ответ

0 голосов
/ 31 марта 2020

См. «Отключение LeakCanary» в рецептах кода: https://square.github.io/leakcanary/recipes/#disabling -leakcanary

Вы хотите определить логический xml ресурс leak_canary_add_launcher_icon и установить его в false (=> значок не запускается)

Вы можете отключить просмотр экземпляра с помощью:

AppWatcher.config = AppWatcher.config.copy(enabled = false)
...