我正在研究一个项目,并试图使其尽可能模块化。匕首2:@Module(包括=)做什么?
我正在尝试使用@Module(includes = {})注释来实现我的目标,并且它工作得不太好。
我有一个用于所有Java代码的gradle模块,并且每个部分都有一个模块(例如About页面依赖关系的AboutModule)。然后,整个“核心” gradle这个模块,我有一个匕首2模块称为“CoreModule”它看起来像这样:
@Module(includes = {
AddonModule.class,
VersionModule.class,
AboutModule.class}
)
public class CoreModule {
}
难道我就在想,在Android gradle这个模块中,所有的应用程序代码去,我应该能够将该模块包含在Component中,并且该组件可以@从CoreModule中列出的所有模块中注入任何东西?
目前,我从这些组件收到编译错误,提示它们注入的文件是“要求”一个完全不同的类,它不在模块中。例如,我有一个GitHubComponent被注入到GitHubActivity中,并且还尝试使用@Inject注释GithubService注入,但是编译器抛出错误,该类试图注入另一个类...这在目标文件中没有提及。我已经sjmplfied这个试图清除错误,但我没有看到它出错的地方。
我找不到这方面的任何文档。包含部分实际上做了什么?我是否正确使用它,因此错误在其他地方?
感谢您的支持。我在Docs页面上看到了高和低(尽管在我家的通勤车上),但是找不到它。我一直以正确的方式使用它们,这非常棒。感谢您帮助解决这个问题!关于ti我的错误实际上我发现这是因为CoreModule包含了Core库中的所有模块,其中一些依赖项没有包含在我正在使用的组件中(GitHubComponent,在这种情况下 - 版本和Addon模块在GitHub模块中没有提供另一个Retrofit存储库依赖项)。那也解决了那个问题! – MattBoothDev