1 Groovy基础
1.1 Android Studio中如何运行groovy程序?
1.1.1 Groovy console
1.1.4 学习链接
Android Studio 中如何运行 groovy 程序
2 如何创建Gradle插件工程
2.1 新建Android项目
(1)Android Studio中新建一个Android项目
(2)新建Gradle插件Module:Android Module
(3) 删除不要的文件:将Module里面的内容删除,只保留build.gradle文件、.gitignore和src/main目录
2.2 在module目录下进行以下操作,配置目录
(1)新建src/main/groovy目录,用于编写代码,与Android项目类似,只是java变成了groovy;
(2)新建src/main/resoureces/META-INF/gradle-plugins目录,用于存放插件入库和名字配置;
(3)在build.gradle中添加以下内容:
apply plugin: 'groovy'
apply plugin: 'maven'
dependencies {
// gradle sdk
implementation gradleApi()
// groovy sdk
implementation localGroovy()
// 添加依赖,于Android一样
implementation "com.android.tools.build:gradle:3.4.0"
implementation "com.android.tools.build:transform-api:1.5.0"
implementation "javassist:javassist:3.12.1.GA"
implementation "commons-io:commons-io:2.5"
}
repositories {
mavenCentral()
}
// 以上都为固定写法
// 打包到本地或者远程Maven库
uploadArchives {
repositories {
mavenDeployer {
pom.groupId = 'com.read.plugin' // groupId
pom.artifactId = 'statsdk' // artifactId
pom.version = '1.0.0' // 版本号
/ /提交到远程服务器:
// repository(url: "http://www.xxx.com/repos") {
// authentication(userName: "admin", password: "admin")
// }
// 本地的Maven地址设置为
repository(url: uri('../repo'))
}
}
}
(4)在src/main/groovy目录下右键【New->Package】创建包名:com.read.plugin
(5)在com.read.plugin包下创建插件入口文件
package com.read.plugin
import org.gradle.api.Plugin
import org.gradle.api.Project
class MyPlugin implements Plugin<Project> {
// 当插件apply时调用
void apply(Project project) {
System.out.println("自定义插件!")
}
}
(6)在src/main/resoureces/META-INF/gradle-plugins目录下创建com.read.plugin.properties文件,添加以下内容:
implementation-class=com.read.plugin.MyPlugin
(7)rebuild一下,开发环境就配置好了,可以看到Android Studio已经识别出目录了
2.5 插件发布
(1)前面在build.gradle中配置了上传maven的信息,直接双击upload下的uploadArchives就会执行打包上传啦
// mac
./gradlew uploadArchives
或
(2)执行完成后,去我们的Maven本地仓库查看一下
2.6 接入插件
(1)在project级别的build.gradle文件中添加com.read.plugin:statsdk依赖
buildscript {
repositories {
google()
jcenter()
// 添加 plugin maven 库地址
// maven {
// url 'http://172.0.0.1:8080/repository/public/'
// }
// 添加本地仓库路径
maven {
url uri('repo')
}
}
dependencies {
// 添加 plugin 依赖
classpath 'com.read.plugin:statsdk:1.0.0'
}
}
(2)在app的build.gradle文件中添加应用插件
// 添加 plugin 插件
apply plugin: 'com.read.plugin'
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
}
3 如何使用kotlin编写插件呢?
其实kotlin写起来也挺简便,有些同学groovy不熟,因此用kotlin也能编写插件,这个配置也简单:
3.1 将src/main/groovy目录改成src/main/kotlin,然后在kotlin目录下边写kotlin代码
3.2 修改插件module的build.gradle文件(对比前面的文件只是去掉了groovy,添加了kotlin的相关配置)
ext {
kotlin_version = '1.3.40'
}
// apply plugin: 'groovy'
apply plugin: 'maven'
apply plugin: "kotlin"
sourceCompatibility = 1.8
dependencies {
// gradle sdk
implementation gradleApi()
// groovy sdk
// implementation localGroovy()
// 添加依赖,于Android一样
implementation "com.android.tools.build:gradle:3.4.0"
implementation "com.android.tools.build:transform-api:1.5.0"
implementation "javassist:javassist:3.12.1.GA"
implementation "commons-io:commons-io:2.5"
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.40"
}
compileKotlin {
kotlinOptions.jvmTarget = "1.8"
}
compileTestKotlin {
kotlinOptions.jvmTarget = "1.8"
}
repositories {
mavenCentral()
}
// 以上都为固定写法
// 打包到本地或者远程Maven库
uploadArchives {
repositories {
mavenDeployer {
pom.groupId = 'com.read.plugin' // groupId
pom.artifactId = 'statsdk' // artifactId
pom.version = '1.0.0' // 版本号
/ /提交到远程服务器:
// repository(url: "http://www.xxx.com/repos") {
// authentication(userName: "admin", password: "admin")
// }
// 本地的Maven地址设置为
repository(url: uri('../repo'))
}
}
}
4 如何调试插件(同理调试 APT)
4.1 在 接入工程 中打开 APT 调试模式
方法1
切换到 Android 目录下,编译全局的 gradle.properties 文件,临时增加以下代码:
org.gradle.jvmargs=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
-Dorg.gradle.debug=true
方法2(推荐)
(1)在命令行中执行APP的编译命令:
// windows
gradlew assembleDebug -Dorg.gradle.daemon=false -Dorg.gradle.debug=true
// mac
./gradlew assembleDebug -Dorg.gradle.daemon=false -Dorg.gradle.debug=true
// 或
./gradlew :VideoCut:assembleDebug -Dorg.gradle.daemon=false -Dorg.gradle.debug=true
(2)后面两个参数是必须的,表示等待gradle调试。这个时候会卡在这:
4.2 在 插件工程 中配置 remote 调试类型,然后点击 debug 按钮
(1)创建新的运行配置
(2)创建remote类型的配置,本地调试默认配置即可直接点确定,如果远程调试请输入 Host:
(3)打断点:打断点和 Android 开发一样,点一下就行;
(3)执行编译,对 remote 点击调试按钮:点击 debug 按钮,如下图。
(4)然后,接入工程就会运行脚本,插件项目 就可以调试插件代码了。
4.3 其他参考
5 发布插件命令
发布插件:./gradlew uploadArchives