首先學習這個以前,明確一下,啥是插件? 插件的定位是開發實現原純淨系統平臺、應用軟件平臺不具有的功能的程序。java
打個比方吧,原本賣房,是售樓處和客戶的關係,可是有了中介和二者對接,這個中介就是售樓處的插件,符合不一樣售樓處的規定,提供售樓處沒有的功能,好比樹一個小黑板,寫上 xxx樓xx錢。密密麻麻的。android
插件分爲兩種:api
一、 二進制插件bash
就是實現了 org.gradle.api.Plugin 接口的插件。他們能夠用 plugin id。好比:網絡
apply plugin: 'java'
複製代碼
說實話真的長見識了。之前知不知道還有這麼一回事,就知道應該這麼寫,不知道爲何要這麼寫。而後它對應的類型是 org.gradle.api.plugins.JavaPlugin 。咱們也能夠這麼寫:app
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。最好是個全限定名,避免重複。函數
二、應用腳本插件學習
在 build.gradle 中引用 version.gradlegradle
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 來引用和使用。來一個超級好的代碼,讓你們看看人家是如何運用的。
三、應用第三方發佈的插件 第三方發佈的 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 權威指南》而寫,做爲學習筆記使用。