一、第一個最有效的辦法
檢查你使用的Gradle外掛版本,是不是最新的。如果不是最新的,請升級到Gradle外掛的最新版本。
Gradle在升級過程中一直對構建速度做了優化,升級到Gradle最新版本後,能將構建速度提升80%,這是最有效的辦法。
二、Gradle的一些配置項
1、Gradle Daemon
開啟Gradle的守護程式來構建專案:
org.gradle.daemon=true
2、Parallel Project Execution
如果你要構建一個多Module並且依賴關係比較複雜的專案,那麼你可以使用並行專案執行:
org.gradle.parallel=true
3、Global gradle.properties
在Gradle主目錄中配置的屬性優先順序高於在專案中配置的屬性。當你並不想一個個專案的去改動配置時,可以定義一份常用的Gradle配置檔案放在Gradle的主目錄下,它的路徑如下:
/Users/使用者名稱/.gradle/gradle.properties
#Enable daemon
org.gradle.daemon=true
# Try and findout the best heap size for your project build.
org.gradle.jvmargs=-Xmx5120m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
# Modularise your project and enable parallel build
org.gradle.parallel=true
# Enable configure on demand.
org.gradle.configureondemand=true
複製程式碼
三、去掉耗時任務
在專案的Terminal下執行如下命令:
gradle build -profile
複製程式碼
可以獲取構建報告,它是以HTML的形式展示的。
基於上述的優化,我們看一下當前的構建報告:
第一次執行
由於第一次沒有構建快取,因此第一次比較慢,用時5分11秒。
注意:如果Gradle檢測到配置檔案有修改,如gralde.properties、build.gradle檔案等,則會重新發起構建,時間也會比較長。
第二次執行
相比較第一次,已經有了很大的進步了,用時1分26秒左右。我們再來看一下這一分26秒是用在哪裡了:
在Task Execution(任務執行)中,可以看到每一個專案中耗時最長的竟然是lint任務。lint任務就是靜態程式碼檢測,不管你有沒有用到lint,預設都會執行這個任務。
由於我們專案中並沒有用到lint,所以我們將lint任務去掉,也就是在執行build命令時加上-x lint這個引數,即
gradle build -x lint
複製程式碼
第三次執行
可以看到將lint任務去掉後,構建時間只用了26秒,這個時間還是可以接受的。
經過上面的優化後,Gradle構建速度從以往平均4分鐘,減少到了26秒,優化率達到了89%。
Tips:使用Android Studio工作列直接點選執行按鈕是不能去掉lint任務的,所以為了方便構建後安裝應用,可以使用 gradle installDebug -x lint 命令。
四、結論
Gradle的外掛版本對Gradle的構建速度相差很大,由於Gradle版本升級一直致力於提升構建速度,所以強烈推薦升級Gradle版本,以獲取最大限度的構建速度,再經過Gradle的一些配置和減少耗時任務,完全可以在40秒之內構建好一個專案。