我在多模块项目中使用匕首。我正在开发独立于主App模块的功能模块(Gradle模块)。
主应用程序gradle模块导入了我的模块,因此无法在我的模块中访问主模块中的类。
请参阅此图以更好地理解。
假设我正在使用: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注入器注入活动的方式一样?