您的位置:首页 > 移动开发 > Android开发

Android Sutido 编译速度优化

2016-07-06 15:29 459 查看


Android Sutido 编译速度优化

虽然Android Studio 此时已经更新到了Android
Studio 2.1版本,build 版本android-studio-bundle-143.2739321。但是在安装该版本都是根据自己的标准进行安装,所以需要在安装之后进行一系列的调整。下面文章根据3个方面进行讲解。分别为Android Studio本身、Gradle、不调整出现的编译上的问题。


Android Studio优化

编译优化需要有两个步骤,以下一一介绍。


步骤一:Gradle编译优化

在项目的根目录中进行修改。修改gradle.properties,


gradle.properties 该文件的位置(H/gradle.properties)

Project-wide Gradle settings. 

IDE (e.g. Android Studio) users: 

Gradle settings configured through the IDE will override 

any settings specified in this file.
For more details on how to configure your build environment visit 
http://www.gradle.org/docs/current/userguide/build_environment.html
Specifies the JVM arguments used for the daemon process. 

The setting is particularly useful for tweaking memory settings. 

Default value: -Xmx10248m -XX:MaxPermSize=256m 

org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
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

根据该文件的描述,我的设置为:

org.gradle.jvmargs=-Xmx3062m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 

org.gradle.parallel=true 

org.gradle.daemon=true

名词解释 

这里可以参考: 
http://www.cnblogs.com/mingforyou/archive/2012/03/03/2378143.html 

- org.gradle.jvmargs :JVM 内存管理,存在于堆上。在这里可以理解为Gradle的内存管理 

- -Xms : 初始分配的内存由-Xms指定,堆内存。 

- -Xmx : 最大分配的内存由-Xmx指定,堆内存。 

- -XX:PermSiz:JVM使用-XX:PermSize设置非堆内存初始值 

- -XX:MaxPermSize设置最大非堆内存的大小 

- org.gradle.daemon=true 

- org.gradle.parallel=true


步骤二:Android Studio 优化

找到Android Studio安装目录。 

我的安装目录在F:\Android\AndroidStudio\Soft\bin 

在这个文件 gradle.properties
-server 

-Xms512m 

-Xmx2048m 

-XX:MaxPermSize=350m 

-XX:ReservedCodeCacheSize=240m 

-XX:+UseConcMarkSweepGC 

-XX:SoftRefLRUPolicyMSPerMB=50 

-da 

-Djna.nosys=true 

-Djna.boot.library.path=
-Djna.debug_load=true 

-Djna.debug_load.jna=true 

-Dsun.io.useCanonCaches=false 

-Djava.net.preferIPv4Stack=true 

-XX:+HeapDumpOnOutOfMemoryError 

-Didea.paths.selector=AndroidStudio2.1 

-Didea.platform.prefix=AndroidStudio
从这个文件中,可以根据上面上面的名词解释中进行理解性修改。上面是我自己的设置。

优化前 - 存在的问题


transformClassesWithDexForDebug

Error:Execution failed for task ‘:app:transformClassesWithDexForDebug’. 

com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process ‘command ‘C:\Program
Files\Java\jdk1.8.0_77\bin\java.exe” finished with non-zero exit value 3
Error:UNEXPECTED TOP-LEVEL ERROR:
Error:java.lang.OutOfMemoryError: GC overhead limit exceeded
For faster builds, increase the maximum heap size for the Gradle daemon to more than 2048 MB. 

To do this set org.gradle.jvmargs=-Xmx2048M in the project gradle.properties. 

For more information see https://docs.gradle.org/current/userguide/build_environment.html


原因

在使用Gradle编译的时候,编译内存不足导致。


解决方法

在项目的根目录中进行修改。修改gradle.properties, 

set org.gradle.jvmargs=-Xmx2048M。 

修改后该问题得已解决。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: