首页 > 解决方案 > 如何在不同的模块中获取 AppComponent 实例

问题描述

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

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

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

在此处输入图像描述

假设我正在处理:feature模块。并在app模块的 build.gradle 导入:feature

implementation project(':feature')

现在,我的匕首设置遇到了一些问题。AppComponent 位于:app模块内部,在:feature

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

但是我的Feature.java:feature 模块中有一个普通类,它是我的功能的启动器类(一种应用程序类)。我调用Feature.init()我为我的功能初始化所有必需对象的地方。

这里我需要使用 Dagger 并在这里进行字段注入。

        appComponent.inject(this);

但我在这里面临的问题是,这里无法访问 AppComponent。我需要注入某些依赖项,AppComponent但是因为

AppComponent:app模块的一部分,我的功能不导入:app我无法获得AppComponent. 有没有办法解决这个问题?像,android注入器注入活动的方式?

标签: androiddagger-2dagger

解决方案


推荐阅读