1. 程式人生 > >Gradle系列之Android Gradle外掛

Gradle系列之Android Gradle外掛

> 原文發於微信公眾號 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