Gradle之如何创建Gradle插件工程及调试

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

APT Android代码怎么调试

方法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 其他参考

如何断点调试第三方 Gradle Plugin

5 发布插件命令

发布插件:./gradlew uploadArchives

6 学习链接

Android如何创建Gradle插件开发工程及调试

在AndroidStudio中自定义Gradle插件

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值