Android Studio 缓慢增量构建

Android Studio slow incremental build

提问人:A1m 提问时间:2/8/2019 最后编辑:CommunityA1m 更新时间:2/9/2019 访问量:857

问:

我经历了许多步骤来完善我们的构建系统(这些以及更多)。后来,我读了这篇官方博文,声称在 Gradle 3.4 中通过增量构建将构建时间缩短了 5-10 倍。事实上,我们的增量构建不起作用,因为我们使用了 annotationProcessors。从 Gradle 4.7 开始,注解处理器可以选择增量构建兼容。我经历了许多依赖项更新,以使用支持它的 annotationProcessors 激活增量构建。

通过各种配置和改进,我能够将构建时间(预构建)从 ~30 秒缩短到 ~19 秒。根据增量构建博客文章,我假设我可以进一步将构建时间减少到 ~5 秒。

不幸的是,通过增量构建,它只下降到 ~15 秒。使用,我试图进一步诊断问题。仅减去 gradle 任务,它显示编译步骤从 ~16 秒增加到 ~12 秒。--profile--infocompileDevDebugJavaWithJavac

在 12.51 秒内完成 476 个类的增量编译。

在我看来,这对于单行更改来说太慢了,而且它几乎不能反映 Gradle 对增量构建的要求。我特别尝试更改具有很少依赖项的文件,并且我知道公共常量会触发完全重建。还有什么原因会导致仅针对单个文件的增量构建速度如此之慢?

我还尝试启用实验功能

android.enableSeparateAnnotationProcessing=true

它确实有效并将我的构建分为两个编译步骤

compileDevDebugJavaWithJavac 6.777秒

进程DevDebugAnnotationsWithJavac 6.104s

我希望结合

org.gradle.parallel=true

这两个任务可能会并行运行,并且几乎是构建时间的一半。但显然并行处理在这里不起作用,或者是吗?

还可以做些什么来增加非常小的更改的构建时间?

编辑:我发现主要问题是我们有太多的类依赖,它总是触发 476 个类的编译(见这个问题)。由于我不希望在我们的遗留代码中解决足够的类依赖关系:我的问题仍然存在。项目是否可以并行化,或者是否有任何其他配置?enableSeparateAnnotationProcessing

android gradle android-gradle-plugin android-studio-3.0 增量构建

评论

0赞 Bach Vu 2/8/2019
尝试在 gradle build 首选项中打开离线模式
0赞 A1m 2/8/2019
这与这个问题无关。我还描述说我已经完成了所有这些工作。
0赞 Bach Vu 2/8/2019
不过,我在您的问题中没有看到任何地方提到 Android StudioOffline mode
2赞 A1m 2/8/2019
看第一个链接。这是我经历过的众多建议之一。它与增量编译无关。

答:

1赞 spentag 2/8/2019 #1

与其担心增量方面,不如进行一些优化来加快开发构建速度。您使用的是 proguard 吗?如果是这样,请在开发/暂存版本中禁用它,并且仅将其用于发布版本。

如果您已经在这样做了 - 除了提高机器规格之外,我不确定该提出什么建议。

评论

0赞 A1m 2/8/2019
我有一台超高端的机器,基本上钱能买到多少。我们正在使用 proguard,但正如建议的那样,仅用于发布版本。