Модуль библиотеки Android, как ввести стетто только в сборку отладки

Имея модуль библиотеки Android, в сборке отладки хотелось бы использовать stetho, бота нет в сборке релиза. Я думаю, это может добавить зависимость

debugCompile 'com.facebook.stetho:stetho:1.4.1'
debugCompile 'com.uphyca:stetho_realm:2.0.0'

or using 
debugImplementation 'com.facebook.stetho:stetho:1.4.1'. // with latest version
debugImplementation 'com.uphyca:stetho_realm:2.0.0'

Вопрос в том, где код нужно взять StethoInterceptor

OkHttpClient.Builder()
    .addNetworkInterceptor(StethoInterceptor())
    .build()

как это компилируется в сборке релиза, что нет зависимости stetho?


person lannyf    schedule 29.06.2020    source источник
comment
Отвечает ли это на ваш вопрос? Включить Stetho только в вариант отладочной сборки   -  person EraftYps    schedule 29.06.2020
comment
Если stetho не предоставляет специальный артефакт для сборки выпуска, вам не следует использовать эту зависимость для каждого типа сборки. Вместо этого вы можете попробовать условно добавить, например: if(BuildType.Debug) { add stetho }   -  person Jeel Vankhede    schedule 29.06.2020
comment
он не компилируется, если нет зависимости .addNetworkInterceptor(StethoInterceptor())   -  person lannyf    schedule 29.06.2020


Ответы (1)


Вызовите приведенный ниже метод checkAndInitStetho() в своем классе application:

public YourApplication extends Application {

 @Override
    public void onCreate() {
        super.onCreate();
        checkAndInitStetho();
    }


private void checkAndInitStetho() {
        //Stetho integration
        if (BuildConfig.DEBUG) { 
            try {
                SyncTask.executeAndWait(() -> Stetho.initialize(
                        Stetho.newInitializerBuilder(YourApplication.this)
                                .enableDumpapp(Stetho.defaultDumperPluginsProvider(YourApplication.this))
                                .enableWebKitInspector(Stetho.defaultInspectorModulesProvider(YourApplication.this))
                                .build()));
            } catch (Exception e) {
                LOGE(LOG_TAG, "Error on checkAndInitStetho()", e);
            }
        }
    }
}

Кроме того, когда вы создаете OkHttpClient.Builder, вы должны проверить его режим debug, как показано ниже:

if (BuildConfig.DEBUG) {
                builder.addNetworkInterceptor(new 
                 StethoInterceptor());
 }

Перейдите по ссылке для класса application.

person Shalu T D    schedule 29.06.2020
comment
в библиотеке нет application, единственный код, который может понадобиться, это где-то сделать `.addNetworkInterceptor(StethoInterceptor())`` - person lannyf; 29.06.2020
comment
Не то чтобы ваше приложение для Android имеет класс приложений rt? в противном случае вы можете сделать это, пока выполняется convert() вашего первого действия. Лучше всего делать в классе приложений - person Shalu T D; 29.06.2020
comment
библиотека не знает, кто является хостинговым приложением. если нет зависимости от stetho, Stetho. не разрешается. - person lannyf; 29.06.2020