AndroidStudio自定义GradlePlugin
2023年7月3日发(作者:)
AndroidStudio⾃定义GradlePluginAndroid Gradle PluginAndroid Gradle Plugin 有两种形式1. 直接在/创建中开发2. 实现Plugin重写build 过程这⾥讲解怎么开发⾃定义插件⾸先创建Gradle Plugin ⼯程为了⽅便测试先创建⼀个Android ⼯程,然后创建⼀个Android library Module⼯程创建module创建module删除如图中箭头所指⽬录和⽂件删除⽆效⽬录删除⽆效⽬录中改成groovy⽅式 apply plugin: 'groovy' dependencies { compile gradleApi() compile localGroovy() }⾃定义Gradle Plugin,在main⽬录下创建groovy⽬录,这个⽬录下创建创建⾃⼰的代码以删除log⽇志为例Groovy 项⽬结构1.继承 gra1.继承 gradlePlugin,类的后缀不再是.java⽽是.gro⽽是.groovyclass DelLogPlugin implements Plugin { @Override void apply(Project project) { ('dellogExtension', DelLogExtension); valuate { //在gradle 构建完之后执⾏ ("dellogExtension : " + Dir); def rootDir = ng().plus(Dir); (rootDir); (new File(rootDir)); } ('dellog', { ("dellogExtension : " + Dir); def rootDir = ng().plus(Dir); (rootDir); (new File(rootDir)); }) }}afterEvaluate是在gradle构建完后⾃动执⾏的,但task需要⼿动执⾏⼀个插件中可以创建多个Task,如代码中的dellog,可以在控制台执⾏gradle -q dellog,也可以在gradle图形界⾯执⾏图形界⾯执⾏task图形界⾯执⾏task2. 创建可以输⼊的Gradle 插件很多时候我们需要输⼊参数,然后根据参数来做处理,处理如下:(...,...); 前⾯是Name,后⾯是Model,model中在gralde script 中键对上就可以。class DelLogExtension { String sourceDir;}class DelLogPlugin implements Plugin { @Override void apply(Project project) { ('dellogExtension', DelLogExtension); ......然后在app 下的中Dir = '/src'或dellogExtension { sourceDir = '/src'}使⽤输⼊3. 在main下创建resources⽬录src/main/resources/META-INF/gradle-plugins/ties 将来作为apply plugin: xxx 插件名称,这⾥的⽬录结构不能错,先有META-INF再有gradle-plugins内容:`implementation-class=Plugin(继承Plugin的类,插件的⼊⼝类)`4. 发布到本地仓库在当前lib项⽬中增加maven⽀持apply plugin: 'maven'repositories { mavenCentral()}然后增加对应的maven deployer//设置maven deployeruploadArchives { repositories { mavenDeployer { //设置插件的GAV参数 d = '' ctId = 'dellog' n = '1.0.0' //⽂件发布到下⾯⽬录 repository(url: uri('../repo')) } }}这⾥设置发布到上⼀个⽬录的repo中,同时可以查看gradle task中有⼀个名为uploadArchives的task发布到本地task发布到本地task执⾏就能在repo中查看到相应jar包查看本地仓库查看本地仓库5. 使⽤本地仓库在project 的 中buildscript中增加本地仓库地址buildscript { repositories { jcenter() maven { url uri("/repo") } } dependencies { classpath ':gradle:2.2.2' classpath ':dellog:1.0.0' // NOTE: Do not place your application dependencies here; they belong // in the individual module files }}然后在app 的中增加pluginapply plugin: ''所有这些配置正确后同步项⽬可在Gradle Console查看到⽇志github demgithub demoo
发布者:admin,转转请注明出处:http://www.yc00.com/news/1688380768a129391.html
评论列表(0条)