写点什么

自定义 Gradle 插件的开发

用户头像
Android架构
关注
发布于: 5 小时前

implementation 'com.android.tools.build:gradle:3.4.2'


implementation 'org.ow2.asm:asm:7.1'


implementation 'org.ow2.asm:asm-commons:7.1'


}


group='com.fred.asm.plugin'


version='1.0.0'


uploadArchives {


repositories {


mavenDeployer {


//本地的 Maven 地址设置


repository(url: uri('../asm_plugin_repo'))


}


}


}


这一波操作完了,我们的插件 module 便完成了,其结构如下:



需要注意


  • 图片中的META-INF.gradle-plugins是 android studio 折叠后的显示效果,其对应的物理路径是META-INF/gradle-plugins, performance.methodstat.properties文件必须是要在src/main/resources/META-INF/gradle-plugins目录下。


与此同时,我们双击执行 android studio 右侧的uploadArchivestask, 如下:



便会生成一个本地仓库,将打好的 jar 包放到这个目录下。



使用插件




在我们的应用的build.gradle文件中,我们需要引入这个插件:


  1. 设置依赖库


buildscript {


repositories {


google()


jcenter()


//自定义插件 maven 地址


maven { url '../asm_plugin_repo' }


}


dependencies {


//加载自定义插件 group + module + version


classpath 'com.fred.asm.plugin:asm-tool:1.0.0'


}


}


  1. 添加插件 apply plugin: 'performance.methodcost'


还记得我们上面插件开发的时候有src/main/resources/META-INF/gradle-plugins目录下有一个performance.methodstat.properties文件不,这里的 apply plugin: {pluginId}, {pluginId}便是和上面的performance.methodstat.properties文件相对应。


3.当我们编译应用时如执行assembleDebug, 可以看到控制台会打印出plugin execute



再来用 java 写一次




我们知道 Groovy 也是 JVM 类的语言,它能做的事,java 也可以,我们来用 java 写一次。还是一样:


  1. 新建一个 Android library 类型的 module, 删掉src目录下的androidTest,?test目录。

  2. src/main/java目录下,新建一个包com.fred.asm, 注意这是 java 的包结构,对应到物理目录便是src/main/java/com/fred/asm

  3. src/main/java/com/fred/asm下新建一个 java 类MethodStatPlugin.java和上面用groovy写时是一样的命名,这样我们的src/main/resources/META-INF/gradle-plugins下的配置,还有 pluginId 都可以保持一致。

  4. MethodStatPlugin.java中写入如下代码:


public class MethodStatPlugin implements Plugin<Project> {


@Override


public void apply(Project target) {


System.out.println("plugin execute [write by java]");


}


}


  1. 同样用uploadArchives编译, 打包,上传插件到本地仓库

  2. 再重新编译一下使用插件的模块,可以看到控制台输出了plugin execute [write by java], 插件应用成功



采用buildSrc简化开发




先来了解一下什么是 buildSrc?当我们需要写一些插件的时候,可以在 Android Studio 中创建一个buildSrc的 module, 一个 android 工程中该 module 只能有一个。


  • Gradle 在编译某个 module 时,会先编译buildSrc这个项目, 并配置到 classpath 下

  • 如果buildSrc是一个插件项目,Gradle 默认会自动配置该 Gradle 插件,在项目中直接apply开发的插件即可。

开发步骤

  1. 用 Android studio 新建一个 java 类型的 module, 并命名为buildSrc(名字必须得是这个)

  2. 修改build.gradle添加相关的依赖,如下:


apply plugin: 'java-library'


repositories {


maven { url 'https://jitpack.io' }


maven {


url 'http://maven.aliyun.com/nexus/content/groups/public/'


}


google()


jcenter()


}


dependencies {


//添加 gradle 版本


implementation 'com.android.tools.build:gradle:3.4.2'


//添加 gradle 对应 api


imple


《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》
浏览器打开:qq.cn.hn/FTe 免费领取
复制代码


mentation gradleApi()


}


  1. 编写插件

用户头像

Android架构

关注

还未添加个人签名 2021.10.31 加入

还未添加个人简介

评论

发布
暂无评论
自定义Gradle插件的开发