Android Studio 中编辑Groovy 脚本 给钉钉机器人发消息

2022-12-07 17:48:28 浏览数 (3)

1.介绍

最近有一些需求,需要学习和配置Groovy脚本。而电脑上安装的编译器Android Studio。

同时,我们Studio会默认安装一个Groovy的插件。(我们可以通过Settings -> Plugins -> Groovy 找到)。

那么,也就是说Android Studio是默认就支持编辑Groovy的。

其实我们配置的build.gradle中的脚本就是groovy的。所以Studio一直都支持。

下面就来介绍,如何通过Android Studio 写Groovy脚本。

2. 开启Groovy

我们通过New Module 创建一个 Java or Kotlin Library的项目。其他的参数可以不进行修改。保持默认没有任何关系。

创建完毕后,在新的Library项目的build.gradle 文件中添加:

代码语言:javascript复制
plugins {
    id 'java-library'
    id 'groovy'   //添加这个配置
}

dependencies {
    implementation(localGroovy())
}

我们如果想给groovy项目指定依赖JDK版本 可以配置如下(例如我配置为jdk1.8):

代码语言:javascript复制
plugins {
    id 'java-library'
    id 'groovy'
}

java {
    sourceCompatibility = JavaVersion.VERSION_1_8
    targetCompatibility = JavaVersion.VERSION_1_8
}

dependencies {
    implementation(localGroovy())
}

然后我们需要在main文件夹中,创建groovy文件夹。这个文件夹需要我们手动创建。

在main文件夹中右击。选择New -> Directory

我们可以主动输入groovy进行创建。也可以在Gradle Source Sets 栏里面选择groovy文件夹(如果没有,你就自己创建吧)。

创建完毕后,我们就可以在src/main/groovy 目录下写我们的groovy脚本了。编译器会帮我们进行格式构造。

同时各种提示就和写java代码一样。

3. 创建一个Groovy脚本给钉钉群里面发消息

我们在groovy目录中,右击新建一个普通文件,然后输入: Zinyan.groovy 注意了,后缀名必须输入groovy才能创建成功哦。

创建完毕后:

代码语言:javascript复制
class Zinyan {
    // Groovy 中的 main 函数
    def static main(def args) {
        // 在 Groovy 中可以使用 Java 语法
        System.out.println("Hello Zinyan Groovy !")

    }
}

我们就可以通过编译器main函数左侧的运行按钮,进行运行编译操作了。

执行完毕,就会在Build 面版上打印 :Hello Zinyan Groovy ! 内容了。

代码语言:javascript复制
> Task :TestLib:Zinyan.main()
Hello Zinyan Groovy !

BUILD SUCCESSFUL in 6s
3 actionable tasks: 3 executed

下面介绍如何通过Groovy配置脚本,给钉钉群里面发消息。

代码语言:javascript复制
import groovy.json.JsonBuilder
import groovy.json.JsonSlurper

import javax.crypto.Mac
import javax.crypto.spec.SecretKeySpec

class Zinyan {
    // Groovy 中的 main 函数
    def static main(def args) {
        // 在 Groovy 中可以使用 Java 语法
        Zinyan zinyan = new Zinyan()
        System.out.println("Hello Zinyan Groovy !")
        zinyan.dingdingTask("测试构建工具","##这个是标题内容哦","[这个地方填写我们的WebHook]",
        "这个地方填写加签的秘钥")
    }

    //发送钉钉任务 ,第一个为钉钉消息,第二个参数为 消息内容主体
    def dingdingTask( mk_title, mk_test, webhook, secret){
        def json = new JsonBuilder()
        json{
            msgtype "markdown"
            markdown {
                title mk_title
                text mk_test
            }
            at {
                atMobiles([])
                isAtAll false
            }
        }
        //消息准备完毕,执行发送请求
        String timestamp =System.currentTimeMillis() "" //得到系统时间
        def sign = getSign(timestamp,secret)
        def url =webhook "&sign=" sign "&timestamp=" timestamp
        def connection = new URL(url).openConnection()
        connection.setRequestMethod('POST')
        connection.doOutput = true
        connection.setRequestProperty('Content-Type', 'application/json')
        def writer = new OutputStreamWriter(connection.outputStream)
        writer.write(json.toString())
        writer.flush()
        writer.close()
        connection.connect()
        JsonSlurper slurper = new  JsonSlurper()
        def sl = slurper.parseText(connection.content.text)
        System.out.println("钉钉服务器返回结果:" sl)
        System.out.println("返回的结果代码:" sl.errcode)
    }
    def getSign(timestamp,secret){
        def stringToSign = timestamp "n" secret
        Mac mac = Mac.getInstance("HmacSHA256")
        mac.init(new SecretKeySpec(secret.getBytes("UTF-8"), "HmacSHA256"))
        byte[] signData = mac.doFinal(stringToSign.getBytes("UTF-8"))
        return URLEncoder.encode(new String( Base64.encoder.encode(signData)),"UTF-8")
    }
}

注意:

要填写你自己的 webHook和 签名,填完完毕后执行成功就会得到下面的效果:

代码语言:javascript复制
> Task :TestLib:Zinyan.main()
Hello Zinyan Groovy !
钉钉服务器返回结果:[errcode:0, errmsg:ok]
返回的结果代码:0

同时我们的钉钉消息上就看到输出结果了。

Groovy的脚本是可以直接配置到Jenkins工具中的哦。 后面介绍一个如何在Jenkins中配置脚本的方法吧。

0 人点赞