如何在其他模块中获取AppComponent实例

时间:2020-01-27 09:25:40

标签: android dagger-2 dagger

我在多模块项目中使用匕首。我正在开发独立于主App模块的功能模块(Gradle模块)。

主应用程序gradle模块导入了我的模块,因此无法在我的模块中访问主模块中的类。

请参阅此图以更好地理解。

enter image description here

假设我正在使用:feature模块。并在app模块的build.gradle中导入:feature

implementation project(':feature')

现在,我的匕首设置遇到一些问题。 AppComponent位于:app

中无法访问的:feature模块内部

借助AndroidInjector,我将依赖项注入:feature中的活动和片段中。因此,即使AppComponent不是 在:feature模块中可以访问dagger(通过@ContributesAndroidInjector的帮助)将能够解析该图,这使我可以轻松地将其注入到框架类中。 (活动,服务,片段)

但是我的:feature模块中有一个普通的类Feature.java,它是我的功能的启动器类(类似于Application类)。我叫Feature.init(),在其中初始化功能所需的所有对象。

在这里,我需要使用Dagger并在此处进行场注入。

        appComponent.inject(this);

但是我在这里面临的问题是,在这里无法访问AppComponent。我需要从AppComponent注入某些依赖关系,但自

AppComponent:app模块的一部分,我的功能无法导入:app,因此我无法获取AppComponent的实例。有什么办法解决这个问题?就像Android注入器注入活动的方式一样?

0 个答案:

没有答案