前言
在Android studio中,使用gradle进行编译、打包,在一些情况下,学会自定义gradle插件,会帮我们解决很多问题。gradle插件是由groovy语言开发的,所以在自定义插件时,需要用到groovy语法(类似Java语法),本文只作为demo使用,想进一步学习groovy,可在精通 Groovy学习。
一、新建gradle插件发布至maven
新建Android项目
新建一个Android module项目,类型选择Android library
将新建的module中除build.gradle文件外的的其余文件全部删除,然后删除build.gradle的内容全部删除
在新建的module中新建文件夹目录src.main.groovy和src.main.resources。groovy文件夹被识别为groovy源码目录,在其目录下新建包名,类似java。resources文件夹被识别为资源文件夹,在其目录下新建META-INF.gradle-plugins文件夹。
在新建的module中的build.gradle中添加(发布至本地maven库)
apply plugin: 'groovy'
apply plugin: 'maven'
dependencies {
compile gradleApi() //gradle sdk
compile localGroovy() //groovy sdk
}
repositories {
mavenCentral()
}
group='com.jian.plugin'
version='1.0.0'
uploadArchives {
repositories {
mavenDeployer {
//提交到远程服务器:
// repository(url: "http://www.xxx.com/repos") {
// authentication(userName: "admin", password: "admin")
// }
repository(url: uri('../repo’)) //本地maven库地址
}
}
}
-
在新建module,groovy包目录下,新建一个文件,命名为PluginImpl.groovy
package com.jian.plugin import org.gradle.api.Plugin import org.gradle.api.Project public class PluginImpl implements Plugin<Project>{ @Override void apply(Project project) { System.out.println "=======================" System.out.println "Hello gradle plugin" System.out.println "=======================" } }
-
在新建module,researches/META-INF/gradle-plugins目录下新建一个properties文件,命名为plugin.test.properties,在里面输入
implementation-class=com.jian.plugin.PluginImpl
点击Androidstudio右侧的gradle工具,
双击uploadArchives,打包上传至本地maven库地址(../repo),即生成如下文件
repo下的文件目录由build.gradle中的group生成,1.0.0由version生成-
使用,在app下build.gradle 中添加如下代码
buildscript { repositories { maven { //本地Maven仓库地址 url uri('../repo') } } dependencies { //格式为-->group:module:version classpath 'com.jian.plugin:mylibrary:1.0.0' } } //plugin.test为resources/META-INF/gradle-plugins下的properties文件名称 apply plugin: ‘plugin.test'
clean project 然后make project,从messages窗口中看到如下打印信息
好了,hello world版的自定义Androidstudio插件运行成功!
二、新建本地gradle插件
新建Android项目
新建一个Android module项目,命名为buildsrc,类型选择Android library
将新建的module中除build.gradle文件外的的其余文件全部删除,然后删除build.gradle的内容全部删除
在新建的module中新建文件夹目录src.main.groovy
-
在新建的buildsrc中的build.gradle中添加
apply plugin: 'groovy' dependencies { compile gradleApi()//gradle sdk compile localGroovy()//groovy sdk compile 'com.android.tools.build:gradle:3.0.1' compile 'org.ow2.asm:asm:5.1' compile 'org.ow2.asm:asm-commons:5.1' } repositories { jcenter() google() }
-
在新建module,groovy包目录下,新建一个文件,命名为TestPlugin.groovy
package com.liujian import org.gradle.api.Plugin import org.gradle.api.Project public class TestPlugin implements Plugin<Project>{ @Override void apply(Project project) { System.out.println("========================") System.out.println("这是第TestPlugin插件!") } }
-
使用,在app下build.gradle 中添加如下代码
apply plugin: com.liujian.TestPlugin
然后make project,从messages窗口中看到如下打印信息