工欲善其事,必先利其器。如果每次运行项目都要花费5-10分钟,那人的心态都要崩了。
Gradle构建流程
Gradle 的生命周期可以分为大的三个部分:初始化阶段(Initialization Phase),配置阶段(Configuration Phase),执行阶段(Execution Phase)。
优化方案
从整体构建流程可以得知,我们整体上需要从三个方面进行优化:
初始化速度优化
配置速度优化
执行速度优化
其中执行的过程占比是最大的,所以重心放在执行速度优化上。
1.初始化速度优化
当组件化程度较高时,在开发某个特定功能过程中有些组件是不需要引入的,此时可以在setting.gradle中移除不需要引入的组件模块,可以减少初始化时间
2.配置速度优化
配置阶段主要是对各个build.gradle进行解析,因此可以注意以下几点:
按需引入模块,减少build.gradle的解析
build.gradle中尽量少做耗时操作,例如读取系统时间动态配置apk的名称组成
在开发阶段不是必要执行的任务,可以写判断避免这些任务的配置,例如一些字节码插桩,性能监控之类的。
开启Configuration Cache
在任务执行阶段,Gradle提供了多种方式实现Task的缓存与重用(如up-to-date检测,增量编译,build-cache等)。
除了任务执行阶段,任务配置阶段有时也比较耗时,目前AGP也支持了配置阶段缓存Configuration Cache,它可以缓存配置阶段的结果,当脚本没有发生改变时可以重用之前的结果。
在越大的项目中配置阶段缓存的收益越大,module比较多的项目可能每次执行都要先配置20到30秒,尤其是增量编译时,配置的耗时可能都跟执行的耗时差不多了,而这正是configuration-cache的用武之地。
目前Configuration-cache还是实验特性,如果你想要开启的话可以在gradle.properties中添加以下代码:
# configuration cache
org.gradle.unsafe.configuration-cache=true
org.gradle.unsafe.configuration-cache-problems<