Android 如何从另一个类而不是应用程序类启动koin

Android 如何从另一个类而不是应用程序类启动koin,android,koin,Android,Koin,我正在创建一个应用程序作为库。必须在其中集成库的主应用程序具有应用程序类,因此我无法在我的库应用程序中添加应用程序类。我发现koin必须从应用程序类开始。我可以从另一个类调用startKoin吗?您可以创建自己的koin应用程序,该应用程序不共享全局koin上下文。您也不需要在应用程序类中初始化它。然后可以在您自己的KoinComponent实现中使用此实例 您可以在此处找到详细说明: 如果您的目的是向应用程序注入库依赖项,则可以让库公开一组模块,这些模块可以从应用程序中引用,并在启动Koin时

我正在创建一个应用程序作为库。必须在其中集成库的主应用程序具有应用程序类,因此我无法在我的库应用程序中添加应用程序类。我发现koin必须从应用程序类开始。我可以从另一个类调用startKoin吗?

您可以创建自己的
koin应用程序,该应用程序不共享全局koin上下文。您也不需要在
应用程序
类中初始化它。然后可以在您自己的
KoinComponent
实现中使用此实例

您可以在此处找到详细说明:


如果您的目的是向应用程序注入库依赖项,则可以让库公开一组模块,这些模块可以从应用程序中引用,并在启动Koin时进行初始化

例如:

在library中,有一个公共模块作为libraryModule:

val libraryModule = module{
    single{
        ObjectA()
    }
}
现在,当您在应用程序模块中包含库时,您可以将其用作:

class MyApplication : Application{

    override fun onCreate() {
        super.onCreate()
        initializeKoinDI()
    }


    private fun initializeKoinDI() {
        startKoin {
            androidContext(this@MyApplication)
            modules(listOf(appModule1, appModule2, libraryModule))
        }
    }
}