相信開發過 Android 應用的人都明白 gradle 的重要性,做爲 Android 官方默認的構建工具,Android 開發者在平常開發中免不了和 gradle 打交道。而 gradle 的大部分功能都是經過插件擴展的,像咱們最經常使用的插件就是 Android 官方插件 com.android.application
,用來作一些和 Android 相關的配置。java
那若是咱們想本身開發一個 gradle 插件該怎麼作呢?這裏我打算用兩篇文章給你們分享下,這篇文章主要介紹下 gradle 插件的相關概念,下一片文章結合一個例子展現如何一步步寫一個 gradle 插件。android
要知道 gradle 插件是作什麼的,先要搞清楚 gradle 是什麼。git
簡單說 gradle 是一種構建工具,用來控制代碼的編譯、構建、打包等過程,有點像 C/C++ 項目中的 Make 工具。gradle 執行一次 build 總共能夠分爲三個步驟:github
settings.gradle
腳本文件,肯定當前項目中包含哪些子項目,Android 項目在這個階段肯定項目中有哪些 module。build.gradle
腳本文件,建立全部須要建立的 Task。看來 gradle 要作的事情最終都轉嫁給了 Task 來執行,讓咱們來看看 Task 是什麼。編程
咱們常見的編程語言的基本運行單元是代碼塊或者方法,按照調用的前後順序執行。但 gradle 不一樣,它的工做都由一個個 Task 來執行。Task 能夠指定它所依賴的 Task,或者它要在另外一個 Task 以前或者以後運行。app
將處理邏輯分在不一樣的 Task 中有這麼兩個好處:編程語言
那如何建立一個 Task 呢?常見的方式有兩種:工具
build.gradle
中直接建立。build.gradle
中通常建立功能簡單的 Task,邏輯複雜的 Task 一般由插件建立,不然會使得 build.gradle
文件臃腫不堪。可見插件也是 gradle 一個重要組成部分,咱們再來看看插件是作什麼的。學習
gradle 核心的邏輯比較簡單,豐富的構建功能都是經過插件的方式擴展的。好比 Android 的構建邏輯確定不是 gradle 官方代碼自帶的,而是 Android 寫了對應的 gradle 插件來實現。這個特性保證了 gradle 功能的靈活性,好比要支持 C 語言的編譯,只須要寫對應的插件就能夠了。gradle
做爲 Android 開發者,最多見的兩個插件分別是:
com.android.application
com.android.library
一般在 build.gradle
文件中這麼使用插件:
apply plugin: 'com.android.application'
複製代碼
這表示所在的 module 是一個 app module,而使用 com.android.library
插件表示所在 module 是一個 library module,兩種插件分別會對該 module 作不一樣的配置。至因而如何配置的,咱們這裏先不展開,後面講到如何寫一個插件時會涉及到。這裏能夠先理解爲:應用一個插件時,至關於執行了一串代碼塊。
到這裏咱們明白了 gradle 插件是什麼?那爲何須要開發 gradle 插件呢?感受和應用開發也沒多大關係。
做爲一個 Android 開發者,可能以爲我只要作出酷炫的界面,每一個界面無縫切換、不卡頓就好了,爲何要費勁學 gradle 開發呢?
從我本身的經驗來講,學習開發 gradle 插件有這麼幾個好處:
build.gradle
文件臃腫。如今咱們明白了 gradle 插件是什麼,以及爲何要建立 gradle 插件,接下來讓咱們點擊這裏查看第二篇文章來看看如何一步步建立一個 gradle 插件。