即使没有任何更改,Android 多模块 Gradle 构建也很慢

标签 android android-studio gradle android-gradle-plugin

我有一个包含多个模块的 Android 项目,即使我尝试在不更改任何内容的情况下重建它,构建时间也很慢。

其结构类似于:

Simplified project setup

有更多的“父”(和独立的父兄弟)和“功能”模块,但设置是图片的设置。

我的 gradle.properties文件如下:

org.gradle.jvmargs=-Xmx4096m -Xms2048m
org.gradle.parallel=true
org.gradle.daemon=true
org.gradle.configureondemand=true

我正在使用 Gradle 版本 3.5 和插件版本 2.4.0-alpha7。

该项目还使用 multidex(javaMaxHeapSize "4g"jumboMode true)、数据绑定(bind)、kotlin 和 java 以及几个注释处理器。

在构建时,我可以看到多个线程在项目的大部分时间里并行运行不同的任务,除了最终的“app”模块(我认为这是正常的)。

但似乎很多时间都花在了不同的
::compileJavaWithJavac 任务。即使不进行任何更改,在配备 16 Gb RAM 的 MacBook Pro i7 上构建也需要大约 30 秒。

如果我更改功能模块的方法中的一行代码(甚至不更改方法的签名),构建时间将超过 1:30 分钟。

这些是正常时间吗?我可以进一步优化以缩短构建时间吗?

我还检查了其他一些答案:
  • 来自 this one , 设置 preDexLibraries = false没有帮助,我已经使用 assembleDebug
  • incremental = true建议here不起作用,是 deprecated
  • 禁用即时运行似乎有点帮助,但帮助不大
  • 上面讨论的项目的构建风格已经设置 minSdkVersion 21
  • 最佳答案

    您应该尽可能使功能模块独立,并且与其他模块的任何依赖关系请考虑 stub 。一种只包含接口(interface) feature1 -> featureonestub->feature2 的代理

    关于即使没有任何更改,Android 多模块 Gradle 构建也很慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44256204/

    相关文章:

    安卓工作室 : Exclude resource file under resources sourceSets

    android - 如何将 watch 模块添加到现有的 Android Studio 项目中?

    android - 错误插件 "Google Cloud Tools For Android Studio"未加载 Android Studio v 1.1.0

    java - 将 android studio 3.0.1 更新到 3.1 时找不到 android-maven-gradle-plugin.jar

    android - generateSafeArgsDebug 任务执行时出错,XmlPullParserException 仅允许空白内容

    Java,从多个类调用AlertDialog

    android - 构建 Gradle 错误无法获取未知属性 'compile'

    gradle - Gradle子项目依赖项无法由需要它的项目解决

    java - 了解简单 XML 解析器 - 新文件输出 - Java

    android - mupdf for android : ndk-build problem (error: redefinition of typedef. ...)