简单提升编译速度的一个方法
隨著項目越來越大,編譯速度越來越是一個問題。在編譯我們的 Android App 的時候,印象里最快的時候也得一分半,當然這還是在關閉 Chrome 的時候。當你改幾行代碼時,仍然要花上幾分鐘來編譯,這是很操蛋的一件事。Google 官方推出的? Instant Run ?看上去很美好,但也是很操蛋的,廣大人民群眾紛紛表示,為什么我改了代碼以后,編譯不生效啊摔(
增加電腦內存是提升編譯速度的一種方法,Gradle 官方推薦的編譯內存為 5120MB :
當然大多數開發者的電腦可能沒有這么高的內存(包括我),尤其是電腦同時運行著 AS 和 Chrome 的情況下。 不過值得慶幸的是,Google 官方在介紹 MultiDex 的文檔中提到,通過限定 minSdkVersion 為 21 可以提升編譯速度,原因在于省略了 MultiDex 向后兼容的過程,而這通常是編譯最耗時的部分。在項目的 build.gradle 中按照如下配置:
android {productFlavors {dev {// 開發中使用的最低支持版本minSdkVersion 21}prod {// 項目實際的最低支持版本minSdkVersion 14}} }dependencies {// 提升編譯速度必要的依賴(我們設置為僅在 dev 時生效)devCompile 'com.android.support:multidex:1.0.1' }上述配置完成之后,按照 Google 的說法,我們在編譯 dev 版本時,就是增量編譯。
下圖為 clean 后第一次編譯時所花費的時間:
將幾行代碼注釋以后,再次編譯的時間:
可以看到,盡管第一次編譯的時間較長,但從第二次編譯開始,時間縮短不少。相對于以前改幾行代碼都要等上幾分鐘的編譯的時間,已經是很大的提升了。
需要注意的是,在修改 build.gradle 后,我們需要手動將 AS 的 Build Variants 設置為 prod 版本,如果是 dev 的話,AS 不會顯示 API 21 的限制提示;使用命令行編譯 dev 版本,而不是使用 AS 的 Run ,否則編譯出來的還會是 prod 版本,時間并不會減少。當然對于非 MultiDex 的用戶,這個方法是否生效,還沒有測試過。另外此方法似乎只對 Android 6.0 及其以上版本的系統才生效,5.X 會拋出 ClassNotFoundException.
作者:李明亮
鏈接:https://zhuanlan.zhihu.com/p/21519798
來源:知乎
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。
總結
以上是生活随笔為你收集整理的简单提升编译速度的一个方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 为什么稀疏自编码器很少见到多层的?
- 下一篇: 作为怀孕的亲历者,你觉得最值得分享的经验