Gradle Plugin
雖然不常用 起碼要看懂
-
resources/META-INF/gradle-plugins 這個(gè)文件夾結(jié)構(gòu)是強(qiáng)制要求的,否則不能識(shí)別成插件。
implementation-class=com.tencent.matrix.plugin.MatrixPlugin
在Gradle插件開發(fā)中,所有的插件都要繼承
org.gradle.api.Plugin接口,并且需要重寫void apply(Project project) 方法,這個(gè)方法將會(huì)傳入使用這個(gè)插件的 project 的實(shí)例,這是一個(gè)重要的 context。- image-20181226112314229.png
create的第一個(gè)參數(shù)matrix是我們自定義配置的DSL名字,第二個(gè)參數(shù)是參數(shù)類的名字
通過matrix這個(gè)DSL這個(gè)名字,我們可以任意的改變參數(shù)類中相應(yīng)字段的值。這樣就帶來了很大的便利。
-
Gradle腳本的執(zhí)行分為三個(gè)過程:
初始化 :分析有哪些module將要被構(gòu)建,為每個(gè)module創(chuàng)建對(duì)應(yīng)的 project實(shí)例。這個(gè)時(shí)候settings.gradle文件會(huì)被解析。
配置:處理所有的模塊的 build 腳本,處理依賴,屬性等。這個(gè)時(shí)候每個(gè)模塊的build.gradle文件會(huì)被解析并配置,這個(gè)時(shí)候會(huì)構(gòu)建整個(gè)task的鏈表(這里的鏈表僅僅指存在依賴關(guān)系的task的集合,不是數(shù)據(jù)結(jié)構(gòu)的鏈表)。
執(zhí)行:根據(jù)task鏈表來執(zhí)行某一個(gè)特定的task,這個(gè)task所依賴的其他task都將會(huì)被提前執(zhí)行.
- image-20181226112735974.png
配置完了以后,有一個(gè)重要的回調(diào)project.afterEvaluate,它表示所有的模塊都已經(jīng)配置完了,可以準(zhǔn)備執(zhí)行task了;
- Gradle Transform是Android官方提供給開發(fā)者在項(xiàng)目構(gòu)建階段即由class到dex轉(zhuǎn)換期間修改class文件的一套api。目前比較經(jīng)典的應(yīng)用是字節(jié)碼插樁、代碼注入技術(shù)

