我正在开发一个项目,尽可能让它模块化。
我尝试使用@Module(includes = {})注解来实现我的目标,但效果并不好。
我有一个gradle模块来处理所有的Java代码,在其中每个部分都有一个模块(例如About页面依赖的AboutModule)。然后,在整个“Core”gradle模块中,我有一个Dagger 2模块叫做“CoreModule”,它看起来像这样:
@Module(includes = {
AddonModule.class,
VersionModule.class,
AboutModule.class}
)
public class CoreModule {
}
我想知道在 Android Gradle 模块中的应用代码所在的组件中,我是否可以将该模块包含在一个组件中,然后该组件可以从 CoreModule 中列出的所有这些模块中 @Inject 任何内容?
目前,我从这些组件中获得了编译错误,表明它们注入到的文件正在“请求”一个完全不在该模块中的不同类。
例如,我有一个 GitHubComponent,它被注入到一个 GitHubActivity 中,并尝试使用 @Inject 注释来注入 GithubService,但编译器会抛出错误,表示该类正在尝试注入另一个类…但目标文件中并没有提到它。我已经简化了这个问题,以便找出错误所在,但我还没有看到它出错的地方。
我找不到任何关于这个方面的文档。 includes 部分实际上是做什么的?我是否使用正确,因此错误出现在其他地方?