ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Android Studio缓慢增量构建

2019-07-05 12:25:34  阅读:335  来源: 互联网

标签:android gradle android-gradle android-studio-3-0 incremental-build


我已经完成了许多步骤来改进我们的构建系统(those及更多).后来,我读到了这篇official blogpost,声称在Gradle 3.4中使用增量构建,构建时间提高了5-10倍.实际上,我们的增量构建不起作用,因为我们使用了注释处理器.由于Gradle 4.7 annotationProcessors可以使opt-in与增量构建兼容.我已经通过许多依赖项更新来激活annotationProcessors that support it的增量构建.

通过各种配置和改进,我能够将构建时间(预构建)从大约30秒减少到大约19秒.基于incremental build blogpost,我假设我可以将构建时间进一步缩短到~5s.

不幸的是,随着增量构建,它只下降到〜15s.使用–profile和–info我试图进一步诊断问题.只有exderract gradle任务compileDevDebugJavaWithJavac才显示编译步骤从~16s到~12s.

Incremental compilation of 476 classes completed in 12.51 secs.

在我看来,这对于单行更改来说太慢了,并且它几乎没有反映Gradle对增量构建的要求.我特意尝试更改具有少量依赖项的文件,我知道公共常量会触发完全重建.还有什么可以导致只有一个文件的增量构建变得那么慢?

我还尝试启用实验功能

android.enableSeparateAnnotationProcessing=true

哪个工作并将我的构建分成两个编译步骤

compileDevDebugJavaWithJavac 6.777s

processDevDebugAnnotationsWithJavac 6.104s

我希望与之相伴

org.gradle.parallel=true

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

还有什么办法可以增加非常小的变化的构建时间?

编辑:我发现主要的问题是我们有太多的类依赖,它总是触发476个类的编译(参见this问题).因为我不期望在我们的遗留代码中解决足够的类依赖性:我的问题仍然存在.项目是否可以启用SeparateAnnotationProcessing并行化或是否有任何其他配置?

解决方法:

您可以通过优化来加速开发构建,而不是担心增量方面.你在用proguard吗?如果是这样,请为开发/暂存构建禁用它,并仅将其用于发布版本.

如果你已经这样做了 – 我不确定在没有提出机器规格的情况下提出什么建议.

标签:android,gradle,android-gradle,android-studio-3-0,incremental-build
来源: https://codeday.me/bug/20190705/1387159.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有