Android Studio中如何提高Gradle Building的速度?

比起兩三年前,如今開發Android應用已經能夠很順手了,不管是IDE仍是開發框架、第三方庫,都比較成熟了。可是呢,使用Android Studio開發時,免不了在調試時,看着gradle building一直在Loading,對於通常的項目也是須要一杯咖啡的時間了,特別是只想測下一丁點的小問題時,也要等這麼長時間,實在是沒有耐心。那麼,通過一輪的Google與實踐探索,終於得一大法,彷彿張無忌在崑崙洞下練成了九陽真經。html

  得此大法,可解決Android Studio Gradle building慢的問題了!將原來的編譯時間從五到十分鐘提高到30秒左右!java

  提速一:本地化引用第三方aar或jar包android

  在開發時,通常會引用到第三方庫,例如,在項目中引用了 fabprogresscircle庫,那麼通常在項目的app目錄下的 build.gradle 文件裏會有這麼一條記錄:git

  compile 'com.github.jorgecastilloprz:fabprogresscircle:1.01@aar'github

  Gradle在第一次Building時,會將引用的第三方庫包下載到緩存裏。下載到緩存裏的文件應該是 fabprogresscircle-1.01.aar 。注意:若是build.gradle引用時沒有 @aar 的話,那通常下載到緩存裏的是 .jar 文件。若是不知道gradle的緩存目錄在哪裏,能夠在Android Studio編譯過一次以後,使用搜索 fabprogresscircle-1.01.aar的方法找到目錄。緩存

  把緩存裏的 aar 或者是 jar 包複製到項目的 libs 目錄裏,而後編輯項目的app目錄下的 build.gradle 文件,將引用的包改成引用本地的包。app

  在 build.gradle 文件裏先增長內容:框架

  repositories {jvm

  flatDir {ide

  dirs 'libs'

  }

  }

  上面寫的內容意思是告訴Gradle本地引用的包倉庫在 libs 目錄,而後把

  compile 'com.github.jorgecastilloprz:fabprogresscircle:1.01@aar'

  改成下面的:

  compile(name: 'fabprogresscircle-1.01', ext: 'aar')

  注意

  aar與jar包是不一樣的。

  若是一開始引用時,沒有 @aar ,以下:

  compile 'com.github.jorgecastilloprz:fabprogresscircle:1.01'

  那下載到緩存的是 fabprogresscircle-1.01.jar 文件,因爲在 build.gradle 文件裏,在 dependencies 下第一條內容就是:

  compile fileTree(include: ['*.jar'], dir: 'libs')

  上面內容意思是引用本地目錄libs下的全部以 jar 爲後綴的包。因此,將 fabprogresscircle-1.01.jar 文件複製到libs目錄後,能夠直接刪除下面這麼條內容:

  compile 'com.github.jorgecastilloprz:fabprogresscircle:1.01'

  注意

  使用此方法,不能將Android自己相關包本地化引用,例如遇到如下的引用就不可使用此方法了,否則會出錯:

  compile 'com.android.support:appcompat-v7:23.0.1'

  通常以 com.google.android 和 com.android.support 開頭的相關包都不能使用此方法。

  提速二:優化Android Studio的設置

  在Android Studio軟件裏,點擊"Files" -> "settings",打開設置對話框,在左邊導航裏點擊"Build, Execution, Deployment" -> "Gradle",在右邊,在 offline work 前打勾。這樣子,Gradle就是離線模式,避免了Gradle Building時聯網超時的問題。可是若是項目是第一次同步或編譯,則不能應用此設置。

  另外,編譯設置也要做一樣的優化,以下圖:

 

    Android Studio 設置

  提速三:開啓gradle單獨的守護進程

  在下面的目錄下面建立gradle.properties文件:

  . /home//.gradle/ (Linux)

  . /Users//.gradle/ (Mac)

  . C:\\Users\\.gradle (Windows)

  複製如下內容到gradle.properties裏:

  # Project-wide Gradle settings.

# IDE (e.g. Android Studio) users:

# Settings specified in this file will override any Gradle settings

# configured through the IDE.

# For more details on how to configure your build environment visit

http://www.gradle.org/docs/current/userguide/build_environment.html

# The Gradle daemon aims to improve the startup and execution time of Gradle.

# When set to true the Gradle daemon is to run the build.

# TODO: disable daemon on CI, since builds should be clean and reliable on servers

org.gradle.daemon=true

# Specifies the JVM arguments used for the daemon process.

# The setting is particularly useful for tweaking memory settings.

# Default value: -Xmx10248m -XX:MaxPermSize=256m

org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8

# When configured, Gradle will run in incubating parallel mode.

# This option should only be used with decoupled projects. More details, visit

# http://www.gradle.org/docs/current/userguide/multi_project_builds.html

#sec:decoupled_projects

org.gradle.parallel=true

# Enables new incubating mode that makes Gradle selective when configuring projects.

# Only relevant projects are configured which results in faster builds for large multi-projects.

http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:configuration_on_demand

org.gradle.configureondemand=true

  上面的配置文件主要就是作,增大gradle運行的java虛擬機的大小,讓gradle在編譯的時候使用獨立進程,讓gradle能夠平行的運行。

  將以上內容複製到gradle.properties文件裏後,就是對Gradle全局應用,對全部項目都有效的。若是隻想在某一項目應用此設定,能夠在項目下的gradle.properties裏增長以上設定內容。

 

文章來源:簡書

相關文章
相關標籤/搜索