我有一个Android项目,按模块化方式进行架构。我通过将源代码分割成多个Gradle模块来实现项目的模块化,遵循“Clean Architecture”。
以下是该应用程序的结构。
在这个层次结构中,顶层模块 App
是没有任何其他模块依赖的主模块。较低级别的模块 domain
和 data
不依赖于 App
模块,而 App
模块包括 data
和 domain
模块。我已经将下面的代码添加到 app
模块的 build.gradle 文件中。
implementation project(':domain')
api project(':data')
现在,我遇到了保持每个模块间依赖关系的问题。因为每个模块都是单独的Android模块,每个模块都有自己的build.gradle
文件。App模块可以使用data和domain模块中的类。但是,我有一些通用的类(例如一些注释、实用程序、广播类、Dagger范围等),我希望在所有模块中使用。但这些是我面临的问题:
- 由于这些类包含在主模块app中,我无法在我的data和domain中访问它们,因为这些模块不依赖于更高层次的app。
- 我在所有层中使用的任何库(例如:RxJava)都需要包含在每个模块的
build.gradle
文件中。
作为解决方案,我考虑添加另一个Android模块,例如common,其中将包含我所有通用的类以及我在所有模块中使用的库。
我的其他模块app、domain和data将具有此模块作为其依赖项。
implementation project(':common')
所以,任何全局库和类都将添加到此模块中,每个单独的模块只会有特定于该模块的类。
这是一个好方法吗?还是有更有效地解决这个问题的方法吗?