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部分:
可以看到還是有明顯提升!