完全搞懂Gradle、Gradle Wrapper與Android Plugin for Gradle的區別和聯繫

歡迎和你們交流技術相關問題:
郵箱: jiangxinnju@163.com
博客園地址: http://www.cnblogs.com/jiangxinnju
GitHub地址: https://github.com/jiangxincode
知乎地址: https://www.zhihu.com/people/jiangxinnjuhtml

首先用一段通俗易懂可是不是很是專業的話描述一下三者的概念、區別和聯繫。android

  • 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項目的一部分):git

爲了加深你們對於三者的理解,咱們聊一聊在實際的項目構建中,這三者的關係,以前已經說過三者能夠脫離Android Studio獨立使用,可是這種狀況在實際開發場景中並很少見,因此本文仍是使用Android Studio做爲開發工具進行介紹。當咱們新建一個Android項目時,會出現相似於下圖所示的目錄結構:github

能夠看到一個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:app

Gradle對應版本下載完成以後,Gradle Wrapper的使命基本完成了,Gradle會讀取build.gradle文件,該文件中指定了該項目須要的Android Plugin for Gradle版本是什麼,從哪裏下載該版本的Android Plugin for Gradle。以下圖所示:ide

從圖示項目中能夠知道咱們要使用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中便可。工具

好了,三者的關係從樣例項目中理清楚了。若是你們有什麼疑問能夠給我留言。開發工具

個人博客即將搬運同步至騰訊雲+社區,邀請你們一同入駐:https://cloud.tencent.com/developer/support-plan測試

相關文章
相關標籤/搜索