Gradle系列之Android Gradle外掛
阿新 • • 發佈:2020-09-16
> 原文發於微信公眾號 jzman-blog,歡迎關注交流。
通過前面幾篇文章學習了 Gradle 基礎知識以及 Gradle 外掛相關的知識,關於 Gradle 及其外掛相關知識請先閱讀下面幾篇文章:
- [Gradle系列之初識Gradle](https://juejin.im/post/6844903874629730318)
- [Gradle之Groovy基礎篇](https://juejin.im/post/6844903876177428494)
- [Gradle系列之構建指令碼基礎](https://juejin.im/post/6844903878199099405)
- [Gradle系列之認識Gradle任務](https://juejin.im/post/6844903879872610311)
- [Gradle系列之Gradle外掛](https://juejin.im/post/6844903881671966727)
- [Gradle系列之Java Gradle外掛](https://juejin.im/post/6844903887078424590)
學習 Gradle 的目的主要是為了更好的在 Android 開發中使用 Gradle,這篇文章的主要內容是 Android Gradle 外掛的相關知識,主要內容如下:
1. 瞭解 Android Gradle 外掛
2. Android Gradle 外掛分類
3. 使用 Android Gradle 外掛
4. Android Gradle 工程目錄
5. Android Gradle 基本配置
6. Android Gradle 任務
#### 瞭解 Android Gradle 外掛
顧名思義,Android Gradle 外掛就是一個用於 Android 構建專案的一個 Gradle 外掛,該外掛有 Google Android 開發團隊開發,而且 Android 開發 IDE Android Studio 就採用 Gradle 構建專案,下面是 Android Gradle 外掛的優勢:
1. 方便重用程式碼和資源;
2. 可更方便的建立應用的衍生版本,如多渠道打包;
3. 配置方便。可以擴充套件,還可以自定義構建過程
4. Android Studio 與 Gradle 深度融合
#### Android Gradle 外掛分類
Android 外掛的分類是根據 Android 工程的屬性進行分類的,Android 工程分為三類,具體如下:
1. App 應用工程:可生成可執行的 apk ;
2. Library 庫工程:可生成 aar 共其他 App 應用工程使用,使用方式和 jar 一樣,裡面有相關的 Android 資原始檔
3. Test 測試工程:用於 App 應用過程或 Library 工程進行測試。
對應的就有三種不同的 Android Gradle 外掛,三類外掛分別是 App 外掛、Library 外掛和 Test 外掛,其外掛 id 如下:
```java
//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 上,所以使用時要指定對應倉庫,具體參考如下:
```groovy
buildscript {
//配置外掛倉庫
repositories {
google()
jcenter()
}
//配置依賴
dependencies {
classpath 'com.android.tools.build:gradle:3.0.1'
}
}
```
配置好第三方外掛的倉庫和依賴,然後使用 apply 使用該外掛,具體如下:
```groovy
//使用App外掛
apply plugin: 'com.android.application'
android {
//編譯所依賴的Android SDK的版本
compileSdkVersion 26
//構建工具的版本
buildToolsVersion '26.0.2'
//...
}
dependencies {
//...
}
```
在 Android 開發中一般將外掛的倉庫和依賴配置到根專案下的 build.gradle 檔案中,其子 Module 專案將不需要在配置了,可直接使用,這裡僅僅是 App 外掛的使用,當然 Libray 外掛的使用和 Test 外掛的使用也是一樣,使用時指定對應的 plugin id 即可。
#### Android Gradle 工程目錄
下面是 Android Studio 建立 Android 工程的 Module 的目錄,這也是 Android 工程的基本目錄結構,參考如下:
```java
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 的一個配置檔案,具體如下:
```java
//使用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 就可檢視,參考如下:
![jzman-blog](https://user-gold-cdn.xitu.io/2019/7/18/16c00e6ab57de3f3?w=453&h=355&f=png&s=20591)
這篇算是初步從學習 Gradle 的角度瞭解了 Android Gradle 外掛相關知識,後面的文章中會繼續 Android Gradle 的學習。可以關注公眾號:零點小築(jzman-blog),一起交流學習。
![](https://user-gold-cdn.xitu.io/2019/7/18/16c00e98d0e5482c?w=600&h=472&f=jpeg&s