Android编译时间优化

来源:互联网 发布:定义变量java 编辑:程序博客网 时间:2024/06/03 04:12

编译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=trueorg.gradle.configureondemand=trueorg.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部分:



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



原创粉丝点击