Ответ 1
У вас есть несколько вариантов.
Вариант 1: Включить Stetho для всех сборок (используя compile
вместо debugCompile
) и инициализировать его только в классе Application
для отладочных сборников.
Это довольно легко сделать. В классе Application
проверьте BuildConfig.DEBUG
следующим образом:
if (BuildConfig.DEBUG) {
Stetho.initialize(
Stetho.newInitializerBuilder(this)
.enableDumpapp(Stetho.defaultDumperPluginsProvider(this))
.enableWebKitInspector(Stetho.defaultInspectorModulesProvider(this))
.build()
);
}
Вариант 2: Включать только Stetho для отладочных сборников и создавать различные классы Application
для отладки и выпуска.
Благодаря Gradle приложения могут иметь разные исходные наборы для разных вариантов сборки. По умолчанию у вас есть типы выпуска и отладки, поэтому вы можете иметь три разных набора:
- отладка для кода, который вы хотите использовать только в отладочных сборках
- релиз для кода, который вы хотите использовать только в выпусках
- main для кода, который вы хотите во всех сборках
Вероятно, ваш код приложения находится в исходном наборе main
. Вы можете просто создать новую папку под названием debug
рядом с папкой main
в вашем приложении и зеркалировать структуру вашей папки main
для всего, что вы хотите добавить для отладочных сборников.
В этом случае вам нужен класс Application
в вашем исходном наборе main
, который вообще не ссылается на Stetho.
Затем вам нужен класс Application
в вашем исходном наборе debug
, который инициализирует Stetho, как обычно.
Вы можете увидеть пример этой настройки в примере Stetho. В частности, здесь основной класс приложения, а здесь отлаживается класс приложений. Также обратите внимание, что они настраивают манифесты в каждом наборе источников, который выбирает, какой класс приложения использовать.