通過前面幾篇文章學習了 Gradle 基礎知識以及 Gradle 插件相關的知識,關於 Gradle 及其插件相關知識請先閱讀下面幾篇文章:
- Gradle 系列之初識 Gradle
- Gradle 之 Groovy 基礎
- Gradle 系列之構建腳本基礎
- Gradle 系列之 Gradle 任務
- Gradle 系列之 Gradle 插件
- Gradle 系列之 Java Gradle 插件
學習 Gradle 的目的主要是為了更好的在 Android 開發中使用 Gradle,這篇文章的主要內容是 Android Gradle 插件的相關知識,主要內容如下:
- 了解 Android Gradle 插件
- Android Gradle 插件分類
- 使用 Android Gradle 插件
- Android Gradle 工程目錄
- Android Gradle 基本配置
- Android Gradle 任務
了解 Android Gradle 插件#
顧名思義,Android Gradle 插件就是一個用於 Android 構建項目的 Gradle 插件,該插件由 Google Android 開發團隊開發,而且 Android 開發 IDE Android Studio 就採用 Gradle 構建項目,下面是 Android Gradle 插件的優勢:
- 方便重用代碼和資源;
- 可更方便的創建應用的衍生版本,如多渠道打包;
- 配置方便。可以擴展,還可以自定義構建過程;
- Android Studio 與 Gradle 深度融合。
Android Gradle 插件分類#
Android 插件的分類是根據 Android 工程的屬性進行分類的,Android 工程分為三類,具體如下:
- App 應用工程:可生成可運行的 apk;
- Library 庫工程:可生成 aar 供其他 App 應用工程使用,使用方式和 jar 一樣,裡面有相關的 Android 資源文件;
- Test 測試工程:用於 App 應用過程或 Library 工程進行測試。
對應的就有三種不同的 Android Gradle 插件,三類插件分別是 App 插件、Library 插件和 Test 插件,其插件 id 如下:
//App插件id
com.android.application
//Library插件id
com.android.library
//Test插件
com.android.test
使用最多的肯定就是 App 插件和 Library 插件,使用這幾個插件在 Android Studio 中就可以構建 Android 工程了。
使用 Android Gradle 插件#
Gradle 插件使用時以插件的 id 作為唯一標識,如果是第三方的插件,還必須在 buildscript {} 中指定其 classpath,Android Gradle 插件就屬於第三方插件,使用時要指定其 classpath,Android Gradle 插件托管到 jcenter 上,所以使用時要指定對應倉庫,具體參考如下:
buildscript {
//配置插件倉庫
repositories {
google()
jcenter()
}
//配置依賴
dependencies {
classpath 'com.android.tools.build:gradle:3.0.1'
}
}
配置好第三方插件的倉庫和依賴,然後使用 apply 使用該插件,具體如下:
//使用App插件
apply plugin: 'com.android.application'
android {
//編譯所依賴的Android SDK的版本
compileSdkVersion 26
//構建工具的版本
buildToolsVersion '26.0.2'
//...
}
dependencies {
//...
}
在 Android 開發中一般將插件的倉庫和依賴配置到根項目下的 build.gradle 文件中,其子 Module 項目將不需要再配置,可直接使用,這裡僅僅是 App 插件的使用,當然 Library 插件的使用和 Test 插件的使用也是一樣,使用時指定對應的 plugin id 即可。
Android Gradle 工程目錄#
下面是 Android Studio 創建 Android 工程的 Module 的目錄,這也是 Android 工程的基本目錄結構,參考如下:
app
├─libs
├─proguard-rules.pro
├─build.gradle
└─src
├─androidTest
│ └─java
│
├─main
│ ├─AndroidManifest.xml
│ ├─java
│ └─res
│
└─test
└─java
上述目錄中 src 下面的 main、androidTest、test 是三個 SourceSet,main 表示 App 的源代碼及資源目錄,android 和 test 表示 Android 相關測試代碼目錄,此外 proguard-rules.pro 是當前項目的混淆文件,libs 用於存放 jar、aar 等庫文件,build.gradle 文件用於當前配置文件。
Android Gradle 基本配置#
為了介紹 Android Gradle 插件基本配置,使用 Android Studio 創建一個 Android 項目,下面的 app 的一個配置文件,具體如下:
//使用Android Gradle插件
apply plugin: 'com.android.application'
//android{}是Android工程配置的入口
android {
/**
* 指定編譯依賴的Android SDK的版本,同
* compileSdkVersion android-26
* android.compileSdkVersion = 26
* android.compileSdkVersion = 'android-26'
*/
compileSdkVersion 26
//指定構建工具的版本,也可以使用屬性值buildToolsVersion設置其版本
buildToolsVersion '26.0.2'
/**
* 默認配置,defaultConfig是一個ProductFlavor,可根據不同需求生成不同的Apk
* 如果不自定義ProductFlavor進行單獨配置,則該productFlavor會採用默認配置生成Apk
* 這些具體配置,如applicationID都是ProductFlavor的屬性
*/
defaultConfig {
//配置唯一包名
applicationId "com.manu.androidgradleplugin"
//最低支持的Android系統版本
minSdkVersion 19
//配置應用的目標Android系統版本
targetSdkVersion 26
//用於控制應用升級的版本號
versionCode 1
//用戶看到的版本名稱
versionName "1.0"
//測試時用到
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
/**
* buildTypes是一個NamedDomainObjectContainer類型,是一個域對象,類似SourceSet(源集)
* buildTypes中可自定義需要構建的類型,Gradle會自動創建一個相應的BuildType,如默認的release、debug
*/
buildTypes {
release {
//設置是否為構建類型啟用混淆
minifyEnabled false
//如果啟用混淆則使用相應的混淆文件
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
productFlavors {
}
}
//依賴配置
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'com.android.support:appcompat-v7:26.1.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.2'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
implementation files('libs/plugin.jar')
}
上述配置文件中已經標註了一些 Android Gradle 插件需要配置的地方,也算是對 Android Gradle 插件及項目配置文件 build.gradle 的一次理解與學習,關於 Android Gradle 插件的基本配置就到此為止,以後陸續補充。
Android Gradle 任務#
Android Gradle 插件基於 Android Gradle 插件,Android Gradle 插件中包含了 Java Gradle 插件的一些任務,如 assembile、check、build 等任務,此外,Android Gradle 插件還添加一些新任務,如 connectedCheck、deviceCheck、lint、install、unInstall 等 Android 開發特有的任務,可在 Android Studio 上查看 Android 開發中一些任務,選中 Android Studio 右側標籤 Gradle 就可查看,參考如下:
這篇算是初步從學習 Gradle 的角度了解了 Android Gradle 插件相關知識,後面的文章中會繼續 Android Gradle 的學習。