Android加快編譯速度的另一種方法

zhangshua發表於2018-10-15

Android程式設計師冬季取暖最佳方法:執行 gradle build。

#1. 現狀 想必每個做Android的都有一個痛:編譯時間太長,編譯時電腦呼呼作響,期間電腦卡的動不了...為此,業界出了很多解決辦法,大致可以分為以下幾類:

  1. 修改配置 通過修改Android studio和Gradle配置,加快構建。具體配置方法可參考官方的建議優化您的構建速度,效果還是挺明顯的。

  2. 優化程式碼 編譯時間長,一方面也是因為專案規模較大。通過移除無用程式碼,模組化,引用aar等手段,也可以有效降低編譯速度。

  3. 增量編譯 增量編譯的解決方案目前有很多:Instant-Run、Freeline、buck、LayoutCast等,但基本上都有一些問題,對於資源改動、databinding、kotlin等支援都不是很完美。經常有一些莫名其妙的奇怪問題。

  4. 提升硬體配置 這個是最有效且最簡單的方法。 如果你是土豪,請隨意加記憶體、加固態硬碟,然後本文就到此結束。 else 看看下面的解決方案。

2. 提升硬體的另一種方法

雖然公司不可能給每個人都配一個頂級電腦,但一般公司都會有一臺效能強勁的伺服器。我們的專案自己電腦編譯需要10分鐘,而伺服器編譯就只需要1分半。這麼大的優勢,自然而然我們想到的解決方案就是:使用伺服器編譯。該方案具有如下好處:

  • 編譯速度快
  • 費用較提升每個人的配置便宜
  • 不影響本地電腦效能。因為編譯過程放在伺服器,本地電腦一點也不卡,可以繼續查資料寫程式碼...

但使用伺服器編譯比在本地編譯步驟要複雜一些:需要將程式碼上傳到伺服器,登入伺服器編譯,編完將apk下載下來。這麼一連串操作,手動操作的複雜和麻煩遠遠超過了伺服器節省的時間。

為此,編寫了一套可以自動化執行伺服器編譯的指令碼gradles,該指令碼使用和gradlew使用方法完全一致,對使用者來說是無感的,但卻將編譯過程放到伺服器上來執行了。

另外,使用該方法會有額外的上傳程式碼和下載程式碼的消耗,使用前請確保 額外的時間+伺服器編譯時間<本地編譯時間

3. 使用方法

  1. 安裝 執行下面的命令:
$ git clone git@github.com:Zhangshua/gradles.git  
$ cd gradles
$ echo "export PATH=$(pwd)/:\$PATH" >>~/.bash_profile
$ source ~/.bash_profile
複製程式碼
  1. 初始化 進入Android 專案的根目錄,執行
$ gradles 
按照如下提示輸入相關資訊:
please input your name: zhangsan (輸入一個唯一的名字,用於和公司其他同事區分開)
please input git repositories to sync code: git@XXX (git倉庫地址,用於同步開發臨時程式碼。可以使用專案的git倉庫,但會造成大量臨時的提交,所以建議專門建立一個用於伺服器編譯的git倉庫)
please input server's 'user@host' : root@192.168.1.1 (伺服器地址)
please input server's password: 123456 (伺服器密碼)
please input server's path to build: /home/ (伺服器上放置編譯程式碼的路徑)
複製程式碼
  1. 使用 至此,可以像使用gradlew一樣來使用gradles了,比如
$ gradles assembleDebug --offline
$ gradles clean
複製程式碼

編譯完的apk放於當前工程根目錄的build/outputs/apk/

4. 總結

採用這種方法後,我們編譯的時間大幅縮短,並且編譯過程中電腦一點都不卡了。 當然,前面提到的1、2點,還是有必要繼續優化,不然再好的硬體的也撐不住..

相關文章