原文發於微信公衆號 jzman-blog,歡迎關注交流。java
經過前面幾篇文章學習了 Gradle 基礎知識以及 Gradle 插件相關的知識,關於 Gradle 及其插件相關知識請先閱讀下面幾篇文章:android
學習 Gradle 的目的主要是爲了更好的在 Android 開發中使用 Gradle,這篇文章的主要內容是 Android Gradle 插件的相關知識,主要內容以下:微信
顧名思義,Android Gradle 插件就是一個用於 Android 構建項目的一個 Gradle 插件,該插件有 Google Android 開發團隊開發,並且 Android 開發 IDE Android Studio 就採用 Gradle 構建項目,下面是 Android Gradle 插件的優點:app
Android 插件的分類是根據 Android 工程的屬性進行分類的,Android 工程分爲三類,具體以下:工具
對應的就有三種不一樣的 Android Gradle 插件,三類插件分別是 App 插件、Library 插件和 Test 插件,其插件 id 以下:post
//App插件id
com.android.application
//Library插件id
com.android.library
//Test插件
com.android.test
複製代碼
使用最多的確定就是 App 插件和 Library 插件,使用這幾個插件在 Android Studio 中就能夠構建 Android 工程了。學習
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 使用該插件,具體以下:gradle
//使用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 便可。ui
下面是 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 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 插件中包含了 Java Gradle 插件的一些任務,如 assembile、check、build等任務,此外, Android Gradle 插件還添加一些新任務,如 connectedCheck、deviceCheck、lint、install、unInstall 等 Android 開發特有的任務,可在 Android Studio 上查看 Android 開發中一些任務,選中 Android Studio 右側標籤 Gradle 就可查看,參考以下:
這篇算是初步從學習 Gradle 的角度瞭解了 Android Gradle 插件相關知識,後面的文章中會繼續 Android Gradle 的學習。能夠關注公衆號:零點小築(jzman-blog),一塊兒交流學習。