提高 Android Studio 中 Gradle 執行效率
你是否感覺到Android Studio構建速度太慢?我也有這感覺。
幸運的是,這有很多可以提高構建速度的技巧。這些技巧目前還在實驗并且有可能是不安全的,如果你覺得構建時間太長而且很痛苦的話,嘗試一下這些技巧還是很有價值的。我已經按照下面所描述的試過在代碼改動很少的情況下構建時間下降了2.5秒。希望對你有幫助。
Android Studio使用Gradle來構建工程。目前Gradle的版本為2.2。最近的版本為2.4,性能比之前的版本有很大的提升。
這有兩種方式,一種是手動編輯構建文件,另一種是通過Android Studio改變配置。
對于手動編輯構建文件,在工程的根目錄下的build.grade文件末尾添加以下代碼:
task wrapper(type: Wrapper) { gradleVersion = '2.4' }
打開終端并運行命令:./gradlew wrapper,它將會下載并設置版本2.4的Gradle對于你本地的Gradle wrapper.這是Gradle官方文檔中所描述的方法(http://gradle.org/docs/current/userguide/gradle_wrapper.html)。
對于通過Android Studio配置,打開工程結構對話框,選擇工程-〉將Gradle版本改為2.4.當你點擊確定,Android Studio將自動同步Gradle的配置,并設置wrapper的新版本。
筆記:這個僅僅是當你的工程用的是Gradle wrapper(默認是用Android Studio 生成的工程)。如果不是這種情況,請參考Gradle文檔 http://gradle.org.
第二步就是打開工程的構建文件中的 daemon and parallel開關。使用daemon(守護進程)將會使構建啟動很快,并且它不會在應用程序每次啟動的時候進行完整的構建。使用Parallel將會 同時構建多個模塊,在工程很大或模塊很多的工程使構建速度很快。
在.gradle文件夾下添加一個文件名為gradle.properties的文件,添加如下代碼(如:~/.gradle/gradle.properties)
org.gradle.daemon=true org.gradle.parallel=true
筆記:Android Studio 已經打開daemon的開關,當從終端進行構建時這個配置將確保daemon的打開。
你也可以在你的工程的根目錄下添加這個文件,對于每個人構建應用它將會自動打開,包括你的集成環境(就像Jenkins CI)。當你不使用daemon構建時,從這查看更多信息http://gradle.org/docs/current/userguide/gradle_daemon.html#when_should_i_not_use_the_gradle_daemon.
關于parallel的重要的筆記:配置parallel有可能使一些工程不安全。這要求你的模塊必須是解耦的(參考http://gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects) 否則有可能會構建失敗。仔細測試你構建的所有variants,你會知道它的所有工作。
你可以添加其它構建參數,比如當你的工程很大時增加堆棧大小,或者指定JVM:
org.gradle.jvmargs=-Xmx768m org.gradle.java.home=/path/to/jvm
對于gradle.properties文件中其它可以配置的選項,參考http://gradle.org/docs/current/userguide/userguide_single.html#sec:gradle_configuration_properties. Android Studio中一些選項是可用的,也有是默認打開的,但在gradle.properties文件中打開這些選項時,當你使用終端構建工程時,這將會確保你的同事也做了同樣的配置。
最后是改變incremental dexing的值,這是一個實驗的功能并且默認是關閉的。打開這個開關有可能會導致構建失敗(尤其是在連續運行的時候),但我還是推薦你嘗試一下,看看它是否對你有用。
在主APP模塊的build.gradle文件中,添加下面的代碼:
dexOptions { incremental true }