前言
最近项目打包50个左右,居然要50分钟,这简直是太慢了,所以抽个空优化一下吧。顺便把结果分享给大家。先说结果,开始打包时间将近50分钟。优化后需要24分钟。
过程
要想优化,我们必须先知道优化哪里。有一个命令可以帮助我们
gradlew --profile
或者
gradle --profile
这两个的区别我就不解释了,不清楚的话自己google。
执行完这个命令之后,我们去'\build\reports\profile'路径,找到我们的profile-2017-xx-xx-xx-xx-xx.html文件。
二话不说先上图,图一图二是优化前的耗时,图三图四是优化后的耗时。
<img src="http://martinhan.site/images/2017-09-07_143730.png" width="450" height="230"><img src="http://martinhan.site/images/gradle_last.png" width="450" height="230">
下面就把我优化的过程分享下吧。
耗时的任务
我们看上图Summary,Configuration,Dependency Resolution,Task Execition,
我们看Task Excition,这里面有我们在编译期间每一次进行的耗时。
笔者在此就不发自己的了,因为还要打码。
No.1
首先在你项目的根目录调整你的gradle.properties文件
我在文件内加入了如下两行
org.gradle.jvmargs=-Xms2048m -Xmx4096m
这两行其实就是设置你的jvm虚拟机内存,因人而异,看你机器配置。
No.2
同样是gradle.properties文件内,加入如下两行
# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
org.gradle.parallel=true
# Enables new incubating mode that makes Gradle selective when configuring projects.
# Only relevant projects are configured which results in faster builds for large multi-projects.
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:configuration_on_demand
org.gradle.configureondemand=true
这两句官方给出的解释已经很详细,大概意思就是第一句是只能与解耦项目一起使用。
第二句是配置这句,会为大型项目加快build
No.3
找到你的项目下的build.gradle,加入如下语句
android {
aaptOptions {
cruncherEnabled false
}
}
不检查png的合法性,这个大家可以根据自己的项目来判断是否开启。
结尾
我目前就改了这几处,可以将gradle提速一倍,希望能帮助到大家
网友评论