自定义 Gradle 插件的开发
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 右侧的uploadArchives
task, 如下:
便会生成一个本地仓库,将打好的 jar 包放到这个目录下。
使用插件
在我们的应用的build.gradle
文件中,我们需要引入这个插件:
设置依赖库
buildscript {
repositories {
google()
jcenter()
//自定义插件 maven 地址
maven { url '../asm_plugin_repo' }
}
dependencies {
//加载自定义插件 group + module + version
classpath 'com.fred.asm.plugin:asm-tool:1.0.0'
}
}
添加插件
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 写一次。还是一样:
新建一个 Android library 类型的 module, 删掉
src
目录下的androidTest
,?test
目录。在
src/main/java
目录下,新建一个包com.fred.asm
, 注意这是 java 的包结构,对应到物理目录便是src/main/java/com/fred/asm
在
src/main/java/com/fred/asm
下新建一个 java 类MethodStatPlugin.java
和上面用groovy
写时是一样的命名,这样我们的src/main/resources/META-INF/gradle-plugins
下的配置,还有 pluginId 都可以保持一致。MethodStatPlugin.java
中写入如下代码:
public class MethodStatPlugin implements Plugin<Project> {
@Override
public void apply(Project target) {
System.out.println("plugin execute [write by java]");
}
}
同样用
uploadArchives
编译, 打包,上传插件到本地仓库再重新编译一下使用插件的模块,可以看到控制台输出了
plugin execute [write by java]
, 插件应用成功
采用buildSrc
简化开发
先来了解一下什么是 buildSrc?当我们需要写一些插件的时候,可以在 Android Studio 中创建一个buildSrc
的 module, 一个 android 工程中该 module 只能有一个。
Gradle 在编译某个 module 时,会先编译
buildSrc
这个项目, 并配置到 classpath 下如果
buildSrc
是一个插件项目,Gradle 默认会自动配置该 Gradle 插件,在项目中直接apply
开发的插件即可。
开发步骤
用 Android studio 新建一个 java 类型的 module, 并命名为
buildSrc
(名字必须得是这个)修改
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
mentation gradleApi()
}
编写插件
评论