前言
通過上兩篇文章,我們大概知道了Groovy,Gradle在Android專案構建中的一些基本的配置和其作用,接下來就是我們真正實踐的時刻,我們通過一個簡單的外掛的實現,來將前兩篇中的點串起來,再次回顧熟悉Groovy語言,通過一個簡單的demo跑通這個外掛實現流程。建立一個外掛,併發布到本地maven倉庫。然後在我們的專案中運用我們的外掛,呼叫相關的task。
Gradle外掛Hello World
之前在自己學習gradle的時候,網上的資料本身相對較少,再就有些博主略過了一些細節,導致了很多部落格中給出的例子,當我們自己實際去實踐的時候,自己反倒無法跑起來,這裡對於建立一個簡單的gradle外掛,進行了步驟的切分,對於每一個步驟進行較為詳細的講解。
- Task
在Gradle檔案中,我們可以根據自己的需求寫一些task,其後的引數為task指定相應的名稱
task("Test") {
println("Hello world")
}
複製程式碼
- Plugin
在Build檔案中,我們可以實現一個簡單的Gradle外掛,通過實現Plugin
介面,並實現其apply方法,這裡在apply方法中列印出一個Hello world
。
class MyPlugin implements Plugin<Project> {
@Override
void apply(Project target) {
println("Hello world")
}
}
複製程式碼
在Build檔案中寫,顯然無法讓其複用,如果複用,我們就需要將其獨立出來,如何來將其寫成一個獨立的外掛呢?我們可以通過AndroidStudio來進行外掛的開發,但是由於AndroidStudio沒有給予很好的支援,因此,可能需要我們去手動的刪除一些檔案,然後按照正常的外掛目錄重新建立專案。
1. 建立一個Java Library Module
這裡,我們新建一個Module,並取名firstplugin。
2. 刪除部分檔案目錄
將Java檔名稱改為groovy (因為,我們的demo專案中不需要Java程式碼,因此,可以將其替換為groovy。)。刪除libs目錄
3. 構建配置
原build檔案
apply plugin: 'java'
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
}
sourceCompatibility = "1.7"
targetCompatibility = "1.7"
複製程式碼
因為我們要支援對於Groovy的編譯支援,所以要新增一些Groovy相關的內容。
apply plugin: 'groovy'
apply plugin: 'maven'
dependencies {
compile gradleApi()
compile localGroovy()
}
repositories {
mavenCentral()
}
複製程式碼
執行build檔案後,我們在進行開發的時候,就可以進行自動提示幫助我們提升開發效率。
4. HelloWorld外掛開發
建立Groovy檔案,進行外掛程式碼的開發。這裡我們命名為FirstPlugin .
package com.example;
import org.gradle.api.Plugin
import org.gradle.api.Project
class FirstPlugin implements Plugin<Project> {
@Override
void apply(Project target) {
target.task("TestTask") {
println("Hello world")
}
}
}
複製程式碼
5. 配置外掛資訊
在Src目錄下新增resources
資料夾,建立一級目錄,META-INF
,在其下建立二級目錄,grale-plugins
,然後建立一個檔案。命名方式,外掛名稱+properties字尾。
這裡我們的檔名是com.example.firstplugin.properties
implementation-class=com.example.FirstPlugin
複製程式碼
裡面用來指定我們的外掛實現類。
6. 釋出到本地倉庫
在Build檔案中新增傳至本地mavenCentral的程式碼
//根據自己需求來配置
group = 'com.jensen.plugin'
//版本資訊
version = '1.0.0'
uploadArchives {
repositories {
mavenDeployer {
//本地倉庫地址
repository(url: uri('/Users/chenjensen/Desktop/repo'))
}
}
}
複製程式碼
在Gradle task中執行uploadArchives
,即可看到在本地的repo中產生的依賴。
7. 應用到專案中
在Project的build檔案中新增
repositories {
jcenter()
//配置maven地址
maven {
url uri('/Users/chenjensen/Desktop/repo')
}
}
dependencies {
classpath 'com.android.tools.build:gradle:2.3.3'
//指定外掛的路徑
classpath 'com.jensen.plugin:firstplugin:1.0.0'
}
複製程式碼
在我們的app的project中應用我們的外掛
apply plugin: 'com.example.firstplugin'
TestTask
複製程式碼
執行控制檯列印出執行資訊.
Hello world
複製程式碼
總結
通過這一個流程,我們可以寫出來一個簡單的Gradle外掛,對於具體更深入的功能,我們可以自己來根據自己的需求定製自己的外掛,去寫相應的task。通過本篇,主要是熟悉流程,接下來的第四篇,將會著重於如何寫一個功能更豐富的外掛,併發布到Jcenter中,應用到我們的專案之中。