随着项目的不断迭代,项目越来越大,编译时间也是越来越多,特别是多module的项目更是严重,每次编译项目的时候都是痛苦的等待,那么我们怎么去发现项目里面编译时间花费的地方呢?
查看Task编译时间
通过命令窗口,输入gradlew build –profile 命令,如图
android studio就会进行编译,经过漫长的等待。并在项目的根目录–build–report底下生成一个文件(4),如图:
然后在浏览器打开该文件
我们可以看到task 总共花了10分钟。。。。。
定位耗时Task
具体的时间花费可以进入Task Execution查看,我们可以发现主要是lint这个task花费了很多时间,这里就只对这个task 进行分析。
我们知道lint 是用来代码检查的,为了项目的代码更加的符合规范。这个是android studio 内置的task ,一般情况下是不建议把这个关闭的,这里只是为了引出关闭耗时的task,作为分析的。或者你可以刚开始开发的时候关闭,后面再开启检测,专门进行整理,按照自己的习惯安排。
那么我们怎么去关闭这个任务呢?
如何关闭不必要的Task
- 更改配置
一个最简单的方法,自定义一个inspections,如图,将所有lint(我这里为了简单全部去掉,读者可以根据需要勾选)
如果你不想修改配置,还是想关闭lint,那怎么做呢?还是有办法的!
通过命令执行
比如 ./gradlew build -x lint (linux系统执行命令要加./ windows则不需要,其中的 -x就是不执行的意思,build就是具体的命令)
如果需要跳过多个命令的话./gradlew build -x checkstyle -x pmd -x findbugs -x lint -x test代码里面执行
如果想所有情况都生效,可以写在gradle文件里面。
tasks.whenTaskAdded{ task->
if(task.name.equals(“lint”)) {
task.enabled=false
}
}
这段代码放到gradle文件的最顶端(在apply的前面执行)
查看效果
最后再一次执行 gradlew build –profile 查看相应的分析文件,花费的时间变成了以前的五分之一(公司的项目比较大,所以编译时间比较多)