01 前言
? ? ?回想起自己剛剛接觸Android Studio開發(fā)的時(shí)候的一臉懵逼,對(duì)Gradle的一知半解,網(wǎng)上查了很多資料,也看了很多大牛的博客,覺得有必要記錄一下,就當(dāng)做是再復(fù)習(xí)一遍吧。
02 什么是構(gòu)建工具,什么是Gradle
? ? ?用過AS開發(fā)的人都知道Gradle是一種構(gòu)建工具,那什么才是構(gòu)建工具呢?舉個(gè)例子,在用AS開發(fā)Android之前,大家都是用Eclipse進(jìn)行開發(fā),我們知道,Eclipse之所以能夠用來開發(fā)Android項(xiàng)目,是因?yàn)橐粋€(gè)叫做ADT(Android Developer Tools)的東西,Eclipse之前是用來開發(fā)Java的,Google團(tuán)隊(duì)希望Android能夠在Eclipses進(jìn)行開發(fā),所以才有了ADT的產(chǎn)生。有了這個(gè)ADT,我們只需要寫好代碼,然后直接在Eclipse上進(jìn)行編譯,運(yùn)行...等一系列操作,我們可以把ADT叫做一種構(gòu)建工具。自從Google推出Android Studio以來,默認(rèn)使用Gradle作為構(gòu)建工具,并放棄了對(duì)ADT進(jìn)行更新(還在用Eclipse開發(fā)的同學(xué),趕緊轉(zhuǎn)Android Studio吧)!
03 Gradle的依賴管理功能
? ? ?我們知道構(gòu)建工具不光有編譯、打包、運(yùn)行、簽名等功能,還有依賴管理的功能。回到Eclipse,用Eclipse開發(fā)的時(shí)候,如果我們需要使用到第三方庫,我們需要先下載jar包,然后把jar包放到libs目錄下,然后就可以使用了,試想一下,如果第三方庫進(jìn)行更新了,我們必須重新進(jìn)行下載,這是一種很繁瑣的操作,項(xiàng)目中使用的第三方庫少的話還好,如果使用的第三方庫比較多,就不利于進(jìn)行項(xiàng)目管理了,可以說,這種方式只有依賴,而沒有管理。說完了Eclipse,說說Android Studio的Gradle,現(xiàn)在在我們的項(xiàng)目中是這么引入第三方庫的:

有沒有覺得這種方式很方便,而且可以直接看到源地址,想要進(jìn)行版本升級(jí)的話,直接改后面的版本號(hào)就OK,這才是真正的依賴管理。
04 關(guān)于Gradle
? ? ?Gradle是一種新的構(gòu)建工具,它是一個(gè)獨(dú)立的項(xiàng)目,與Android,Java無關(guān),與傳統(tǒng)的構(gòu)建工具相比,Gradle采用了一種叫做Groovy的的語言,語法跟Java很像。Gradle是一個(gè)獨(dú)立的項(xiàng)目,那為什么我們可以在Android Stuidio上進(jìn)行Android開發(fā)呢? 因?yàn)镚oogle團(tuán)隊(duì)做了一個(gè)AS的插件叫做Android Gradle Plugin,基于這個(gè)插件,我們才可以在AS上進(jìn)行Android Studio開發(fā)。在我們的項(xiàng)目的根目錄的build.gradle文件里有這么一行代碼:

這就是我們依賴gradle插件的代碼,后面的版本號(hào)就是Android Gradle Plugin的版本,請注意,這個(gè)版本號(hào)不是Gradle的版本號(hào)。當(dāng)我們創(chuàng)建了一個(gè)AS項(xiàng)目,點(diǎn)擊運(yùn)行,默認(rèn)就會(huì)幫我們安裝Gradle,但是這個(gè)Gradle并不是真正的Gradle,而是Gradle Wrapper,叫做Gradle的包裝。假設(shè)本地有好幾個(gè)項(xiàng)目,一些項(xiàng)目比較早,用的是Gradle1.0的版本,而一些新的項(xiàng)目用的是Gradle2.0的版本。但是這兩個(gè)項(xiàng)目我都是想同時(shí)運(yùn)行的,如果只安裝了Gradle1.0版本肯定不行,為了解決這個(gè)問題,Google推出了Gradle Wrapper的概念。簡單的說,就是它在你的每一個(gè)項(xiàng)目都配置了一個(gè)指定版本的Gradle,通過這個(gè)每個(gè)項(xiàng)目你可以支持用不同的Gradle版本來構(gòu)建項(xiàng)目。
05 Android項(xiàng)目中有哪些Gradle配置文件以及它們的含義
? ? ?1.首先是項(xiàng)目的app目錄下的build.gradle,文件路徑:XXX/app/build.gradle。

它是app目錄下的這個(gè)Module的gradle配置文件。點(diǎn)開這個(gè)文件,里面指定了該項(xiàng)目的編譯版本,最低兼容版本等,以及項(xiàng)目里使用到的第三方庫都是在這個(gè)文件里添加。
? ? ?2.項(xiàng)目的根目錄的build.gradle。

這個(gè)文件是整個(gè)項(xiàng)目的 gradle 基礎(chǔ)配置文件,默認(rèn)的內(nèi)容就是聲明了 android gradle plugin 的版本。
? ? ?3.項(xiàng)目的Gradle文件夾

這個(gè)目錄底下,有個(gè)wrapper文件夾,我們可以看看這個(gè)gradle-wrapper.properties文件:

可以看到,這里指示了gradle的下載地址以及當(dāng)前項(xiàng)目使用到的版本號(hào),很多時(shí)候,導(dǎo)入別人的項(xiàng)目不成功就是因?yàn)檫@個(gè)版本號(hào)不匹配而導(dǎo)致的。
? ? ?4.根目錄下的settings.gradle
這個(gè)文件是全局的項(xiàng)目配置文件,里面主要聲明一些需要加入 gradle 的 module。
06 導(dǎo)入開源項(xiàng)目的正確姿勢
? ? ?當(dāng)我們在Github上看到優(yōu)秀的項(xiàng)目時(shí),往往想下載下來學(xué)習(xí),但是導(dǎo)入到AS中經(jīng)常報(bào)各種錯(cuò)誤,那么導(dǎo)入開源項(xiàng)目的正確姿勢是什么呢?
(1) 第一步,新建一個(gè)項(xiàng)目,跑一遍。
(2) 打開 我們從Github下載的項(xiàng)目的文件。依次 找到 gradle文件夾(必須)、build.gradle (必須)、gradle.properties (必須)和.gradle 文件夾 (非必須)。
(3) 把我們之前 在AS新建的那個(gè)項(xiàng)目的 gradle 文件夾(必須) 、build.gradle (必須)
和gradle.properties (必須) 這三個(gè) 復(fù)制到 下載的那個(gè)項(xiàng)目中去。
(4).然后 在AS中依次執(zhí)行以下操作:File —— New —— Import Project 一下。注意:
引入的時(shí)候不是選擇project名稱,而是選擇的項(xiàng)目的build.gradle文件。
