一、gradle插件在Android中的应用
我们在Android Studio中创建的app项目中,build.gradle
常有如下这行代码:
apply plugin: 'com.android.application'
或是作为一个Android Library Module时,build.gradle
会有如下这行代码:
apply plugin: 'com.android.library'
这就是gradle插件应用的例子。
apply plugin: 'xxx'
代表着在这个所在的gradle
文件中应用了插件'xxx',那么在这个文件里,你就可以使用这个插件所提供的功能了。
如:
代码语言:txt复制apply plugin: 'com.android.application'
android {
compileSdkVersion 27
defaultConfig {
applicationId "com.example.chenqidian.myapplication"
minSdkVersion 15
targetSdkVersion 27
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
二、开发一个插件
gradle插件开发使用的语言是Groovy(一种跑在jvm上的编程语言)。
在build.gradle
文件中写入:
class HelloWorldPlugin implements Plugin<Project> {
@Override
void apply(Project target) {
println "Hello World"
}
}
apply plugin: HelloWorldPlugin
在Gradle Console
中可以看到:
ok,这个就是我们实现的一个插件了。
三、发布插件
上面的话,插件类是写在了gradle文件中的,作为正式给别人使用的插件来讲的化,正确做法将代码作为一个独立的插件项目,然后打包成一个jar包来发布的。
1、创建独立插件项目
这里以Android Studio为例,创建一个Java Library目录。
修改build.gradle
文件,让module支持使用groovy和提供打包上传能力。
apply plugin: 'groovy'
apply plugin: 'maven'
uploadArchives{
// 将本地目录作为maven仓库
repositories{
mavenDeployer {
repository(url: uri('../repo'))
}
}
}
group = "com.andy"
version = "1.0"
dependencies {
compile gradleApi()
}
2、编写插件代码
在src/main/groovy/
文件夹(没有文件夹需要新建)中新增HelloWorldPlugin.groovy
文件
代码如下:
代码语言:txt复制package com.andy.testplugin
import org.gradle.api.Plugin
import org.gradle.api.Project
class HelloWorldPlugin implements Plugin<Project> {
@Override
void apply(Project target) {
println "Hello World"
}
}
3、编写properties文件
在src/main/resources/META-INF/gradle-plugins
文件夹(没有文件夹需要新建)中新增com.andy.testplugin.properties
,输入内容,指明入口类:
implementation-class=com.andy.testplugin.HelloWorldPlugin
4、执行打包上传插件jar包
可以直接在插件项目目录中执行gradle uploadArchives
打包命令;
或者在Android Studio可视化gradle任务栏中执行,如下图所示:
打包执行成功后,可以在目录中看到这些文件,如下图:
5、使用插件
(1)导入maven本地仓库,依赖类路径
代码语言:txt复制buildscript{
repositories {
maven{
url uri('/Users/chenqidian/AndroidStudioProjects/MyApplication/repo/')
}
}
dependencies {
classpath 'com.andy:HelloWorld:1.0' // 注意这里是 group : module名字 : 版本号,插件打包时配置好的
}
}
(2)应用插件
代码语言:txt复制apply plugin: 'com.andy.testplugin' // 注意,这里的插件名是properties文件的文件名