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

Android multi-module Gradle build slow even without any changes

提问人:ADev 提问时间:5/30/2017 更新时间:12/27/2019 访问量:1375

问:

我有一个包含多个模块的 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 ( 和 )、数据绑定、kotlin 和 java 以及几个注释处理器。javaMaxHeapSize "4g"jumboMode true

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

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

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

现在是正常时期吗?我有什么可以进一步优化以缩短构建时间的吗?

我还检查了其他一些答案:

  • 这个开始,设置无济于事,我已经使用了preDexLibraries = falseassembleDebug
  • incremental = true此处的建议不起作用,已弃用
  • 禁用即时运行似乎有一点帮助,但没有多大帮助
  • 上面讨论的项目构建风格已经确定minSdkVersion 21
安卓 android-studio android-gradle-插件

评论

1赞 Fadli 10/17/2017
你终于找到了建造时间长的罪魁祸首吗?我遇到过类似的问题。
0赞 Abhijit Chakra 6/2/2021
这真的是在消耗生产时间,谷歌应该发布清晰的文档,当Android应用程序中有多个模块时的方法以及如何提高速度

答:

0赞 Bytecode 12/27/2019 #1

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

评论

0赞 Al.G. 2/20/2023
“与其他模块的任何依赖,请考虑存根”是什么意思?
0赞 Bytecode 3/25/2023
使用接口模块解决编译时依赖性,并使用 dagger 或任何 DI 框架来提供运行时实现