android - 如何在不同的模块中获取 AppComponent 实例
问题描述
我在多模块项目中使用匕首。我正在开发一个独立于主 App 模块的功能模块(Gradle 模块)。
主应用程序 gradle 模块导入我的模块,因此在我的模块中无法访问主模块中的类。
请参阅此图以更好地理解。
假设我正在处理:feature
模块。并在app
模块的 build.gradle 导入:feature
implementation project(':feature')
现在,我的匕首设置遇到了一些问题。AppComponent 位于:app
模块内部,在:feature
我在:feature
AndroidInjector 的帮助下将依赖项注入到我的活动和片段中。因此,即使 AppComponent 在:feature
模块中不可访问,dagger 将能够解析图形(在 @ContributesAndroidInjector 的帮助下),这使我可以轻松地注入框架类。(活动、服务、片段)
但是我的Feature.java
:feature 模块中有一个普通类,它是我的功能的启动器类(一种应用程序类)。我调用Feature.init()
我为我的功能初始化所有必需对象的地方。
这里我需要使用 Dagger 并在这里进行字段注入。
appComponent.inject(this);
但我在这里面临的问题是,这里无法访问 AppComponent。我需要注入某些依赖项,AppComponent
但是因为
AppComponent
是:app
模块的一部分,我的功能不导入:app
我无法获得AppComponent
. 有没有办法解决这个问题?像,android注入器注入活动的方式?
解决方案
推荐阅读
- python - 从 python 3.6.1 转换为 3.6.5 后出现“UnicodeDecodeError: 'utf-8' codec can't decode byte”
- java - java设计模式的建议
- python - 我的代码有什么问题?这是一个储物柜拼图
- python - 如何在笔记本中绘制 keras 激活函数
- java - 具有共享参考的 NiFi 定制处理器使用最旧的版本
- matlab - Ghostscript ps2pdf 在 MATLAB 中无法正常工作
- c - Scanf在c中跳过字符
- java - MacOS和Windows中相同字符的不同代码点
- html - 实数计数器
- c# - C# .NET core 获取当前用户 ID 的最佳方式