Исключить класс из пути компиляции kotlin для типа сборки выпуска - PullRequest
0 голосов
/ 10 мая 2019

Я добавляю 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 из пути компиляции в типе сборки выпуска?

Спасибо!

...