Square Inc. 在 Droidcon SF'19 上展示了其内部模块化架构:
https://www.droidcon.com/media-detail?video=380843878
但是,我对一些子弹有点困惑。请你帮助我好吗?
:wiring
模块?我发现它增加了复杂性::app
, 因为 fragment 定义于 :impl
模块无法访问它的 Dagger 组件 ,在 :impl-wiring
中定义模块。 :impl
不依赖于 :impl-wiring
, 因为依赖是相反的。:app
进行这种注入(inject)模块,它是动态功能的基础模块。那为什么
:wiring
模块?可以合并
:impl
和 :impl-wiring
, 或 :fake
和 :fake-wiring
一起消除上面提到的所有问题。而且,在 :demo-apps
一个人可能只依赖于 :impl
或 :fake``, and not on
:impl-wiring (or
:假接线```)。
最佳答案
这种类型的模块的创建是为了进一步分离。通过这个,您可以生成您使用的组件类型(koin、dagger)以及如何使用的抽象。如果项目很大,这样做是有意义的。
目前,我在模块之间生成以下依赖流:
警告:仔细检查方向性。
:feature-A:open <- :feature-A:impl -> :feature-A:impl-wiring
:feature-A:impl-wiring -> :feature-A:impl, :feature-A:open
:app -> :feature-A:open, :feature-A:impl-wiring
我仍然不确定应用程序是否应该依赖
open
和 impl-wiring
, 或者哪个应用应该只依赖于 open
和 open
来自 impl-wiring
.
关于android - 为什么我们需要在 Android 多模块化架构中将 DI 布线与实现分开?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64661640/