Я добавляю Stetho в мое приложение. Чтобы предотвратить его зависимость в release
apk, я добавил его только как зависимость отладки.
debugApi 'com.facebook.stetho:stetho:1.5.1'
debugApi 'com.facebook.stetho:stetho-okhttp:1.5.1'
У меня есть интерфейс Initializer, который настраивает Stetho.
interface IStethoInitializer {
/**
* Call on application create
*/
fun initStetho(context: Context)
fun getStethoNetworkInterceptor(): Interceptor?
}
И 2 одинаковые реализации: одна для выпуска, другая для отладки.
import android.content.Context
import com.facebook.stetho.Stetho
import com.facebook.stetho.okhttp.StethoInterceptor
import com.squareup.okhttp.Interceptor
class DebugStethoInitializer : IStethoInitializer {
override fun initStetho(context: Context) {
Stetho.initializeWithDefaults(context)
}
override fun getStethoNetworkInterceptor(): Interceptor? = StethoInterceptor()
}
import android.content.Context
import android.support.annotation.Keep
import com.squareup.okhttp.Interceptor
class ReleaseStethoInitializer : IStethoInitializer {
override fun initStetho(context: Context) = Unit // no-op
override fun getStethoNetworkInterceptor(): Interceptor? = null
}
Теперь я использую поле BuildConfig, чтобы выбрать нужную реализацию во время компиляции.
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
buildConfigField 'com.arka.prava.stetho.IStethoInitializer', 'STETHO', 'new com.arka.prava.stetho.ReleaseStethoInitializer()'
}
debug {
buildConfigField 'com.arka.prava.stetho.IStethoInitializer', 'STETHO', 'new com.arka.prava.stetho.DebugStethoInitializer()'
}
}
Вариант отладки работает нормально, но вариант выпуска выдает ошибки.
DebugStethoInitializer.kt: (4, 12): Unresolved reference: facebook
DebugStethoInitializer.kt: (13, 9): Unresolved reference: Stetho
DebugStethoInitializer.kt: (16, 64): Unresolved reference:StethoInterceptor
Ну, очевидно, поскольку я добавил зависимость отладки, только они не разрешены. Итак, как я могу исключить DebugStethoInitializer.kt
из пути компиляции в типе сборки выпуска?
Спасибо!