###爲你的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上。 性能
不過請注意,這種方式只能用在使用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/