Android中的多项目构建有哪些好处?

时间:2015-04-14 15:11:23

标签: android gradle multi-project

我正在阅读Android : Clean Architecture的源代码,主要是为了学习如何将应用程序正确地组织到图层中,以及MVP模式,以及将它与我在MVP上阅读的内容相匹配{ {3}}

然而,就像我找到结构一样,我并不真正理解将单个应用程序整理到多个子项目模块中的好处 即可。考虑到它们(数据,表示,域)彼此依赖,并最终将成为同一可执行文件的一部分,它看起来更像配置地狱。

dependencies {
  ...
  compile project(':domain')
  compile project(':data')

Android应用程序划分为多个子项目(模块)有什么好处,而不是将它们保存在一个项目中,而只是通过 packages <分隔它们< / em>的

3 个答案:

答案 0 :(得分:3)

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

将代码拆分为模块会为您提供至少以下好处(这些是我想到的第3个好处):

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

答案 1 :(得分:1)

使用多模块项目而不仅仅是软件包的主要好处是模块之间的代码使用仅限于一个方向。

模块内的任何代码都可以有来回关系:

A - &gt;使用来自 - &gt;的类乙

B - &gt;使用来自 - &gt;的类A

如果A和B在单独的模块中,这只是单向的:

A - &gt; (使用来自的课程) - &gt;乙 ...

但是B在A中看不到任何东西。

这将你的想法分成更小,一口大小的块。如果您需要了解模块B中的类如何工作,您只需要查看B中的其他类。 但在第一个场景中,你必须查看A和B中的所有类。

作为额外的好处,如果你想重用任何代码,你可以将该模块复制到下一个项目。

我通常将大部分代码放在模块中,并使用薄的应用层将它们连接在一起。我建议使用依赖性反转来在模块之间建立任何连接。

答案 2 :(得分:0)

除了更快的构建时间之外,拆分模块的另一个Android特定优势是应用程序的更新大小会更少。