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

时间:2017-01-13 10:37:20

标签: android performance android-studio android-gradle android-module

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

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

这是否明显或者是否有相当大的开销?

2 个答案:

答案 0 :(得分:31)

拥有多个模块而不是创建单个大型应用程序模块是非常有利的。以下是关键点:

  1. 如果您发现编译时间花费的时间较长,那么您可以从gradle中禁用该模块,暂时不进行编译并更快地编译。
  2. 模块可以帮助我们将项目划分为离散的功能单元。您可以创建一个包含所有纯Java bean的数据模块,如果您在同一个域中,则可以由多个应用程序使用。例如。财务域可以有两个应用程序,一个用于查看客户的策略,另一个可以用于保险代理查看相同的数据。但是数据模块可以在所有应用程序之间共享,甚至数据模块也可以从服务器或API团队借用。数据模块可以单独测试,没有任何Android依赖关系,任何人都知道java可以编写测试用例。
  3. 每个模块都可以独立构建,测试和调试。
  4. 在您自己的项目中创建代码库或者您想为不同的设备类型(如电话和可穿戴设备)创建不同的代码和资源集时,其他模块通常很有用,但要将所有文件保存在同一项目中并且分享一些代码。
  5. Android应用模块和库模块也不同。
  6. 您可以根据ASOP的API版本保留两个不同版本的模块。
  7. 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

答案 1 :(得分:15)

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

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

TL; DR:

  

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

     

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

     

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

     

第四,并行做很多事情会减慢构建速度。因此拥有更强大的硬件是一个好主意。

     

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

更新

在Google I / O 17上解决:https://youtu.be/Hx_rwS1NTiI?t=23m17s