關於Android Gradle你須要知道這些(3)

前言

經過上兩篇文章,咱們大概知道了Groovy,Gradle在Android項目構建中的一些基本的配置和其做用,接下來就是咱們真正實踐的時刻,咱們經過一個簡單的插件的實現,來將前兩篇中的點串起來,再次回顧熟悉Groovy語言,經過一個簡單的demo跑通這個插件實現流程。建立一個插件,併發布到本地maven倉庫。而後在咱們的項目中運用咱們的插件,調用相關的task。java

Gradle插件Hello World

以前在本身學習gradle的時候,網上的資料自己相對較少,再就有些博主略過了一些細節,致使了不少博客中給出的例子,當咱們本身實際去實踐的時候,本身反倒沒法跑起來,這裏對於建立一個簡單的gradle插件,進行了步驟的切分,對於每個步驟進行較爲詳細的講解。android

  • Task

在Gradle文件中,咱們能夠根據本身的需求寫一些task,其後的參數爲task指定相應的名稱api

task("Test") {
    println("Hello world")
}
複製代碼
  • Plugin

在Build文件中,咱們能夠實現一個簡單的Gradle插件,經過實現Plugin接口,並實現其apply方法,這裏在apply方法中打印出一個Hello worldbash

class MyPlugin implements Plugin<Project> {
    @Override
    void apply(Project target) {
        println("Hello world")
    }
}
複製代碼

在Build文件中寫,顯然沒法讓其複用,若是複用,咱們就須要將其獨立出來,如何來將其寫成一個獨立的插件呢?咱們能夠經過AndroidStudio來進行插件的開發,可是因爲AndroidStudio沒有給予很好的支持,所以,可能須要咱們去手動的刪除一些文件,而後按照正常的插件目錄從新創建項目。併發

1. 建立一個Java Library Module

這裏,咱們新建一個Module,並取名firstplugin。app

默認目錄結構

2. 刪除部分文件目錄

將Java文件名稱改成groovy (由於,咱們的demo項目中不須要Java代碼,所以,能夠將其替換爲groovy。)。刪除libs目錄maven

刪除文件後

3. 構建配置

原build文件ide

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文件後,咱們在進行開發的時候,就能夠進行自動提示幫助咱們提高開發效率。gradle

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中產生的依賴。

執行該task

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中,應用到咱們的項目之中。

相關文章
相關標籤/搜索