用AndroidStudio開發自定義 Gradle plugin

本文內容包括: 

  • 利用AndroidStudio,編寫自定義Gradle plugin

  • MavenDeployer 發布plugin

  • 使用Gradle plugin

簡介

項目中引入自定義Gradle plugin一般有三種方法: 

  1. 直接寫在 build.gradle中.

  2. plugin源碼放到rootProjectDir/buildSrc/src/main/groovy目錄下

  3. plugin打包成jar, 發布到maven倉庫, 然后項目通過Build Script依賴jar的形式引入

下面介紹的是第3種自定義Gradle插件的方式.

一. 用AndroidStudio中寫plugin

1.新建一個Android工程

2.在這個工程里面,新建一個Android Library

先起名叫cooker-plugin吧, 我們將會用這個library寫Gradle plugin

3.建立plugin的目錄結構

把這個cooker-plugin中默認產生的文件都刪除, 然后按照下面結構新建文件

解釋

1.因為我們用Groovy寫的插件, 插件代碼放在 src/main/groovy下

2.在src/main/resources/META-INF/gradle-plugins 里聲明plugin信息

比如:新建 cooker-plugin.properties 文件,內容如下 

implementation-class=com.helen.plugin.CookerPlugin

這里:

"cooker-plugin" 是插件名稱;

"com.helen.plugin.CookerPlugin" 是對應的插件實現類 

3.build.gradle 聲明用groovy開發

apply plugin: 'groovy'

dependencies {
    compile gradleApi()
    compile localGroovy()
}

repositories {
    mavenCentral()
}

4.實現插件

實現plugin,其實就是需要繼承實現Plugin  的接口 

package com.helen.plugin
import org.gradle.api.Plugin
import org.gradle.api.Project
public class CookerPlugin implements Plugin<Project> {

    void apply(Project project) {
        //這里實現plugin的邏輯
        //巴拉巴拉巴拉
        println "hello, this is cooker plugin!"

        //cooker-plugin
        //比如這里加一個簡單的task
        project.task('cooker-test-task') << {
            println "hello, this is cooker test task!"
        }
    }
}

5.一個簡單的plugin就寫好了

在cooker-plugin項目中, build一下.

就能在build/libs下生成對應的plugin插件了

這個插件就能使用了. 可以發布在本地倉庫或者Maven倉庫.

二. mavenDeployer發布插件

下面介紹一下利用mavenDeployer發布在本地倉庫.

1. 引入 mavenDeplayer插件

修改cooker-plugin的build.gradle, 修改后如下:

apply plugin: 'groovy'
//添加maven plugin, 用于發布我們的jar
apply plugin: 'maven'

dependencies {
    compile gradleApi()
    compile localGroovy()
}

repositories {
    mavenCentral()
}

//設置maven deployer
uploadArchives {
    repositories {
        mavenDeployer {
            //設置插件的GAV參數
            pom.groupId = 'com.helen.plugin'
            pom.artifactId = 'cooker-plugin'
            pom.version = 1.0 
            //文件發布到下面目錄
            repository(url: uri('../release'))
        }
    }
}

2.用uploadArchices發布

運行uploadArchives. 就能在設置的倉庫路徑中生成 cooker-plugin了

三. 使用gradle plugin

1.在build.gradle引入 cooker-plugin

apply plugin: 'com.android.application'
//使用cooker-plugin
apply plugin: 'cooker-plugin'

buildscript {
    repositories {
        maven {
            //cooker-plugin 所在的倉庫
            //這里是發布在本地文件夾了
            url uri('../release')
        }
    }
    dependencies {
        //引入cooker-plugin
        classpath 'com.helen.plugin:cooker-plugin:1.0'
    }
}

2. 我們編譯App的時候,cooker-plugin就會介入了

每次clean/build時, 在Gradle Console可以看到我們的log

hello, this is cooker plugin!

Configuration on demand is an incubating feature.
hello, this is cooker plugin!
Incremental java compilation is an incubating feature.
:app:preBuild UP-TO-DATE

3.使用cooker-plugin中定義的task

前面demo中, 我們新建了一個task: cooker-test-task , 他簡單輸出一句log.下面測試運行一下這個task.

在控制臺輸入  gradle cooker-test-task 運行結果如下 

四. 總結

Demo地址-Github : 

https://github.com/helen-x/gradle-plugin-demo

到此為止, 自定義Gradle plugin就介紹完了.

結合AndroidStudio, 自定義Gradle plugin可以完成很多功能. 

比如cooker的plugin完成了:

1)添加編譯依賴

2)進行Aspecj編譯

3)自動生成混淆配置

 

 

來自:http://mp.weixin.qq.com/s/HJyYMGmVIpblJXJNKK1JTw

 

 本文由用戶 LisHemmant 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!