[第一步]
使用Android Studio新建一个项目, 命名为PluginDemo
[第二步]
新建一个模块
可选择的模块类型是:Phone & Tablet Module
或者 Android Library
,命名为plugindemo
[第三步]
删除plugindemo模块中多余的文件
只保留 src/main
和 build.gradle
[第四步]
在main目录下新建groovy文件夹和resources文件夹
groovy文件夹中新建包名com.nobug.plugintest
resources文件夹中新建META-INF
,在META-INF
文件夹中新建gradle-plugins
[第五步]
定义插件
在com.nobug.plugintest
下新建插件类
package com.nobug.plugintest;
import org.gradle.api.Plugin;
import org.gradle.api.Project;
/**
* 插件测试
*/
public class PluginTest implements Plugin<Project> {
@Override
public void apply(Project project) {
def log = project.logger;
log.error("test11111111111111111");
}
}
目录结构如下:
图片.png[第六步]
在gradle-plugins中添加配置文件
在gradle-plugins
目录下,新建配置文件com.plugin.test.properties
此配置文件的格式是.properties
, com.plugin.test
表示插件名称,工程中自带的插件
apply plugin: 'com.android.application'
com.android.application
就是插件名称。
配置文件的目录结构如下:
图片.png在配置文件中执行插件的路径:
implementation-class=com.nobug.plugintest.PluginTest
图片.png
[第七步]
编写build.gradle
apply plugin: 'groovy'
apply plugin: "maven"
dependencies {
implementation gradleApi()
implementation localGroovy()
}
repositories {
mavenCentral()
}
uploadArchives {
repositories {
mavenDeployer {
pom.groupId = 'com.nobug'
pom.artifactId = 'plugintest'
pom.version = 1.0
// maven本地仓库的目录
repository(url: uri('../PluginTest'))
}
}
}
uploadArchives
以上代码为固定代码, uploadArchives
中的代码根据需求而定,其中url指定了maven的远程仓库或者本地仓库,本例中以本地仓为例, “../” 的意思是项目的根目录。
[第八步]
上传插件
在gradle tasks中找到uploadArchives task, 双击执行它,将插件上传到“../PluginTest”中,之后就会在项目的根目录中九可以找到对应的插件(上传插件之前别忘了先clean下),如图:
图片.png注意插件的路径,插件的路径为com.nobug.plugintest.1.0
,就是在build.gradle中定义的:
pom.groupId = 'com.nobug'
pom.artifactId = 'plugintest'
pom.version = 1.0
将groupId、artifactId、version拼接在一起。
[第九步]
在项目根目录下配置插件
在项目的根目录指定插件目录
// 指定插件的maven目录
maven{url uri('PluginTest')}
以及添加插件的依赖:
classpath "com.nobug:plugintest:1.0"
完成的配置代码是:
buildscript {
repositories {
// 指定插件的maven目录
maven{url uri('PluginTest')}
google()
jcenter()
}
dependencies {
classpath "com.android.tools.build:gradle:4.0.2"
classpath "com.nobug:plugintest:1.0"
}
}
[第十步]
应用插件
在其它模块中,应用该插件:
apply plugin: 'com.plugin.test'
此时,一个完整的自定义插件已经做好了。
当打包的时候,可以在Gradle日志中看到打印的日志:
图片.png最后,贴上Github地址:
Github地址:https://github.com/NoBugException/PluginDemo
[本章完...]
网友评论