優化android studio編譯效率的方法

jopen 9年前發布 | 330K 次閱讀 Android Studio開發工具 Android Studio

原文  http://www.devtf.cn/?p=585

引言

如果你之前用eclipse開發過Android app的化,轉到android studio的第一反應也許就是:”編譯速度有點慢”. 表現的最明顯的一點就是,當我使用eclipse開發的時候,選中了auto building.這個時候

我更改了幾個字符,eclipse會速度非常快的編譯出一個新的apk. 而android studio使用gradle編譯,每次編譯,即便是更改的代碼量很少,也會按照預先設置的task的順序,依次走完編譯的各項流程.所以

這點就讓人很痛苦. 然而問題總還是要被解決的,作者曾經親眼看到過使用android studio僅僅用了2.5秒就編譯完畢(在代碼更改很少的情況下). 現在把如何優化gradle編譯速度的方法記錄在此,希望可以

幫助到廣大的同行們.

準備工作

gradle現在最新的版本是2.4, 相比較之前的版本, 在編譯效率上面有了一個非常大的提高,為了確保你的android項目使用的是最新版的gradle版本,有兩種方法可以使用,下面依次進行介紹

1、在build.gradle中進行設置

在你的項目gradle文件內(不是app里面的gradle文件), 添加一個task, 代碼如下:

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

然后打開terminal, 輸入./gradlew wrapper, 然后gradle就會自動去下載2.4版本,這也是官方推薦的手動設置gradle的方法(http://gradle.org/docs /current/userguide/gradle_wrapper.html)

2、使用android studio對gradle版本進行設置

這種方法需要你去手動去gradle官網下載一個zip包,解壓縮后,打開android studio 設置界面的Project Structure. 然后手動添加你解壓縮后的gradle的磁盤路徑即可,可以參考如下的圖片

優化android studio編譯效率的方法

有一點需要注意的是,這種設置方法僅適用于在你的項目中使用gradle wrapper進行編譯打包的操作(就是android studio默認需要的東東).如果你想使用gradle做其他的事情,請出門左轉,去gradle官網(http://gradle.org)

守護進程,并行編譯

通過以上步驟,我們設置好了android studio使用最新的gradle版本,下一步就是正式開啟優化之路了. 我們需要將gradle作為守護進程一直在后臺運行,這樣當我們需要編譯的時候,gradle就會立即跑過來然后吭哧吭哧的開始干活.除了設置 gradle一直開啟之外,當你的工作空間存在多個project的時候,還需要設置gradle對這些projects并行編譯,而不是單線的依次進行 編譯操作.

說了那么多, 那么怎么設置守護進程和并行編譯呢?其實非常簡單,gradle本身已經有了相關的配置選項,在你電腦的GRADLE_HOME這個環境變量所指的那個文件夾內,有一個.gradle/gradle.properties文件.

在這個文件里,放入下面兩句話就OK了:

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

有一個地方需要注意的是,android studio 本身在編譯的時候,已經是使用守護進程中的gradle了,那么這里加上了org.gradle.daemon=true就是保證了你在使用命令行編譯apk的時候也是使用的守護進程.

你也可以將上述的配置文件放到你project中的根目錄下,以絕對確保在任何情況下,這個project都會使用守護進程進行編譯.不過有些特 殊的情況下也許你應該注意守護進程的使用,具體的細節參考http://gradle.org/docs/current/userguide /gradle_daemon.html#when_should_i_not_use_the_gradle_daemon

在使用并行編譯的時候必須要注意的就是,你的各個project之間不要有依賴關系,否則的話,很可能因為你的Project A 依賴Project B, 而Project B還沒有編譯出來的時候,gradle就開始編譯Project A 了.最終導致編譯失敗.具體可以參考http://gradle.org/docs/current/userguide /multi_project_builds.html#sec:decoupled_projects。

還有一些額外的gradle設置也許會引起你的興趣,例如你想增加堆內存的空間,或者指定使用哪個jvm虛擬機等等(代碼如下)

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

如果你想詳細的了解gradle的配置,請猛戳http://gradle.org/docs/current/userguide/userguide_single.html#sec:gradle_configuration_properties

一個實驗性的功能

最后一個要介紹的是incremental dexing, 這個功能目前還在試驗階段,android studio默認是關閉的, 作者個人是非常推薦的,程序員就是愛折騰啊.

開啟incremental dexing也是非常簡單的,就是在app級別的buid.gradle文件中加入下面的代碼:

dexOptions {
        incremental true }
 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!