Andorid Gradle插件(一)

1. Gradle

1). 資料
2). 查看所有任務(wù)
./gradlew tasks --all
  • compileDebugJavaWithJavac:編譯 java 文件
  • processDebugManifest:生成最終 AndroidManifest 文件
  • compileDebugAidl:編譯 AIDL 文件
  • packageDebug:打包成 apk
  • transformClassesAndResourcesWithProguardForRelease task雳刺,即為 release 包混淆殖蚕。

2. 插件基礎(chǔ)

1). 基本步驟
  • 創(chuàng)建Android項(xiàng)目(基于 Android Studio 3.0 版本)
  • 新建一個Java Library Module, 該module必須命名為buildSrc
  • 將src/main/java修改為src/main/groovy
  • 在groovy文件夾下嫁赏,新建xxxPlugin.groovy, 并實(shí)現(xiàn)Plugin接口, 泛型參數(shù)為Project
    注:由于 Kotlin/Java 與 groovy 的兼容棍苹,所以并非一定要創(chuàng)建 groovy 文件唤殴,也可以是 xxxPlugin.java/xxxPlugin.kt
2). 項(xiàng)目目錄結(jié)構(gòu)
項(xiàng)目目錄結(jié)構(gòu).png
3). TestGlugin.groovy
class TestPlugin implements Plugin<Project> {

    @Override
    void apply(Project project) {
        // 執(zhí)行任務(wù)
        project.task('pluginTest') {
            doFirst {
                println "mazaiting"
            }
            doLast {
                println "Hello World!"
            }
        }
    }
}
4). 應(yīng)用

在app/build.gradle文件中應(yīng)用

apply plugin: TestPlugin
5). 執(zhí)行任務(wù)

在項(xiàng)目的根目錄下運(yùn)行

gradlew pluginTest
圖1.png

3. 擴(kuò)展

需求斋攀,用戶自定義輸出內(nèi)容

1). 創(chuàng)建TestPluginExtension類
class TestPluginExtension {
    String message = 'Hello World'
}
2). 創(chuàng)建TestExtension類
class TestExtension implements Plugin<Project> {

    @Override
    void apply(Project project) {
        // 這個名稱在*.gradle文件中使用
        def extension = project.extensions.create("testExtension", TestPluginExtension)
        // 這個任務(wù)名在命令行中使用
        project.task('pluginTestExtension') {
            doLast {
                println extension.message
            }
        }
    }
}
3). 應(yīng)用

在app/build.gradle文件中應(yīng)用

apply plugin: TestExtension

testExtension {
    message 'mazaiting'
}
4). 執(zhí)行命令
gradlew pluginTestExtension
圖2.png

4. 項(xiàng)目化

1). 修改build.gradle
apply plugin: 'groovy'

dependencies {
    compile gradleApi()
    compile localGroovy()
}

gradle同步之后, External Libraries 中多出了 gradle-api/gradle-installation-beacon/groovy 庫弧哎。


圖3.png
2). 創(chuàng)建配置文件
  • 創(chuàng)建 src/main/resources/META-INF/gradle-plugins/插件名.properties雁比,例如 src/main/resources/META-INF/gradle-plugins/com.mazaiting.properties
  • properities 文件內(nèi)容改為 implementation-class=Plugin 路徑,例如 implementation-class=com.mazaiting.TestExtension
圖4.png
3). 應(yīng)用

在 build.gradle 文件中通過 apply plugin: '插件名' 引入插件 —— apply plugin: 'com.mazaiting'撤嫩。


圖5.png
4). 執(zhí)行
gradlew pluginTestExtension
5). 結(jié)果
圖6.png
6). 上傳到Jcenter

代碼下載

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末偎捎,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子序攘,更是在濱河造成了極大的恐慌茴她,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,561評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件程奠,死亡現(xiàn)場離奇詭異丈牢,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)瞄沙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,218評論 3 385
  • 文/潘曉璐 我一進(jìn)店門己沛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人距境,你說我怎么就攤上這事申尼。” “怎么了肮疗?”我有些...
    開封第一講書人閱讀 157,162評論 0 348
  • 文/不壞的土叔 我叫張陵晶姊,是天一觀的道長。 經(jīng)常有香客問我伪货,道長们衙,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,470評論 1 283
  • 正文 為了忘掉前任碱呼,我火速辦了婚禮蒙挑,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘愚臀。我一直安慰自己忆蚀,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,550評論 6 385
  • 文/花漫 我一把揭開白布姑裂。 她就那樣靜靜地躺著馋袜,像睡著了一般。 火紅的嫁衣襯著肌膚如雪舶斧。 梳的紋絲不亂的頭發(fā)上欣鳖,一...
    開封第一講書人閱讀 49,806評論 1 290
  • 那天,我揣著相機(jī)與錄音茴厉,去河邊找鬼泽台。 笑死什荣,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的怀酷。 我是一名探鬼主播稻爬,決...
    沈念sama閱讀 38,951評論 3 407
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼蜕依!你這毒婦竟也來了桅锄?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,712評論 0 266
  • 序言:老撾萬榮一對情侶失蹤样眠,失蹤者是張志新(化名)和其女友劉穎竞滓,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體吹缔,經(jīng)...
    沈念sama閱讀 44,166評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,510評論 2 327
  • 正文 我和宋清朗相戀三年锯茄,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了厢塘。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,643評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡肌幽,死狀恐怖晚碾,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情喂急,我是刑警寧澤格嘁,帶...
    沈念sama閱讀 34,306評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站廊移,受9級特大地震影響糕簿,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜狡孔,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,930評論 3 313
  • 文/蒙蒙 一懂诗、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧苗膝,春花似錦殃恒、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,745評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至问窃,卻和暖如春亥鬓,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背泡躯。 一陣腳步聲響...
    開封第一講書人閱讀 31,983評論 1 266
  • 我被黑心中介騙來泰國打工贮竟, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留丽焊,地道東北人。 一個月前我還...
    沈念sama閱讀 46,351評論 2 360
  • 正文 我出身青樓咕别,卻偏偏與公主長得像技健,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子惰拱,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,509評論 2 348

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理雌贱,服務(wù)發(fā)現(xiàn),斷路器偿短,智...
    卡卡羅2017閱讀 134,633評論 18 139
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,773評論 6 342
  • 說明 本文主要從實(shí)現(xiàn)原理和代碼層面介紹Gradle開發(fā)相關(guān)知識欣孤。關(guān)于本文中提到的、Gradle中的基本概念等內(nèi)容昔逗,...
    jzj1993閱讀 7,897評論 1 33
  • 目前為止降传,我們已經(jīng)學(xué)習(xí)了如何修改Gradle構(gòu)建屬性,以及如何運(yùn)行任務(wù)勾怒。本章婆排,我們會深入了解這些屬性,并且創(chuàng)建我們...
    sollian閱讀 2,602評論 0 8
  • 原文鏈接 前言 網(wǎng)上關(guān)于Gradle的教程很多笔链,但很多都是以“面”切入— 通過大量講解其用法及其API分類來闡述段只。...
    adison閱讀 2,759評論 7 67