文中就不介紹Gradle是幹啥用的了,直接從你須要瞭解的內容開始.java
在Gradle中,最重要的兩個概念是項目和任務以及動做.
每一次構建都包括至少一個項目,每個項目中又包含一個或多個任務.每個build.gradle
文件都表明着一個項目,任務定義在構建腳本里.當初始化構建腳本時,Gradle會基於build文件組裝項目和任務對象,一個任務對象包含一系列的動做對象,這些動做對象以後會按順序執行.一個動做對象就是一段代碼塊,相似於Java中的方法.android
Gradle的構建一般會有三個階段:bash
執行一個Gradle的構建最簡單的形式是隻執行任務中的動做,而這些任務又依賴於其餘的任務.爲了簡化構建過程,構建工具就會新建一個DAG(Directed Acyclic Graph 有向無環圖)
,這意味着全部的任務都會一個接一個的被執行,而且一旦一個任務被執行,就不會再次被執行了,那些沒有依賴的任務一般會被優先執行.app
每個基於Gradle構建的項目都包含至少一個build.gradle
文件.在Android中,有一些元素是必須的.工具
//實際構建配置的地方
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.5.1'
}
}
複製代碼
repositories
代碼塊中,jcenter庫被配置爲整個構建過程的依賴倉庫.注:咱們能夠在其中添加咱們須要的其餘倉庫
dependencies
代碼塊中依賴Android插件,其中提供了構建和測試應用所需的一切.插件用於拓展Gradle構建腳本的能力,在一個項目中應用一個插件,該項目就可使用該插件預約義的一些屬性和任務.
好比咱們建立的Android項目中就須要申請插件:apply plugin: 'com.android.application'
,而在庫項目中則須要申請apply plugin: 'com.android.library'
.不一樣的項目類型可使用不一樣的插件,不能在一個項目中同時使用這兩個插件,會致使構建錯誤.
配置以後咱們就可使用android{}
代碼塊來對咱們的項目作一些配置了.測試
sqms-study
├── app
│ ├── app.iml
│ ├── build
│ ├── build.gradle
│ ├── libs
│ ├── proguard-rules.pro
│ └── src
│ ├── androidTest
│ ├── main
│ │ ├── AndroidManifest.xml
│ │ ├── java
│ │ └── res
│ │ ├── drawable
│ │ ├── layout
│ │ └── values
│ │ ├── colors.xml
│ │ ├── strings.xml
│ │ └── styles.xml
│ └── test
├── build.gradle
├── gradle
│ └── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradle.properties
├── gradlew
├── gradlew.bat
├── local.properties
├── settings.gradle
└── sqms-study.iml
複製代碼
Gradle項目有一個source set(源集)
的概念,官方的解釋是一個源集就是一組源文件,它們被一塊兒執行和編譯
,在Android中,main
就是一個源集,包含了全部源代碼和資源文件,test
也是一個源集,用來存放全部測試相關的源代碼.gradle
Wrapper其實就是對Gradle的一層包裝,便於在團隊開發中統一Gradle構建的版本. 當使用Wrapper啓動Gradle的時候,Wrapper會檢查Gradle有沒有被下載關聯,若是沒有將會從配置的地址進行下載並構建.ui
Gradle提供了內置的Wrapper task 幫助咱們自動生成Wrapper所需的目錄文件,在一個項目的根目錄輸入gradle wrapper
.url
在使用gradle wrapper
指令生成相關文件的時候,能夠爲其制定一些參數,來控制Wrapper的生成,如不添加任何參數,則使用當前Gradle版本做爲生成Wrapper的gradleVersion.spa
如: 使用gradle wrapper --gradle-2.4
表示配置wrapper使用2.4版本的Gradle.它會影響gradle-wrapper.properties中的distributionUrl的值,規則是https\://services.gradle.org/distributions/gradle-${gradleVersion}-bin.zip
我當前使用的Gradle版本爲5.5.1,生成的gradle-wrapper.properties文件以下.
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-5.5.1-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
複製代碼