47

在 Android Studio 项目中拥有多个模块是否比只有一个大型app模块更有利?

我大致了解Android 模块和SOLID的优势,所以我的重点是特别考虑构建性能。由于 gradle 可以进行增量构建,如果只有一个模块发生变化,其他模块不需要处理吗?

这是明显的还是有相当多的开销?

4

2 回答 2

37

拥有多个模块而不是创建单个大型应用程序模块具有很大的优势。以下是要点:

  1. 如果您发现编译时间需要更长的时间,那么您可以从 gradle 中禁用您暂时不使用的模块并更快地编译它。
  2. 模块还可以帮助我们将项目划分为离散的功能单元。您可以创建一个包含所有纯 Java bean 的数据模块,并且如果您在同一个域中,则可以由多个应用程序使用。例如。财务领域可以有两个应用程序,一个用于查看客户的保单,另一个可以用于保险代理人查看相同的数据。但是数据模块可以在所有应用程序之间共享,甚至可以从服务器或 API 团队借用数据模块。数据模块可以单独测试,无需任何android依赖,任何了解java的人都可以编写测试用例。
  3. 每个模块都可以独立构建、测试和调试。
  4. 在您自己的项目中创建代码库时,或者当您想要为不同的设备类型(例如手机和可穿戴设备)创建不同的代码和资源集时,附加模块通常很有用,但将所有文件保持在同一个项目的范围内并共享一些代码.
  5. Android 应用程序模块和库模块也不同。
  6. 您可以根据 ASOP 的 API 版本保留两个不同版本的模块。

您可以查看更多关于 android 开发者资源的信息

模块化如何加快 Android 应用的构建时间

Instagram 及其他平台的应用程序模块化和模块延迟加载

Mauin 模块化 Android 应用程序

关于 Android 开发人员如何模块化他们的应用程序的调查

于 2017-01-20T11:11:06.270 回答
17

昨天有一篇关于 Medium 的文章,正好解决了我的问题:

https://medium.com/@nikita.kozlov/how-modularisation-affects-build-time-of-an-android-application-43a984ce9968#.at4n9imbe

tl;博士:

首先也是最重要的,假设是正确的,模块化项目可以显着加快构建过程,但并非适用于所有配置。

其次,如果以错误的方式进行拆分,那么构建时间将大大增加,因为 Gradle 会构建库模块的发布版本和调试版本。

第三,对于具有多个模块的项目,以测试驱动的方式工作要容易得多,因为构建一个小的库模块比整个项目要快得多。

第四,并行执行许多事情会减慢构建速度。所以拥有更强大的硬件是个好主意。

您可以在下面找到本文中描述的所有实验的结果

更新

在 Google I/O '17 上发表:https ://youtu.be/Hx_rwS1NTiI?t=23m17s

于 2017-01-22T19:26:08.077 回答