一、外掛的作用
首先學習這個之前,明確一下,啥是外掛? 外掛的定位是開發實現原純淨系統平臺、應用軟體平臺不具備的功能的程式。
打個比方吧,本來賣房,是售樓處和客戶的關係,但是有了中介和兩者對接,這個中介就是售樓處的外掛,符合不同售樓處的規定,提供售樓處沒有的功能,比如樹一個小黑板,寫上 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 來引用和使用。來一個超級好的程式碼,讓大家看看人家是如何運用的。
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 '我是 自定義 外掛建立的任務'
}
}
}
}
複製程式碼
自定義外掛必須時間 Plugin 介面,只有一個 apply 方法。這個方法在外掛被應用的時候執行。裡面去做我們想要做的事情。
劃重點: 本文是完全參考 《Android Gradle 權威指南》而寫,作為學習筆記使用。