我刚刚开始在为测试准备的 android(以替换 Dagger 2)项目中使用 Koin 库。我对模块中的 android 应用程序上下文有疑问:
val M = module {
val ctx = androidApplication() //here error
}
Koin 在 App 类中启动:
import android.app.Application
import android.content.Context
import org.koin.android.ext.android.startKoin
class App : Application() {
override fun onCreate() {
super.onCreate()
startKoin(this, listOf(M))
}
}
我得到日志:
D/App: onCreate()
I/KOIN: [context] create
E/KOIN: [ERROR] - Error while resolving instance for class 'android.app.Application' - error: org.koin.error.NoBeanDefFoundException: No compatible definition found for type 'Application'. Check your module definition
然后应用程序崩溃了。我是否遗漏了 Koin 配置中的某些内容?在目标项目中,我有几个模块非常依赖于应用程序上下文。而且我不想对此上下文使用全局引用。
最佳答案
解决方案很简单,但不是那么明显。
Android Studio 以某种方式导入独立的 startKoin 函数而不是特定的 android 函数。
所以你必须更换
import org.koin.standalone.StandAloneContext.startKoin
到
import org.koin.android.ext.android.startKoin
在应用
类中
请告诉我这是否有效。
关于android - 如何修复 Koin lib 中的 "No compatible definition found for type ' 上下文?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52344507/