1. 程式人生 > >Android編譯時間優化

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原理可以檢視:寒江不釣的部落格



設定完畢之後重新編譯:

編譯總耗時:



Task部分:


可以看到還是有明顯提升!