1. 程式人生 > >Gradle、Gradle Wrapper與Android Plugin for Gradle的區別和聯絡

Gradle、Gradle Wrapper與Android Plugin for Gradle的區別和聯絡

原文連結:https://www.cnblogs.com/jiangxinnju/p/8229129.html

總結:

Gradle:是一個專案構建系統,類似於Maven。Gradle並不是只能用於Android,而是Android引用裡Gradle。https://docs.gradle.org/current/userguide/userguide_single.html

Gradle Wrapper:用於管理和下載各個版本的Gradle,位於專案/gradle/wrapper/.jar和.properties.https://docs.gradle.org/current/userguide/gradle_wrapper.html

 

Android Plugin for Gradle:是Android對於Gradle的擴充套件,專用於Android專案。https://developer.android.com/studio/build/index.html

 

原文:

首先用一段通俗易懂但是不是非常專業的話描述一下三者的概念、區別和聯絡。

  • Gradle是個構建系統,能夠簡化你的編譯、打包、測試過程。熟悉Java的同學,可以把Gradle類比成Maven。
  • Gradle Wrapper的作用是簡化Gradle本身的安裝、部署。不同版本的專案可能需要不同版本的Gradle,手工部署的話比較麻煩,而且可能產生衝突,所以需要Gradle Wrapper幫你搞定這些事情。Gradle Wrapper是Gradle專案的一部分。
  • Android Plugin for Gradle是一堆適合Android開發的Gradle外掛的集合,主要由Google的Android團隊開發,Gradle不是Android的專屬構建系統,但是有了Android Plugin for Gradle的話,你會發現使用Gradle構建Android專案尤其的簡單。

另外需要說明的一點是Gradle、Gradle Wrapper與Android Plugin for Gradle不一定要和Android Studio一起使用,你可以完全脫離Android Studio,使用三者獨立進行Android專案的構建。下面是三者官方的指導文件(從地址可以看出Gradle Wrapper是Gradle專案的一部分):

為了加深大家對於三者的理解,我們聊一聊在實際的專案構建中,這三者的關係,之前已經說過三者可以脫離Android Studio獨立使用,但是這種情況在實際開發場景中並不多見,所以本文還是使用Android Studio作為開發工具進行介紹。當我們新建一個Android專案時,會出現類似於下圖所示的目錄結構:

可以看到一個gradle/wrapper目錄,其中有兩個檔案:gradle-wrapper.jar/gradle-wrapper.properties,gradle-wrapper.jar是Gradle Wrapper的主體功能包。在Android Studio安裝過程中產生gradle-wrapper.jar(如果預設安裝的話會在C:\Program Files\Android\Android Studio\plugins\android\lib\templates\gradle\wrapper\gradle\wrapper\gradle-wrapper.jar)。然後每次新建專案,會將gradle-wrapper.jar拷貝到你的專案的gradle/wrapper目錄中。gradle-wrapper.properties檔案主要指定了該專案需要什麼版本的Gradle,從哪裡下載該版本的Gradle,下載下來放到哪裡,如下圖所示:

其中GRADLE_USER_HOME一般指~/.gradle,從圖示專案中可以知道我要使用gradle-4.1版本,從https://services.gradle.org/distributions/gradle-4.1-all.zip下載,下載到本地的~/.gradle/wrapper/dists目錄。那是不是各個專案的Gradle都要通過Gradle Wrapper下載,能不能所有的專案共用一個Gradle?這樣理論上是可以的,但是由於Gradle本身不一定保持完全的相容性,所以新老專案共用一個Gradle有時可能會遇到意想不到的問題。指定對應版本的Gradle,而不通過Gradle Wrapper下載的設定方式是勾選如下圖中的Use local gradle distribution,同時指定Gradle home:

Gradle對應版本下載完成之後,Gradle Wrapper的使命基本完成了,Gradle會讀取build.gradle檔案,該檔案中指定了該專案需要的Android Plugin for Gradle版本是什麼,從哪裡下載該版本的Android Plugin for Gradle。如下圖所示:

從圖示專案中可以知道我們要使用3.0.1版本,從google和jcenter處下載,那麼下載到我們本地的哪裡呢?它會下載到~\.gradle\caches\modules-2\files-2.1\com.android.tools.build中。有時候大家網路裝填不好,選擇下圖中的Offline work時可能出現"No cached version of com.android.tools.build:gradle:xxx available for offline mode"問題,此時你只要將對應版本的Android Plugin for Gradle下載到本地的C:\Program Files\Android\Android Studio\gradle\m2repository\com\android\tools\build中即可。

好了,三者的關係從樣例專案中理清楚了。如果大家有什麼疑問可以給我留言。