Android отладочная сборка проекта multi-SDK - PullRequest
0 голосов
/ 09 февраля 2020

Как добавить функциональность, заданную в режиме отладки c, в приложение Android, разбитое на несколько SDK?

Допустим, мне нужно добавить перехватчик OkHttp для всех клиентов OkHttp во все SDK. , Но это должно быть добавлено только в отладочную сборку приложения. Однако, когда приложение разбивается на несколько SDK, они публикуются в виде сборок релиза, даже если основное приложение построено в режиме отладки. Таким образом, перехватчики с заданными отладочными данными c внутри SDK не будут добавлены к клиентам OkHttp.

Как решить эту проблему? Я думал воспользоваться преимуществами внедрения зависимостей (Koin) и передать информацию о типе сборки из приложения, в котором запущен Koin, но не уверен, что Koin поддерживает эту функцию.

Ответы [ 2 ]

0 голосов
/ 10 февраля 2020

Вы можете использовать getAll() в Koin для своих целей.

moduleb:

Домен:

interface Interceptor
class InterceptorFactory(val interceptors: List<Interceptor>) // Here you have a list of all interceptors from all modules
class HeadersInterceptor : Interceptor

Koin:

object BKoin {

    val network2: Module
        get() = module {
            single<HeadersInterceptor>() bind Interceptor::class

            single<InterceptorFactory> {
                InterceptorFactory(getAll<Interceptor>())
            }
        }

}

модуль приложения:

определить ваши объекты

 class OtherInterceptor : Interceptor

объявить их

 object AKoin {

    val network1: Module
        get() = module {
            single<OtherInterceptor>() bind Interceptor::class
        }

 }

init Koin

 startKoin {
        val app = modules(
            listOf(
                BKoin.network2,
                AKoin.network1
            )
        )
        Log.d("TUT", "${app.koin.get<InterceptorFactory>().interceptors.map { it::class.simpleName }}")
    }

Gradle:

 dependencies {
    implementation project(':moduleb')
 }
0 голосов
/ 09 февраля 2020

Build Variants

Вы можете выбрать, какой вариант сборки активен для каждого из модулей вашего приложения.

https://developer.android.com/studio/build/build-variants

...