Android编译时间优化
Posted 祥云湾
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android编译时间优化相关的知识,希望对你有一定的参考价值。
编译Task提速
Gradle的编译速度与项目设置相关,要优化Gradle的编译速度首页要知道编译的性能。
Gradle 编译工具本身内置了很多性能分析工具:比如:profile
通过在终端执行gradle build –profile 打开该功能。
在mobile_android 项目中执行该命令,执行完毕,在项目根目录下的build文件中
查看此报告:
这是完整编译的耗时:一般我们关心的是task的耗时,task是开发者可以优化的脚本。
点击task Execution:
发现编译时的主要耗时在1、java编译成字节码,2、lint检查3、aapt资源文件编译上
Lint耗时比较严重,而这个task在一般debug时用不上。暂时降其禁用掉。
网上有很多禁用的方法,但是真正能够禁用的方法有两个:
1、 通过Gradle的编译参数执行-x,执行以下命令:
-x,--exclude-task
Gradle build –x lint
其中-x 参数表示排除掉一个Task,通过这种方式可以禁止lint的执行。
2、 另一种方式是在Gradle脚本中动态增加编译参数,脚本如下:
project.gradle.startParameter.excludedTaskNames.add(‘lint’);
两种方式的效果是一样的。
除了lint检查,aapt检查也是一个耗时大户。在Debug版本中,可以使用下面的代码提高aapt 的速度。
aaptOptions
cruncherEnabled=false
极大的提高了aapt的速度(仅限Debug环境)。
Gradle编译提速
Gradle编译提速也是加快编译速度的有效方法。
同时尽量减少本地库项目的依赖,多少用arr进行依赖。
在gradle.properties文件中添加
org.gradle.daemon=true
org.gradle.configureondemand=true
org.gradle.parallel=true
表示开启多线程和多核支持。
同时在build.Gradle中增加如下所示代码:
dexOptions
incremental true
javaMaxHeapSize "4g"
表示开启增量编译。Incremental true在最新的AS中默认已经开启,在旧的版本中默认是关闭的。
在文件目录Android\\Android Studio\\bin中找到:
studio.exe.vmoptions和studio64.exe.vmoptions文件
Xms:初始heap内存。Xmx:最大heap内存。分别调成512m和2048m
也可以在gradle中配置:
org.gradle.jvmargs=-Xmx2048m -XX\\:MaxPermSize\\=512m -XX\\:+HeapDumpOnOutOfMemoryError -Dfile.encoding\\=UTF-8
这样可以跟随项目设置环境参数
InstallRun 使用:最新版本的installRun已经基本可以使用了,相对于前期版本修复了很多bug。InstallRun原理可以查看:寒江不钓的博客
alibaba/freeline与InstallRun功能类似更好用。参考地址 https://github.com/alibaba/freeline
设置完毕之后重新编译:
编译总耗时:
Task部分:
可以看到还是有明显提升!
以上是关于Android编译时间优化的主要内容,如果未能解决你的问题,请参考以下文章