如何修复 Koin lib 中的“未找到类型 'Context' 的兼容定义”?

Lun*_*lpo 3 android dependency-injection kotlin koin

我刚开始在准备测试的 android(替换 Dagger 2)项目中使用 Koin lib。我在模块中的 android 应用上下文有问题:

val M = module {
   val ctx = androidApplication() //here error
}
Run Code Online (Sandbox Code Playgroud)

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))
    }
}
Run Code Online (Sandbox Code Playgroud)

我得到日志:

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 
Run Code Online (Sandbox Code Playgroud)

并且应用程序崩溃。我是否错过了 Koin 配置中的某些内容?在目标项目中,我有几个深深依赖于应用程序上下文的模块。而且我不想使用对这个上下文的全局引用。

Abh*_*bey 6

解决方案很简单,但不是那么明显。

不知何故,Android Studio 导入了独立的 startKoin 函数,而不是特定的 android 函数。

所以你必须更换

import org.koin.standalone.StandAloneContext.startKoin
Run Code Online (Sandbox Code Playgroud)

import org.koin.android.ext.android.startKoin
Run Code Online (Sandbox Code Playgroud)

Application课堂上

请告诉这是否有效。