(Dis-) 在 Android Studio 项目中拥有多个模块的优势?

(Dis-) Advantage of having multiple modules in an Android Studio Project?

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

我知道 Android Modules in general and the advantages of SOLID,所以我的重点是特别考虑 构建性能。由于gradle可以做增量构建,如果只改变一个模块,其他模块不需要处理?

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

拥有多个模块比创建一个大模块更有优势 app-module。以下是要点:

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

You can have a look for more on android developer resource

How modularization can speed up your Android app’s built time

App modularization and module lazy loading at Instagram and beyond

Modularizing Android Applications by Mauin

Survey on how Android developers were modularising their apps

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

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

tl;博士:

First and most important, the hypothesis was correct, modularising project can significantly speed up build process, but not for all configurations.

Second, if splitting is done in a wrong way, then build time will be drastically increased, because Gradle build both, release and debug version of library modules.

Third, working in test-driven way is much easier for a project with multiple modules, because building a small library module is way faster then the whole project.

Forth, doing many things in parallel slows down the build. So having more powerful hardware is a good idea.

Below you can find results of all experiments described in this article

更新

地址为 Google I/O '17:https://youtu.be/Hx_rwS1NTiI?t=23m17s