gpt4 book ai didi

android - 为什么我们需要在 Android 多模块化架构中将 DI 布线与实现分开?

转载 作者:行者123 更新时间:2023-12-04 11:44:26 25 4
gpt4 key购买 nike

Square Inc. 在 Droidcon SF'19 上展示了其内部模块化架构:
https://www.droidcon.com/media-detail?video=380843878
但是,我对一些子弹有点困惑。请你帮助我好吗?

  • 为什么他们实际上需要:wiring模块?我发现它增加了复杂性:
  • 您会为每个新功能获得额外的 gradle 模块
  • 你必须对你的 进行某种全局注入(inject)。 fragment 某处:app , 因为 fragment 定义于 :impl模块无法访问它的 Dagger 组件 ,在 :impl-wiring 中定义模块。 :impl不依赖于 :impl-wiring , 因为依赖是相反的。
  • 您不能拥有 Android 动态功能模块,因为他们应该知道它是 Dagger 组件 为了注入(inject)它的 fragment .但是没有办法从 :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 , 或者哪个应用应该只依赖于 openopen来自 impl-wiring .

    关于android - 为什么我们需要在 Android 多模块化架构中将 DI 布线与实现分开?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64661640/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com