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/freelineInstallRun功能类似更好用。参考地址 https://github.com/alibaba/freeline


设置完毕之后重新编译:

编译总耗时:




Task部分:



可以看到还是有明显提升!



以上是关于Android编译时间优化的主要内容,如果未能解决你的问题,请参考以下文章

Android三个流量优化方案 (建议收藏)

作为Android开发,这个知识点一定要知道,官方也改了 2 次~

Android编译时间优化

Android编译时间优化

Android编译优化系列-kapt篇

Android 编译优化探索3