日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Gradle插件学习笔记(二)

發布時間:2025/3/8 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Gradle插件学习笔记(二) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

之前介紹了Gradle插件的開發,這次會對功能進行一部分拓展,建議沒有讀過第一篇文章的朋友,先看一下Gradle插件學習筆記(一)


Extension

之前的文章提到過,如何編寫一個插件,但是并不能通過外面傳遞參數進來,如果想使用一些自定義的參數可以使用Extension,我們可以再建立一個MyExtension.groovy

class MyExtension {def aaa;def bbb;} 復制代碼

然后找到插件類(可以參考上一篇文章):

public class TestPlugin implements Plugin<Project> {@Overridevoid apply(Project project) {project.extensions.create("deep", MyExtension)project.afterEvaluate {MyExtension extension = project['deep'];String a = extension.aaaString b = extension.bbbprintln("deep:${a},${b}")}} } 復制代碼

Project本身是支持拓展的,所以提供了create方法,project.extensions.create("deep", MyExtension)這句代碼的意思是將我們的自定義的類作為Project的一個屬性值,key是deep。

這里在普及一個小知識,項目中gradle執行的時候,會先解析setting.gradle,然后是build.gradle,如果想在解析build.gradle之前做點事,可以使用project.beforeEvaluate如果想在解析build.gradle之后做點事可以project.afterEvaluate。

所以我們在解析完build.gradle之后,在訪問project中我們設置的屬性,即可得到build.gradle中設入的值。 來看個例子(其中hhh就是我們寫的插件名字,這個上篇文章提到過):

apply plugin: 'hhh' deep{aaa="this is a"bbb="this is b" } 復制代碼

執行任務打印:

android

通過上面的例子,我想到了正經的android工程不是也是這樣配置的嗎,我們可以測試一下。 都知道android工程中的project,樣式如下:

android {compileSdkVersion 26buildToolsVersion "26.0.3"defaultConfig {applicationId "deep.com.testgroovy"minSdkVersion 14targetSdkVersion 26versionCode 1versionName "1.0"} }復制代碼

這些不都是project的一個拓展類嗎?我們可以測試一下,修改插件:

@Overridevoid apply(Project project) {project.afterEvaluate {println("包名:"+project['android']["defaultConfig"].applicationId)} 復制代碼

我取project下的android,然后再取android下的defaultConfig,就可以得到包名,執行一下看看:

果然可以獲取包名,同理,在打包的時候可以拿到更多的設置信息。

總結

好了今天有點時間,先寫這么多吧,下篇文章具體說一下如何干預android編譯 也歡迎關注我的公眾號,之后會推薦更多好用的組件庫。

總結

以上是生活随笔為你收集整理的Gradle插件学习笔记(二)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。