提问人:A1m 提问时间:2/8/2019 最后编辑:CommunityA1m 更新时间:2/9/2019 访问量:857
Android Studio 缓慢增量构建
Android Studio slow incremental build
问:
我经历了许多步骤来完善我们的构建系统(这些以及更多)。后来,我读了这篇官方博文,声称在 Gradle 3.4 中通过增量构建将构建时间缩短了 5-10 倍。事实上,我们的增量构建不起作用,因为我们使用了 annotationProcessors。从 Gradle 4.7 开始,注解处理器可以选择与增量构建兼容。我经历了许多依赖项更新,以使用支持它的 annotationProcessors 激活增量构建。
通过各种配置和改进,我能够将构建时间(预构建)从 ~30 秒缩短到 ~19 秒。根据增量构建博客文章,我假设我可以进一步将构建时间减少到 ~5 秒。
不幸的是,通过增量构建,它只下降到 ~15 秒。使用,我试图进一步诊断问题。仅减去 gradle 任务,它显示编译步骤从 ~16 秒增加到 ~12 秒。--profile
--info
compileDevDebugJavaWithJavac
在 12.51 秒内完成 476 个类的增量编译。
在我看来,这对于单行更改来说太慢了,而且它几乎不能反映 Gradle 对增量构建的要求。我特别尝试更改具有很少依赖项的文件,并且我知道公共常量会触发完全重建。还有什么原因会导致仅针对单个文件的增量构建速度如此之慢?
我还尝试启用实验功能
android.enableSeparateAnnotationProcessing=true
它确实有效并将我的构建分为两个编译步骤
compileDevDebugJavaWithJavac 6.777秒
进程DevDebugAnnotationsWithJavac 6.104s
我希望结合
org.gradle.parallel=true
这两个任务可能会并行运行,并且几乎是构建时间的一半。但显然并行处理在这里不起作用,或者是吗?
还可以做些什么来增加非常小的更改的构建时间?
编辑:我发现主要问题是我们有太多的类依赖,它总是触发 476 个类的编译(见这个问题)。由于我不希望在我们的遗留代码中解决足够的类依赖关系:我的问题仍然存在。项目是否可以并行化,或者是否有任何其他配置?enableSeparateAnnotationProcessing
答:
与其担心增量方面,不如进行一些优化来加快开发构建速度。您使用的是 proguard 吗?如果是这样,请在开发/暂存版本中禁用它,并且仅将其用于发布版本。
如果您已经在这样做了 - 除了提高机器规格之外,我不确定该提出什么建议。
评论
Offline mode