Gradle和Aritifactory,实现上传Apk并发送消息到钉钉

这篇具有很好参考价值的文章主要介绍了Gradle和Aritifactory,实现上传Apk并发送消息到钉钉。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Gradle和Aritifactory

本文链接:https://blog.csdn.net/feather_wch/article/details/131746580

Gradle基本介绍

1、Gradle是一种语言吗?

  1. 不是
  2. 而是一种构建自动化工具,用于多语言软件开发。
  3. 可以控制编译、打包、测试、部署和发布等任务。

2、gradle支持的语言有哪些?

  1. Java
  2. Kotlin
  3. Groovy
  4. Scala
  5. C/C++
  6. JavaScript²。

3、Gradle的构建脚本是用Groovy编程语言编写的。
4、Groovy是一种基于JVM的动态语言。
5、Gradle的整个API也是用Groovy语言设计的。

6、Gradl提供了一个基于Groovy语言的领域特定语言(DSL),支持两种DSL

  1. Groovy DSL => build.gradle
  2. Kotlin DSL => build.gradle.kts

7、DSL(领域特定语言)是什么?

  1. 一种针对特定领域或问题的语言,而不是通用的编程语言。
  2. Gradle的DSL是用来描述构建过程和项目结构的语言。

Gradle插件开发流程

  1. 开发
  2. 打包
  3. 上传
  4. 测试
  5. 发布
  6. -> 开发(1)

本地仓库

本地仓库构建两种方法:

  1. nexus-只支持java
  2. artifactory-支持java、php、docker等等

artifactory

目的:

  1. 本地组件提交到本地仓库
  2. 服务端拉到本地仓库
搭建

要在 windows 上搭建 jfrog artifactory,可以参考以下的资源:

  • Windows环境利用Artifactory搭建本地仓库_windows artifactory_科小喵的博客-CSDN博客:这篇文章介绍了 jfrog artifactory 的下载和安装、本地仓库和远程仓库的创建和配置、虚拟仓库的创建和使用、项目中使用仓库等内容。

实际步骤

  1. 下载压缩包artifactory_pro_and_crack,并且解压缩,包含内容:artifactory-injector-1.1.jar和jfrog-artifactory-pro-6.6.0.zip
  2. 配置好JAVA环境
  3. 破解1:输入 java -jar .\artifactory-injector-1.1.jar
  4. 破解2:选择2
  5. 破解3:输入aritifactory路径,需要下面有文件夹webapps,如 xxx\artifactory_pro_and_crack\jfrog-artifactory-pro-6.6.0\artifactory-pro-6.6.0
  6. 破解4:选择1,保存得到的密钥字符串
  7. 运行artifactory-pro-6.6.0\bin目录下的 artifactory.bat
  8. 浏览器输入:localhost:8081
  9. 点击上方提示文字:输入key
  10. 账户名:admin 密码:password
添加仓库

远程仓库

  1. 选择Remote
    Gradle和Aritifactory,实现上传Apk并发送消息到钉钉,gradle,android,gradle
  2. 右侧,+New
  3. 创建Maven仓库:代理google仓库
    Gradle和Aritifactory,实现上传Apk并发送消息到钉钉,gradle,android,gradle
  4. 创建成功
    Gradle和Aritifactory,实现上传Apk并发送消息到钉钉,gradle,android,gradle

本地仓库

  1. 选择Local
  2. 创建maven仓库:名称为android_local
  3. 测试:上传插件gradle-8.0-bin.zip

修改默认文件大小

  1. Admin->General Configuration
  2. File Upload Max Size 修改为 1000MB
  3. save

设置分组

  1. 原因:原来要设置远程和本地几个仓库,很麻烦,直接分一组
  2. Admin->Virtual
  3. New->取名为“android-group”
  4. 选择需要加进去的Repository
  5. Save&Finish
使用本地仓库
gradle插件

gradle-wrapper.properties

https://services.gradle.org/distributions/gradle-8.0-bin.zip

修改为:

http://localhost:8081/artifactory/andorid_local/gradle-8.0-bin.zip
仓库引入
    repositories {
        maven { url 'http://localhost:8081/artifactory/andorid_group/' }
    }

插件buildSrc开发步骤

xxxPlugin

核心代码

1、创建名为releaseHelper的任务,并且建立Extension配置项和Task的关联

project.getExtensions().create("releaseHelper", Extension.class, project);

2、创建任务一:App发布到蒲公英平台

 // Create PgyUpload task
PgyerUploadTask pgyUploadTask = project.getTasks().
            create("pgyUploadFor" + variantName, PgyerUploadTask.class);
pgyUploadTask.init(variant, project);

3、创建任务二:发送App发布消息到钉钉

// Create SendMsgToDingTalkTask task
SendMsgToDingTalkTask sendMsgToDingTalkTask = project.getTasks().
    create("sendMsgToDingTalkFor" + variantName, SendMsgToDingTalkTask.class);
sendMsgToDingTalkTask.init(variant, project);

4、构建assembleRelease和两个task之间的依赖关系

// assembleRelease依赖于clean
variant.getAssembleProvider().get().dependsOn(project.getTasks().findByName("clean"));
// 蒲公英上传依赖于assembleRelease
pgyUploadTask.dependsOn(variant.getAssembleProvider().get());
// 钉钉消息依赖于蒲公英上传
sendMsgToDingTalkTask.dependsOn(pgyUploadTask);

PgyerUploadTask

    @TaskAction
    public void uploadToPgy() {
// 1、拿到app的build.gradle中android标签下内容
        AppExtension appExtension = (AppExtension) targetProject.getExtensions().findByName("android");
        for (BaseVariantOutput it : variant.getOutputs()) {
// 2、拿到输出文件
            File apkFile = it.getOutputFile();
// 3、展示app相关信息
            Extension extension = Extension.getConfig(targetProject);
            System.out.println("#######################################################################");
            System.out.println("# applicationId :" + variant.getMergedFlavor().getApplicationId());
            System.out.println("# uploadFileName:" + apkFile.getAbsoluteFile());
            System.out.println("# versionName   :" + appExtension.getDefaultConfig().getVersionName());
            System.out.println("# versionCode   :" + appExtension.getDefaultConfig().getVersionCode());
            System.out.println("# appName       :" + extension.appName);
            System.out.println("# changeLog     :" + extension.changeLog);
            System.out.println("#######################################################################");
// 4、Retrofit上传
            try {
                // 1. Get FIR upload info includes icon and apk uploading;
                Response<ResponseBody> appsResponse = RetrofitUtil.
                        getRetrofit("https://www.pgyer.com/apiv2/").
                        create(PgyerUploadInterface.class).
                        uploadFile(RetrofitUtil.getTextBody(extension.pgyApiKey),
                                RetrofitUtil.getFilePart("application/vnd.android.package-archive", apkFile),
                                RetrofitUtil.getTextBody("2"),
                                RetrofitUtil.getTextBody("123456"),
                                RetrofitUtil.getTextBody("test"),
                                RetrofitUtil.getTextBody("XiangxueGradle"),
                                RetrofitUtil.getTextBody("2")).
                        execute();
                System.out.println("\n1. AppsResponse:" + new Gson().toJson(appsResponse.body().string()));
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

SendMsgToDingTalkTask

发送消息到钉钉

    @TaskAction
    public void SendMessageToDingTalk() {
        Extension extension = Extension.getConfig(targetProject);
        DingMsg dingMsg = new DingMsg();
        dingMsg.actionCard.title = extension.msgTitle;
        dingMsg.actionCard.text = extension.msgContent;
        dingMsg.actionCard.singleTitle = extension.singleButtonTitle;
        dingMsg.actionCard.singleURL = extension.singleButtonUrl;
        try {
            Response<ResponseBody> response = RetrofitUtil.
                    getRetrofit("https://oapi.dingtalk.com/").
                    create(DingTalkInterface.class).
                    sendMsgToDingTalk(extension.apiToken, dingMsg).
                    execute();
            System.out.println("DingTalkMsgResponse:" + response.body().string());
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

未来展望

1、支持多渠道、多维度打包
2、支持上传Jenkins文章来源地址https://www.toymoban.com/news/detail-589297.html

到了这里,关于Gradle和Aritifactory,实现上传Apk并发送消息到钉钉的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • java实现钉钉自定义机器人发送消息

           钉钉作为现在很多企业的移动办公平台,具有很多很强大的功能,可以帮助我们更加及时的发现问题,解决问题,今天我们做一个java实现钉钉自定义机器发送消息的功能。         首先,先放出官方文档地址:https://open.dingtalk.com/document/orgapp/custom-robot-access        

    2024年02月15日
    浏览(47)
  • C#实现钉钉自定义机器人发送群消息帮助类

            在企业中,针对一些关键指标内容(如每天的生产产量、每天的设备报警信息等信息),需要同时给多人分享,此时就可以将需要查看这些数据的人员都拉到一个群中,让群里的机器人将这些关键指标内容推送到群里即可【(目前已实现在钉钉群里创建自定义机器

    2024年02月04日
    浏览(39)
  • Java实现钉钉企业内部应用机器和自定义机器人发送消息

     公司让写一个服务监控的功能,当监测到服务停止时,向钉钉群里推送报警信息。之前大概看到钉钉的开放平台的API文档,好像能群发消息的只有机器人。 钉钉开放平台目前提供三种机器人: 企业内部应用机器人 群模板机器人 自定义机器人 本来向用自己比较熟悉的自定义

    2024年02月12日
    浏览(54)
  • uniapp:全局消息是推送,实现app在线更新,WebSocket,apk上传

    背景 : 开发人员开发后app后打包成.apk文件,上传后通知厂区在线用户更新app。 那么没在线的怎么办?因为我们在上一篇博客中写了,在app打开的时候回去校验是否需要更新了,所以已经完成了闭环。 即时通讯首先想到的就是WebSocket 1.我们定义全局的WebSocket 2.在全局监听,

    2024年02月03日
    浏览(40)
  • Outlook无需API开发连接钉钉群机器人,实现新增会议日程自动发送群消息通知

    Outlook用户使用场景: 在企业中,会议和活动的顺利举行对于业务运转和团队协作至关重要。然而,计划的变动总是无法避免,这可能会导致其他人的计划受到影响,打乱原有的安排。为了解决这个问题,许多企业开始使用各种工具和技术来确保信息的及时传递和更新。其中

    2024年02月09日
    浏览(39)
  • 【钉钉免登录】使用dingtalk-jsapi将H5/小程序集成到钉钉,实现单点登录,H5/小程序免登

    一、创建H5微应用/小程序 1.1、创建微应用 登录钉钉开发者后台: 钉钉开发者后台 创建H5微应用:应用开发-企也内部-钉钉应用-创建应用 填写应用名称和应用描述 1.2 查看配置信息 1.3 配置服务器出口IP和应用首页地址 二、免登实现(小程序、H5均可用) 2.1 安装钉钉API 在终端

    2024年02月10日
    浏览(46)
  • Jenkins工具系列 —— 插件 钉钉发送消息

    点击 左侧的 Manage Jenkins — Plugins —— 左侧的 Available plugins 点击 左侧的 Manage Jenkins ,拉到最后 群里:右上角群设置 - 机器人 - 添加机器人 - 选择自定义机器人 完善机器人信息以及加密 - 完成 配置完上面的设置后,在每个项目中添加机器人。 就这么简单,快去试试!!!添

    2024年02月14日
    浏览(38)
  • python调用钉钉发送告警消息

    zabbix和prometheus都能做监控告警调用企业微信和钉钉。那么问题来了做为一名合格的运维和开发人员,脚本发现故障告警,自动调用发送详细告警内容,这点儿东西得会。 效果图如下:  普通发送方式 dingtalkchatbot发送方式 

    2024年02月16日
    浏览(41)
  • Python:使用钉钉dingtalk发送通知消息

    通过钉钉的开放API接口,可以很容易的将消息发送到钉钉dingtalk,比起邮件发送更稳定,及时 文档 官网:https://www.dingtalk.com/ API Explorer调试 https://open-dev.dingtalk.com/apiExplorer 文档:https://open.dingtalk.com/document/robots/custom-robot-access 使用场景:发送消息到聊天群 前期准备:需要新建

    2024年02月11日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包