天天看點

Android Gradle和Gradle插件差別

引言

什麼是Gradle?什麼是Gradle插件?

build.gradle中依賴的classpath 'com.android.tools.build:gradle:2.1.2'和gradle-wrapper.properties中的distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip有什麼差別?

Android studio 更新後,Gradle和Gradle插件間版本該如何對應?

你是不是也有這樣的困惑?讀完本文後,或許對你有點點幫助.

名詞解釋:

Gradle插件:該名稱的英文是:Android Plugin for Gradle

Gradle和Gradle插件差別

我們知道Android的建構系統使用Gradle來建構應用.Gradle是一種建構工具,它使用一種基于Groovy的特定領域語言來申明項目設定.

上面是Android developer上對Gradle的解釋.聽起來有些拗口.我們可以這麼了解:

軟體開發過程不僅僅是編寫代碼,還涉及到對項目的管理,比如:添加項目的依賴,打包,簽名,釋出等一系列操作,如果你每天都在做這些操作,那有沒有想過這些操作可以像代碼一樣被描述出來,供我們複用以及自動運作.

沒錯,這就是Gradle替我們做的事!Gradle通過編寫一個名為build.gradle的腳本檔案對項目進行設定,再根據這個腳本對項目進行建構.

那麼,如何來提供這個Gradle建構環境呢?這就需要通過安裝Gradle插件來使系統能支援運作Gradle.安裝Android Studio後就已經幫我安裝了Gradle插件.但Gradle插件是獨立于Android Studio運作的,是以它的更新也是與Android Studio分開的.

更新Gradle插件

當更新了Android Studio,你可能會收到提示要求更新Gradle插件到最新版本.你可以選擇接受更新,也可以基于你的項目編譯要求來手動指定版本.

指定Gradle插件版本有兩種方式:

  • 在Android Studio中選擇File > Project Structure > Project菜單;
  • 在頂層build.gradle中修改配置.

下面的例子在build.gradle中設定Gradle版本為2.2.0

buildscript {
  ...
  dependencies {
    classpath 'com.android.tools.build:gradle:2.2.0'
  }
}
           

注意:不應該動态指定版本号,如"com.android.tools.build:gradle:2.+".這樣做可能會導緻意外的版本更新,并且會給解決版本差異帶來困難.

如果指定的版本沒有下載下傳下來,那麼項目在下次建構的時候Gradle會再去下載下傳.或者你也可以點選Tools > Android > Sync Project with Gradle Files去下載下傳.

更新Gradle

當更新了Android Studio,系統會提示要求更新Gradle到最新版本.同更新Gradle插件一樣,你可以選擇接受更新,也可以基于你的項目編譯要求來手動指定版本.

更新Gradle也有兩種方式:

  • 通過選擇File > Project Structure > Project來指定Gradle版本
  • 在gradle/wrapper/gradle-wrapper.properties檔案中編輯Gradle引用位址

在gradle/wrapper/gradle-wrapper.properties檔案中編輯Gradle引用位址如下:

...
distributionUrl = https\://services.gradle.org/distributions/gradle-2.14.1-all.zip
...
           

Gradle與Gradle插件版本比對

因為Gradle仍在發展,在不斷更新,自然Gradle插件也需要不斷更新版本才能提供對新版本Gradle的支援,那麼它們之間的版本是如何對應的呢?

下圖展示了Gradle插件與Gradle版本間更新的對應關系.順便說一下,最好讓你的Gradle和Gradle插件都更新到最新.

Plugin version Required Gradle version
1.0.0 - 1.1.3 2.2.1 - 2.3
1.2.0 - 1.3.1 2.2.1 - 2.9
1.5.0 2.2.1 - 2.13
2.0.0 - 2.1.2 2.10 - 2.13
2.1.3+ 2.14.1+

總結

gradle-wrapper.properties中配置的是的Gradle的版本.

build.gradle中的依賴指定的是Gradle插件的版本.