我有一个以模块化方式构建的 Android 项目。我遵循干净的体系结构,通过在多个 Gradle 模块之间划分它们的源代码来对项目进行模块化。
这是应用程序的结构。
此层次结构中的顶级模块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
and中访问这些类domain
,因为这些模块不依赖于更高层app
- 我在所有层中使用的任何库(例如:RxJava)都需要包含在
build.gradle
每个模块的
作为解决方案,我想再添加一个 android 模块,比如说common
它将包含我所有的通用类以及我在所有模块中使用的库。
我的所有其他模块app
,domain
并将data
将此模块作为依赖项。
implementation project(':common')
因此,任何全局库和类都将添加到该模块中,并且每个单独的模块都将只有特定于模块的类。
这是一个好方法吗?或者有什么方法可以有效地解决这个问题?