Gradle系列之Android Gradle插件

原文發於微信公衆號 jzman-blog,歡迎關注交流。java

經過前面幾篇文章學習了 Gradle 基礎知識以及 Gradle 插件相關的知識,關於 Gradle 及其插件相關知識請先閱讀下面幾篇文章:android

學習 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 插件的優點:app

  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 以下:post

//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 使用該插件,具體以下: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 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 就可查看,參考以下:

jzman-blog

這篇算是初步從學習 Gradle 的角度瞭解了 Android Gradle 插件相關知識,後面的文章中會繼續 Android Gradle 的學習。能夠關注公衆號:零點小築(jzman-blog),一塊兒交流學習。

相關文章
相關標籤/搜索