爲你的Android項目加速Gradle構建

###爲你的Android項目加速Gradle構建html

有沒有感受你成天什麼都沒幹只是在電腦面前等待編譯結果?只是我是這樣。java

幸運的是,有許多中方法去提高編譯速度。其中某些還只是實驗性功能而且不是很穩定,但鑑於編譯時間太長的痛苦,仍是很值得一試。再使用下面的方式以後,項目有些小改動的編譯速度已經降低到2.5秒!但願對你也能有一樣的效果。android

Android使用Gradle編譯,默認的版本是2.2。而最新的Gradle版本已經到了2.4,在性能方面有了具體的提高。app

有兩種方法能夠在Android項目中使用2.4版本。一種是修改你的build腳本,另外一種是在Android Studio中配置。jvm

編輯你的build腳本,在根build.gradle最後添加ide

task wrapper(type: Wrapper) {
	gradleVersion = '2.4'
}

而後打開terminal運行*./gradlew*命令,gradlew會自動下載併爲本地Gradle Wrapper配置2.4版本的Gradle。這種方法是官方教程模塊化

在AS裏面配置,打開Project Structure選項,選擇左邊的project,而後在右邊把Gradle版本改成2.4,點擊完成。AS會自動同步Gradle設置而且引用到wrapper上。 AS配置性能

不過請注意,這種方式只能用在使用Gradle wrapper方式的工程。AS自動幫你生成的就是這樣方式。若是不是這種狀況,請去Gradle網站查找官方文檔。測試

下一步要作的就是開啓Gradle Daemon和並行構建。使用daemon可以提高構建啓動速度,由於它不須要每次都啓動整個Gradle應用。並行構建可以讓你工程中多個module同時編譯,這有利於大的模塊化的工程構建速度。gradle

在home目錄中.gradle文件夾下添加一個名爲gradle.properties文件就能開啓這些設置。

org.gradle.daemon=true
org.gradle.parallel=true

其實Android Studio已經自動開啓了daemon,可是經過這樣設置,在命令行下編譯也能享受到一樣的好處。

你還能夠把這個文件添加到你工程的目錄下,就能讓別人在編譯這個app時候獲得一樣的好處,甚至是在你的持續集成環境中。不過有時候你也不該該老是啓用daemon,請看這裏

**並行構建請注意:**並行構建可能會在某些工程上表現的不穩定,它須要你項目中全部module必須是解耦的,不然頗有可能你編譯失敗。請仔細測試你構建以保證他們可以正常工做。

你還能夠爲Gradle添加額外的參數,好比爲你的大工程增長堆大小上限,指定JVM路徑:

org.gradle.jvmargs=-Xmx768m
org.gradle.java.home=/path/to/jvm

gradle.properties中你還能夠作不少其餘的事情,詳情請看這裏。其中有些是對Android Studio能夠的而且已經默認使用了,把它們放到gradle.properties文件可使在命令行編譯也能有一樣的好處,或者讓你同事也能使用相同的設置。

最後要作的就是加強dex步驟,這只是一個實驗性功能,如今是默認沒有開啓的。開啓這個功能可能會致使你編譯失敗(尤爲是在連續運行的時候),可是我仍是強烈建議你嘗試一下,看看它對你有沒有用。

在你主app module下build.gradle文件中android部分加上下面的代碼開啓它:

dexOptions {
    incremental true
}

但願這些可以幫助到你。若是你有任何問題或者其餘關於提高編譯性能的建議,歡迎留下評論一塊兒探討。

####參考資料 https://medium.com/@erikhellman/boosting-the-performance-for-gradle-in-your-android-projects-6d5f9e4580b6 http://gradle.org/

相關文章
相關標籤/搜索