GVi*_*i82 5 android dependency-injection module dagger-2 dagger-hilt
Jeroen Mols 的这篇有趣的文章展示了一种模块化 Android 应用程序的可能方法。它基本上将模块分为 3 层(App、Features和Libraries)。App直接与 通信Features并Features可以依赖Libraries. 这意味着App不直接与 交互Libraries。
现在,如果我正确理解 HILT 文档,则包含Application(即 App 模块)并因此具有 HILT 入口点 ( HiltAndroidApp) 的模块需要了解想要使用依赖项注入的所有其他模块。因此,例如,如果我有一个名为 的库libraries:analytics,我需要我的应用程序模块依赖于它,所以我将被迫在我的app/build.gradle:
implementation project(":libraries:analytics")
Run Code Online (Sandbox Code Playgroud)
这违反了整个架构试图实现的分离和抽象。
我的解释正确吗?如果是这样,您会怎样做才能不破坏建议的架构?
如果您使用Hilt Gradle 插件并且具有其他模块的传递依赖项,您可以在下面将其应用到:app/build.gradle并从中删除传递模块依赖项。
hilt {
enableAggregatingTask = true
}
Run Code Online (Sandbox Code Playgroud)
另请参阅更多详细信息:https://github.com/google/dagger/issues/2123#issuecomment-928064317