【问题标题】:(Dis-) Advantage of having multiple modules in an Android Studio Project?(Dis-) 在 Android Studio 项目中拥有多个模块的优势?
【发布时间】:2017-01-13 10:37:20
【问题描述】:

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

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

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

【问题讨论】:

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


【解决方案1】:

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

  1. 如果您发现编译时间较长,那么您可以从 gradle 中暂时禁用您不使用的模块并加快编译速度。
  2. 模块还可以帮助我们将项目划分为离散的功能单元。您可以创建一个包含所有纯 Java bean 的数据模块,并且如果您在同一个域中,则可以由多个应用程序使用。例如。金融领域可以有两个应用程序,一个用于查看客户的保单,另一个可以用于保险代理人查看相同的数据。但是数据模块可以在所有应用程序之间共享,甚至可以从服务器或 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

【讨论】:

  • 当然我已经看过开发者指南了,但我更关注的是构建性能,而不是模块化的好处。
  • Marvin Ramin 的演讲视频“模块化 Android 应用程序”skillsmatter.com/skillscasts/…
【解决方案2】:

昨天在 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多