【发布时间】:2022-01-07 10:49:04
【问题描述】:
我正在尝试使用Dagger2 制作多模块项目。你可以看到我的代码following the link。在main 分支中,所有匕首类都在presentation 模块中的工作解决方案。
现在我正在尝试为 DI 根创建单独的 app 模块。你可以看到最新的尝试in the develop branch。它不工作。我想在app 模块中创建我的根ApplicationComponent 组件,并从其他模块中添加PresentationComponent(子)组件。每次我尝试某事时,最终都会得到以下结果:
dagger.internal.codegen.ComponentProcessor 无法处理“ru.ircover.schultetables.app.ApplicationComponent”,因为并非所有依赖项都可以解决。使用生成的代码检查编译错误或循环依赖
这很奇怪,因为与main 分支相比,我没有更改任何依赖项。唯一改变了 - 从根组件ApplicationComponent 到子PresentationComponent 的新链接。据我了解,没有办法将循环依赖显示为app 模块,其内容在presentation 模块中不可见。我已经按照我在 google 中遇到的所有教程进行了操作,但没有一个有帮助。
我已经尝试过的:
- 添加到子组件的根组件getter。
- 添加到子组件的根组件
Builder或Factory。 - 使用
subcomponent链接添加到根组件特殊模块。 - 将子组件的
inject方法移至父组件。
现在我被困住了。似乎问题出在组件或模块连接的某个地方,但我无法找到它发生的位置和方式。我在这里需要帮助。
【问题讨论】:
-
通常对 StackOverflow 的期望是发布一个最小的可重现示例(问题中的所有代码,而不是指向存储库的链接)和完整的错误消息。你能减少你的例子并仍然重现吗?您确定没有像您的 ComponentProcessor 错误消息所暗示的其他错误消息吗?如果没有这些,这个问题将更像是一个猜谜游戏,而不是一个可解决的问题。
-
@JeffBowman 我希望我有更多的错误消息,但我没有。我发现的所有问题 -
daggerrepo 中的问题,他们想在其中开发错误消息。但据我所知,这还没有完成。