我已经经历了许多步骤来完善我们的构建系统(those等)。后来,我读了这个official blogpost,声称Gradle 3.4中的增量构建将构建时间缩短了5-10倍。确实,我们的增量构建无法正常工作,因为我们使用了注解处理器。由于Gradle 4.7注解,处理器可以opt-in与增量构建兼容。我经历了许多依赖更新,以使用annotationProcessors that support it激活增量构建。
通过各种配置和改进,我能够将构建时间(预构建)从大约30秒减少到大约19秒。基于incremental build blogpost,我以为我可以将构建时间进一步减少到〜5s。
不幸的是,随着增量构建,它仅下降到约15秒。我尝试使用--profile
和--info
进一步诊断问题。仅吸引了gradle任务compileDevDebugJavaWithJavac
,它表明编译步骤从〜16s变为〜12s。
在12.5类时间内完成476个类的增量编译。
在我看来,这对于单行更改来说太慢了,并且它几乎不能反映Gradle对于增量构建的要求。我专门尝试更改具有很少依赖性的文件,而且我知道公共常量会触发完全重建。还有什么会导致仅单个文件的增量构建速度如此之慢?
我还尝试启用实验功能
android.enableSeparateAnnotationProcessing=true
可以正常工作,并将我的构建分为两个编译步骤
compileDevDebugJavaWithJavac 6.777s
processDevDebugAnnotationsWithJavac 6.104s
我希望能与
一起org.gradle.parallel=true
这两个任务可能并行运行,并且构建时间将近一半。但是显然并行处理在这里行不通吗?
还能做些什么来增加非常小的更改的构建时间?
编辑:我发现主要的问题是我们有太多的类依赖关系,并且总是触发476个类的编译(请参阅this问题)。由于我不希望在我们的旧版代码中解决足够的类依赖关系:我的问题仍然存在。是否可以enableSeparateAnnotationProcessing
并行化项目,或者是否有任何其他配置?
答案 0 :(得分:1)
也许不必担心增量方面的问题,而可以进行优化以加快开发速度。您在使用proguard吗?如果是这样,请在您的开发/暂存版本中禁用它,而仅将其用于发行版本。
如果您已经在做-不知道建议什么以提高机器规格。