В моем проекте Android есть два модуля: модуль приложения и модуль библиотеки.
Оба этих двух модуля нуждаются в Koin для D.I., поэтому я вызываю startKoin
в MyApplication
классе в модуле приложения и IninKointContentProvider
в модуле lib, как показано ниже.
// app module
class MyApplication : Application() {
override fun onCreate() {
super.onCreate()
startKoin(this, modules1)
}
}
// lib module
class InitKoinContentProvider : ContentProvider() {
override fun onCreate(): Boolean {
startKoin(context.applicationContext, modules2)
return true
}
}
Затем приложение упало и показало это сообщение
Caused by: org.koin.error.BeanOverrideException: Try to override definition with Single [class='android.content.Context'], but override is not allowed. Use 'override' option in your definition or module.
Думаю, startKoin
можно вызвать только один раз.
Решение, которое я нашел, - это объединение двух модулей коинов с последующим вызовом startKoin
в MyApplication
, но мне это не нравится. Модуль lib может быть импортирован другим проектом Android, который не использует коин, в этом случае я думаю, что вызов startKoin
в InitKoinContentProvider
лучше.
Любое решение этой проблемы ?? Спасибо!