不得不學之「 Gradle」 ⑤ Gradle 外掛

Mr.S發表於2019-04-04

一、外掛的作用

首先學習這個之前,明確一下,啥是外掛? 外掛的定位是開發實現原純淨系統平臺、應用軟體平臺不具備的功能的程式。

打個比方吧,本來賣房,是售樓處和客戶的關係,但是有了中介和兩者對接,這個中介就是售樓處的外掛,符合不同售樓處的規定,提供售樓處沒有的功能,比如樹一個小黑板,寫上 xxx樓xx錢。密密麻麻的。

二、外掛的作用

外掛分為兩種:

  • 應用二進位制外掛
  • 應用指令碼外掛

1、 二進位制外掛

就是實現了 org.gradle.api.Plugin 介面的外掛。他們可以用 plugin id。比如:

apply plugin: 'java'
複製程式碼

說實話真的長見識了。以前知不知道還有這麼一回事,就知道應該這麼寫,不知道為什麼要這麼寫。然後它對應的型別是 org.gradle.api.plugins.JavaPlugin 。我們也可以這麼寫:

apply plugin:org.gradle.api.plugins.JavaPlugin
apply plugin: JavaPlugin
複製程式碼

上面是書中所寫,我們用到的更多的是:

apply plugin: 'java-library'
apply plugin: 'com.android.library'
apply plugin: 'com.android.application'
複製程式碼

型別應該差不多吧。意思類似。 二進位制外掛一般都是打包在一個 jar 中,獨立釋出的,我們自定義自己的外掛,再發布的時候可以為其指定 plugin id。最好是個全限定名,避免重複。

2、應用指令碼外掛

在 build.gradle 中引用 version.gradle

apply from 'version.gradle'
task taskA{
    doLast{
       println 'App 版本:${versionName},版本號是${versionCode} ' 
    }
}
複製程式碼

在 version.gradle 中

ext{
    versionName = '1.0.0'
    versionCode = 1
}
複製程式碼

和二進位制外掛不同的是關鍵字用的「from」。後面可以跟一個指令碼檔案,可以是本地,也可以是網路的。網路的需要用 HTTP URL。

那這個是用在哪裡呢?這個就需要大專案或者模組化的專案裡才能看到。所以平臺很重要。我們可以把龐大的指令碼檔案進行分塊,分段整理,拆成一個個公用,職責分明的檔案。然後用 apply from 來引用他們。比如我們可以把常用的函式放到 util.gradle 指令碼中,供其他指令碼引用。比如上面的例子,我們把版本資訊放到 version.gradle 供其他 gradle 來引用和使用。來一個超級好的程式碼,讓大家看看人家是如何運用的。

不得不學之「 Gradle」 ⑤ Gradle 外掛

不得不學之「 Gradle」 ⑤ Gradle 外掛

3、應用第三方釋出的外掛 第三方釋出的 jar 的二進位制外掛,我們在應用的時候,必須在 buildscript{}中進行配置它的 classpath 才能使用,我們的 Android Gradle 也是一個第三放外掛,所以要進行配合一下。

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.1.0'
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}
複製程式碼

配置好這個之後 才可以用下面這個程式碼。如果沒有配置 classpath,那麼就會提示找不到這個外掛。

apply plugin: 'com.android.application'
複製程式碼

三、自定義外掛

apply plugin:ExHellowPugin

class ExHellowPugin implements Plugin<Project>{
	void apply(Project project){
		project.task('exHellowTask'){
			doLast{
				println '我是 自定義 外掛建立的任務'
			}
		}
	}
}
複製程式碼

不得不學之「 Gradle」 ⑤ Gradle 外掛

自定義外掛必須時間 Plugin 介面,只有一個 apply 方法。這個方法在外掛被應用的時候執行。裡面去做我們想要做的事情。

劃重點: 本文是完全參考 《Android Gradle 權威指南》而寫,作為學習筆記使用。

相關文章