天天看點

Gradle、Gradle-wrapper、build:gradle(Android Plugin for Gradle)的關系與差別

[唱]簡單點,了解問題的方式簡單點,我不是一個演員…

先貼上官方文檔:

Gradle: https://docs.gradle.org/current/userguide/userguide_single.html

Gradle Wrapper: https://docs.gradle.org/current/userguide/gradle_wrapper.html

Android Plugin for Gradle: https://developer.android.com/studio/build/index.html

通俗的跟大家說說這三者什麼關系:

Gradle

是一個建構系統,能夠簡化你的編譯、打包、測試過程。熟悉Java的,Gradle相當于Maven。

Gradle Wrappe

是簡化Gradle本身的安裝、部署。Gradle Wrapper幫你搞定項目gradle的安裝部署。不同版本的項目可能需要不同版本的Gradle,手工部署的話比較麻煩,而且可能産生沖突,是以需要Gradle Wrapper幫你搞定這些事情。Gradle Wrapper是Gradle項目的一部分。

Android Plugin for Gradle

就是我們通常在項目的build.gradle中看到的這個東西

**dependencies {
        classpath 'com.android.tools.build:gradle:3.2.1'
    }**
           

它是一堆适合Android開發的Gradle插件的集合,主要由Google的Android團隊開發,Gradle不是Android的專屬建構系統,但是有了Android Plugin for Gradle的話,你會發現使用Gradle建構Android項目尤其的簡單。

這三者不一定要和Android Studio一起使用,你可以完全脫離Android Studio,使用三者獨立進行Android項目的建構(但實際開發中很少)。那麼實際是什麼鬼呢,你看~當我們建立一個Android項目時,會出現類似于下圖所示的目錄結構:

Gradle、Gradle-wrapper、build:gradle(Android Plugin for Gradle)的關系與差別

在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目錄下,其中有兩個檔案:gradle-wrapper.jar/gradle-wrapper.properties,gradle-wrapper.jar是Gradle Wrapper的主體功能包。gradle-wrapper.properties檔案主要指定了該項目需要的Gradle版本,下載下傳位址下載下傳後儲存目錄,如下圖所示:

Gradle、Gradle-wrapper、build:gradle(Android Plugin for Gradle)的關系與差別

其中GRADLE_USER_HOME一般指/.gradle,此處使用gradle-4.4版本,從https://services.gradle.org/distributions/gradle-4.4-all.zip下載下傳,下載下傳到本地的/.gradle/wrapper/dists目錄。尼瑪,難道每次都要下載下傳,NO^,當然可以選擇使用本地的Gradle,而且不用下載下傳不通的版本,你看這樣就不通過Gradle Wrapper下載下傳,打開設定選擇Gradle勾選如下圖中的Use local gradle distribution,同時指定Gradle home指定你的gradle路徑就行。

Gradle、Gradle-wrapper、build:gradle(Android Plugin for Gradle)的關系與差別

but***由于Gradle本身不一定保持完全的相容性,是以新老項目共用一個Gradle有時可能會遇到意想不到的問題。Gradle對應版本下載下傳完成之後,Gradle Wrapper的使命基本完成了,Gradle會讀取build.gradle檔案,該build.gradle指定了該項目需要的Android Plugin for Gradle版本是什麼,從哪裡下載下傳該版本的Android Plugin for Gradle。看圖:

Gradle、Gradle-wrapper、build:gradle(Android Plugin for Gradle)的關系與差別

此處使用3.1.4版本,從google和jcenter處下載下傳,它會下載下傳到~.gradle\caches\modules-2\files-2.1\com.android.tools.build中。剛精沒網或者不想下載下傳怎麼辦,看上上圖中的Offline work,選他同僚配置gradle目錄就修改Android Plugin for Gradle的版本為你已經有的就行了。更換過目錄什麼的出現"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中即可。

嗯嗯,就這樣,沒說清楚的我也不管,哈哈哈。

繼續閱讀