android自定义Gradle插件流程记录如下(当然参考了书籍和网上的资料):
第一步:新建android module
新建项目名字随意例如:customPlugin,然后选择把新建的customPlugin项目中src/main目录下的文件全部删除,然后新建groovy和resources目录,其中groovy用来书写我们的逻辑代码,resources目录用来保存plugin的配置信息
第二步:构建plugin的配置信息
resources目录下按照格式新建META-INF目录,在META-INF目录中新建gradle-plugins目录,然后新建插件名称.properties文件。具体格式如下:resources/META-INF/gradle-plugins/插件名称.properties文件。其中除了插件名称是自定义的其他都是固定格式。
第三步:构建plugin的操作类
在groovy目录下新建包名(自定义路径)然后新建TestPlugin 的groovy文件(当然Java也是可以的,只是groovy语法相对灵活;Java就要写在Java目录下了)例如:
class TestPlugin implements Plugin<Project> {
@Override
void apply(Project target) {
println("----Plugin apply run --------------")
}
}
第四步:让TestPlugin文件生效
在第二步配置的文件(resources/META-INF/gradle-plugins/插件名称.properties文件)中添加:implementation-class=自定义包名.TestPlugin。
经过以上四步一个自定义的Gradle插件就算完成了(虽然这个插件没毛用),但是想要在项目中配置使用还需要发布出去才能用,接下来介绍发布插件,这里主要介绍发布到本地使用。
发布插件到本地的流程
1,首先要用AndroidStudio下载mavenDeployer插件,并重启AndroidStudio。
2,在插件的build.gradle文件中添加如下信息:
plugins {
id 'groovy'
id 'maven'
}
或者
apply plugins: 'groovy'
apply plugins: 'maven'
repositories {
jcenter()
google()
mavenCentral()
}
dependencies {
implementation gradleApi()
implementation localGroovy()
}
uploadArchives{
repositories.mavenDeployer{
repository(url: uri('../repo'))//本地文件路径
pom.groupId = '插件名称'//插件的名称需要和resources/META-INF/gradle-plugins/插件名称.properties文件名称一致,否则会导致引用出问题,可以自定义
pom.artifactId = 'artifactId'//artifactId 自定义,在引用的时候要用到
pom.version = '1.0.0'//插件版本号
}
}
这样就可以把maven设置到本地仓库了。
3,执行uploadArchives命令生成repo目录
这个可以用命令行:Windows 用gradlew uploadArchives mac:./gradlew uploadArchives
还可以点击AndroidStudio的task生成如图:
uploadArchives 示意图.jpg
完成以上操作我们就把插件发布到本地maven仓库了。
4,接下来就是项目引入了
首先在项目的跟目录下操作build.gradle文件,如下所示:
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
ext.kotlin_version = "1.3.72"
repositories {
google()
jcenter()
maven{//这个是本地仓库的目录
url uri('repo')
}
}
dependencies {
classpath "com.android.tools.build:gradle:4.1.1"
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath "插件名称:插件artifactId :1.0.0"//这个就是上面uploadArchives配置的: pom.groupId:pom.artifactId:pom.version
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
google()
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
最后一步就是在项目中的build.gradle中添加
plugins {
id '插件名称'
}
或者
apply plugin:'插件名称'
到这一步整个自定义插件就算完成功能了(这些都是固定格式,只要稍微注意就行,重点是插件内容的实现)。
网友评论