Android 中的多项目构建有什么好处?

Epi*_*rce 7 android multi-project gradle

我正在阅读Android: Clean Architecture的源代码,主要是为了学习如何将应用程序正确组织成层,以及 MVP 模式,并将其与我在这里阅读的 MVP 内容相匹配。

然而,尽管我发现结构很漂亮,但我并不真正理解将单个应用程序排序为多个子项目模块好处。考虑到它们(数据、表示、域)相互依赖,并且最终将成为同一个可执行文件的一部分,它看起来更像是配置地狱。

dependencies {
  ...
  compile project(':domain')
  compile project(':data')
Run Code Online (Sandbox Code Playgroud)

将一个Android 应用程序划分为多个子项目(模块),而不是将它们保存在一个项目中而仅仅通过将它们分开有什么好处?

Amn*_*hot 7

实际上,这个问题不是特定于 Android 的,而是与更多软件架构相关的,因为它适用于您开发的几乎所有软件(例如,为什么任何应用程序都包含多个模块而不是全部在一个包中)。

将代码拆分为模块至少会给您带来以下好处(这是我想到的前 3 个):

  1. 模块之间明确隔离。MVP 模式的整个目标是确保您的业务逻辑和表示层不会紧密耦合在一起。通过在不同的模块中定义这些,可以使这种分离更加清晰,并鼓励您坚持这种模式。
  2. 代码重用 - 考虑这样一种情况,您有一个应用程序要为多个客户销售,但这些客户中的每一个都希望获得不同的外观和感觉。如果您将所有代码都放在一个整体项目中,您将不得不拥有项目的多个分支,每个客户一个分支,或者以其他方式使用自定义选项使提供的应用程序代码膨胀。现在,如果另一方面你已经分离了你的模块,那么你可以为每个客户准备一个不同的表示层,并将其与其他通用模块捆绑在一起。
  3. 将项目拆分为子项目可以提高构建和测试效率,因为您可以仅重建和测试发生更改的模块,而不是在其中一个文件发生更改时重新编译整个项目。

我希望这对你有意义。