Gradle-自定义plugin

Gradle 自定义Plugin插件之上传APK到蒲公英 在之前的文章:Gradle 自定义Plugin插件介绍 中,介绍了通过Gradle自定义插件的几种方式。 作为一个的Coder,我们当然不希望我们自定义插件只是简单的打印log啦。比如,之前我们版本开发完成的时候,每次测试的流程都需要手动的打包,加固,上传,钉钉通知等等 。 现在,我们就通过自定义插件来实现一个打包完成后,自动上传到蒲公英的插件。 首先,在自定义这个插件的时候,我们需要弄明白几个问... 阅读详情

为什么要学习Gradle

Gradle目前已经应用于多个Android开发的技术体系中,比如构建系统、插件化、热修复和组件化,如果不了解Gradle,那么对于上述技术体系的了解会大打折扣

上述一段文字是比较传统的解释,我开始系统的学习gradle是因为,项目由于引入了组件化的开发模式,模块之间的通信就需要引入一种新的方式,之前一直使用的是SPI,但是在service比较多的时候会影响到冷起的时长(性能的瓶颈),于是就想到了使用apt和transform来实现。

Gradle Transform是Android官方提供给开发者在项目构建阶段由class到dex转换期间修改class文件的一套api。
要使用Transorm,首先需要自定义plugin

自定义Plugin

创建plugin工程

图一.png

2.png

3.png

4.png

5.png

  1. 首先创建一个Libray(Android Studio不支持穿件Plugin的工程),名字按照Plugin的功能起一个。
  2. 删除多余的文件
  3. 修改build.gradle文件,支持Plugin的工程。
  4. 创建如图4所示的目录,这里有几点需要说明一下
    • MyPlugin.groovy不是.java文件,这里也直接创建java文件,然后修改后缀名,groovy是支持Java语言的(所以说Groovy的学习成本不是很大,感兴趣可以在网上搜索一下)
    • resources目录下的META-INF.gradle-plugins的顺序不能错。
    • com.knight.plugin.test(ps:图片中的字母写错了,项目中已改)就是你的plugin名称

到目前为止,就完成了一个Plugin的工程,接下来使用自定义的plugin实现一个小功能,删除项目中所有的Log日志(这个只是测试,真正项目开发中是不会用到)

发布自定义的plugin到本地仓库

6.png

7.png

8.png

9.png

10.png

11.png

  1. 首先配置myplugin的module下的build.gradle,支持upload
  2. 然后点击task中的uploadArchives或者在命令行中输入./gradlew :myplugin:uploadArchives来执行task
  3. 编译成功后会在根目录中出现一个repo目录,如图8所示
  4. 然后配置project的build.gradle,如图9所示,配置app的module中的build.gradle,如图10所示
  5. 在命令行中输入./gradlew assembleDubug就能看到图11的结果,说明我们自定义的plugin,成功用到项目中了。

自定义删除Log语句的plugin

这个功能只是为了小试牛刀,并没有什么卵用,大家可以看看。

11.png

13.png

14.png

15.png

  1. 这是源文件,是有一大堆log的代码
  2. 执行./gradlew assembleDebug,可以看日志,已经执行了我们的plugin
  3. 再看源文件,log日志已经没有了
  4. 多加了几个类,这几个类就不详细讲了,如果感兴趣的同学可以下载源码看看。

Demo

Android Gradle 自定义Plugin实现_android plugin 而 Gradle 改良了过去 Maven、Ant 带给开发者的问题,至今也成为 Android Studio 内置的封装布署工具。 阅读详情

相关推荐

gradle-apt-plugin:Java注解处理器工具的Gradle插件

未积极维护 该项目不再积极维护,感谢使用它/提供反馈/提交 PR 的每个人。 如果您在 Android 项目中使用它,请查看。 如果您在 java 项目中使用它,则更改是它可以工作但不会再更新。 随意 fork 并为其添加更多功能! Gradle Apt 插件 Java 注释处理器工具的 Gradle 插件。 用法 将插件添加到buildscript的dependencies并添加 Sonatype 的快照存储库以便能够下载它: buildscript { dependencies { repositories { maven { url " https://oss.sonatype.org/content/repositories/snapshots/ " } .. . }

插件打包流程优化(自定义Gradle Task)

最近在做一些项目的优化,其中有一项就是对打包插件包的流程优化,本篇文章就是记录一下在优化过程中自己做的事情,并给出遇到问题的一个解决方案。通过这篇文章读者能够了解到如何自定义Task,并且通过Task如何解决实际的项目问题。(PS:本篇文章不对Gradle Task做很详细的介绍,如果对Task不是很了解可以通过 Android Gradle 自定义Task 详解 这篇博文做详细的了解。) ...

xiaoguidan159的博客 2074

Streamlit安装避坑指南:从零到一键启动你的第一个数据可视化应用

本文提供了一份详尽的Streamlit安装避坑指南,帮助用户从零开始快速启动第一个数据可视化应用。文章深入剖析了安装过程中常见的网络超时、依赖冲突、环境变量缺失等核心问题,并给出了使用虚拟环境、配置国内镜像源、利用.whl文件离线安装等多种经过验证的解决方案,确保安装过程顺畅无阻。

weixin_29065015的博客 614

Gradle Plugins基本使用方法

Gradle Plugins 一、plugin 的基本写法 直接在build.gradle 中,声明一个Groovy 类继承 Plugin,并执行该任务 class MyTask implements Plugin<Project> { @Override void apply(Project project) { println 'hello' } } apply plugin: MyTask 使用跟build.gradle 中的 androi

weixin_41783034的博客 4265

Win11系统下Notepad++右键菜单失效?3种修复方法实测有效(附注册表备份指南)

本文针对Windows 11系统中Notepad++右键菜单失效的常见问题,提供了三种经过实测有效的修复方法。核心解决方案包括使用官方NppShell.dll重新注册、手动修复注册表项以及系统级问题排查,并详细说明了操作前的注册表备份指南,确保修复过程安全可靠。

m2n3b4v5c6的博客 328

LED单元板驱动(HUB75接口)

开始之前先吐槽一下,搜这个的资料。要么都是Arduino,要么单片机的收费。小小的一个LED单元板,凭什么? 用Arduino是你速度快还是我ST,树莓派不好用?收费更离谱,这点东西还藏私?给你个中指凸。把原理都写出来看你怎么收费。 一、接口定义及原理 如图,有两个RGB通道,共占用6个IO。剩下的ABCDE为地址通道,LAT为行数据锁存通道,CLK为数据时钟,OE为低电平使能LED显示。图片这里没有E,证明它是16扫的,有E就会把B上面的地改为E。这样就是5位,2的5次方32扫。1.

a3748622的博客 3万+

Gradle for Android-创建task和plugin

迄今为止,我们已经为gradle build手动编辑了属性和学习了如何运行task。本章节中,我们将会对这些属性进行深度理解,并开始创建我们自己的task。一旦我们知道如何书写自己的task,便可更进一步,了解如何制作我们自己的可以在几个项目中重用的plugin。在了解如何创建自定义task前,需要学习一些重要的Groovy概念。因为对Goovy如何工作有个基本的理解使得自定义task和plugin

Chaos的专栏 4513

KMS服务器一键部署与激活实战指南

本文详细介绍了KMS服务器的一键部署与激活实战指南,包括快速入门、安装步骤、服务管理技巧及常见问题排查。特别针对Windows和Mac用户提供了Office激活的具体操作步骤,并分享了高级配置与优化方案,帮助IT管理员高效管理批量授权激活。

weixin_29305313的博客 459

Gradle 自定义Plugin插件介绍

Android studio通过Gradle来构建我们的项目。一般情况下,我们只是使用Gradle来配置一些功能,比如,buildTypes,productFlavors等等。 实际上,Gradle提供了很多有用的功能,可以让我们更加方便的管理我们的项目。 这篇,我们介绍下Gradle的Plugin插件。 官方介绍 Gradle的plugin插件,有三种方式: 一,Build script 简单...

蜗牛快跑 7571

C# 固高板卡(总线型) 操作类

主要功能有:初始化,轴使能,正负方向手动移动,回0,点到点移动,等待移动完成,输入IO数据读取,输出IO控制,清除报警等功能。

StevenChen的博客 571

【实现100个unity特效之4】Unity ShaderGraph使用教程与各种特效案例(2023/12/1更新)

ShaderGraph是Unity中的一个可视化工具,用于创建和编辑图形着色器。其意义在于简化编写复杂着色器的过程,减少对具体编程语言的依赖,使艺术家和设计师可以更方便地创建各种美术效果。使用ShaderGraph可以通过图形界面设置着色器属性,包括颜色、纹理、光照等,并在视窗预览中即时显示结果,从而快速迭代和调整着色器。使用ShaderGraph需要先安装Unity 2018.1或以上版本,并添加ShaderGraph插件。打开ShaderGraph面板后,可以通过拖放节点并连接它们来创建着色器。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 4万+

自定义Gradle Plugin

一、编写插件 下面我们用一个示例来介绍如何自定义Gradle插件。该插件的功能非常简单,仅仅是定义了一个Task然后打印一条日志信息。 详细步骤: 第1步:新建一个项目(Project)在新建的空项目中,会自动包含一个主module,即:app。 第2步:创建plugin module创建Android Library module,module名称叫plugin,我们将会用这个Library写Gradle Plugin; 第3步:创建plugin需要的目录结构 首先删除plugin/src

geyuecang的博客 661

37.华为路由器:loopback(本地回环)接口的作用

本地环回接口(或地址),亦称回送地址(loopback address)。 此类接口是应用最为广泛的一种虚接口,几乎在每台路由器上都会使用。常见于如下用途: 1 作为一台路由器的管理地址 系统管理员完成网络规划之后,为了方便管理,会为每一台路由器创建一个loopback 接口,并在该接口上单独指定一个IP 地址作为管理地址 ,管理员会使用该地址对路由器远程登录(telnet ),该地址实际上起到了类似设备名称一类的功能。 但是通常每台路由器上存在众多接口和地址,为何不从当中随便挑选一个呢 ? 原因如下:由于

迷逝 3万+

gradle 自定义plugin

gradle 自定义plugin

qq_21159963的博客 1108

STM32串口控制LED灯的亮灭

STM32中的串口控制LED灯的亮灭,分为两种方式,一种是直接发送数字0和1来控制灯的亮灭,另一种是通过发送字符串来控制。 我所使用的开发板主控芯片是STM32F401RET6,主频84MHz, 首先要进行串口的初始化: /* 函数功能:串口的初始化 函数名:Usart_Init 返回值:无 参数:u32 brr 备注: USART1_TXD->PA9 USART1_RXD->PA10 */ void Usart_Init(u32 brr) { float div; u16 div

博客 2万+

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Gradle 自定义 plugin

学习完毕 Gradle 的基础知识,不来点实战,感觉就像没有学习过啊。那我们就搞一搞实战,一共两个简单的操作。第一,写一个自定义 Plugin。第二,写一个自定义 Transform。 自定义 Plugin 网上一般都会说三种方法是去创建,咱们就不来那么多虚的,来个一劳永逸的吧,我们直接新建一个工程来写,这个会了,新建 Library 工程 和在 build.gradle 中的这两种方式相信你也就...

weixin_33778778的博客 741

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Gradle学习系列之十——自定义Plugin

Gradle学习系列之之十——自定义Plugin 在Plugin中,我们可以向Project中加入新的Task,定义configurations和property等。我们3种方法可以自定义Plugin,这些方法和自定义Task类型的3种方法相似。 在接下来的例子中,我们将分别通过这3种方法来创建一个DateAndTimePlugin,该Plugin定义了2个Task,分别用于输出系统当前的日期和时间,另外,我们可以配置日期和时间的输出格式。 (一)在build.gradle文件中直接定义Plugin 和在b

Ryze 533

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Gradle进阶计划(三)自定义Gradle Plugin

上一篇文章Gradle进阶计划(二)Gradle Plugin原理分析,我们介绍了 Gradle Plugin 的原理,并且对于主要的 Task 进行了详细的分析。这篇文章我们研究一下如何自己写一个Gradle Plugin。 一、自定义Task 在学习自定义 Gradle Plugin 之前,我们先学习一下如何自定义 Task。 相较于自定义 Gradle Plugin,自定义Task实现更加的简单。同时,它又是自定义 Gradle Plugin...

Fighting_初心的博客 1202

不得不学之「 Gradle」 ⑥ 自定义 plugin

学习完毕 Gradle 的基础知识,不来点实战,感觉就像没有学习过啊。那我们就搞一搞实战,一共两个简单的操作。第一,写一个自定义 Plugin。第二,写一个自定义 Transform。 自定义 Plugin 网上一般都会说三种方法是去创建,咱们就不来那么多虚的,来个一劳永逸的吧,我们直接新建一个工程来写,这个会了,新建 Library 工程 和在 buil...

Mr.SSY的博客 409

Gradle学习系列之十——自定义Plugin(本系列完)

在Plugin中,我们可以向Project中加入新的Task,定义configurations和property等。我们3种方法可以自定义Plugin,这些方法和自定义Task类型的3种方法相似。在接下来的例子中,我们将分别通过这3种方法来创建一个DateAndTimePlugin,该Plugin定义了2个Task,分别用于输出系统当前的日期和时间,另外,我们可以配置日期和时间的输出格式。

Capricornlg的专栏 1041

gradle 7.x 如何开发一个自定义 Plugin

这里我还是使用 buildscript 的方式引入(因为对 gradle 不熟悉),起码能 work 起来,有什么好的建议可以提给我,感激不尽。执行成功后,我们会看到,在我们的项目目录下,会创建 repo 目录,里面有我们的包名的路径和里面的 jar 文件。在 settings.gradle 中,添加本地仓库,注意,是往 PluginManagement 中添加仓库。再 sync 一下,我们会看到控制台输出了我们的那句话,说明我们的插件引入成功了。商业转载请联系作者获得授权,非商业转载请注明出处。

chuyouyinghe的专栏 183

Gradle自定义Plugin插件和ASM修改字节码

前言 先介绍一下 AOP 和 ASM 的概念,AOP 是一种面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。和面向对象编程 的 OOP 相同。ASM 是一个框架可以看作 AOP 的工具,当然 AOP 也有其他工具,比如用的比较多的 AspectJ 、Javassist 、Xposed 和 Dexposed 等。 这里我们主要介绍一下在自定义Plugin 使用的 ASM...

stven_king的专栏 1754

写Gradle自定义插件Plugin

Gradle插件支持groovy、java、kotlin语言,根据使用的语言,我们需要把插件代码分别放到下面几个对应的目录: rootProjectDir/buildSrc/src/main/groovy rootProjectDir/buildSrc/src/main/java rootProjectDir/buildSrc/src/main/kotlin 这里以java语言为例,写个自定义插件 1、新建项目,然后创建名称为buildSrc的module(注意,module的名称必须是buildSrc)

sqf251877543的博客 2574
上一篇: 优雅的使用Kotlin
下一篇: 轻量级的MVVM
Bobby_lyc
博客等级 码龄16年 1164粉丝 89原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值