当你想用Gitee对你的APK文件上传下载时

当你想用Gitee对你的APP文件上传下载时

你的安卓APP的APK文件想找个免费的地方存放并且维护管理(上传下载),你又不想存在自己的服务器上,那么Gitee就挺不错的;
我的示例:
https://gitee.com/zhuangbinan/my-app-download
通过创建发行版,上传你的APK文件
在这里插入图片描述
点击发行版的 全部按钮
可以看到所有的版本
注意地址栏的地址:
https://gitee.com/zhuangbinan/my-app-download/releases
在这里插入图片描述
创建发行版 , 只要输入一个版本号就可得到一个下载地址;
在这里插入图片描述
当我把鼠标放在这个位置的时候,可以看到APK文件的下载地址;
在这里插入图片描述
地址为:
https://gitee.com/zhuangbinan/my-app-download/attach_files/943167/download/PAPP-1.0.4_faker.apk
这就是下载地址了;当你的APP需要更新,你放上这个地址,就可以下载最新的APP了;
你以为这篇无聊的文章到这里就结束了吗? No no no…
这里的链接会变化,例如上一个版本的链接是:
https://gitee.com/zhuangbinan/my-app-download/attach_files/943154/download/PAPP-1.0.3_faker.apk
在这里插入图片描述
很明显是不同的,那么你每次更新到新版APP的时候都要复制粘贴这个地址;
我感觉有点麻烦,不够优雅;
还记得一开始的"创建发行版"的按钮吗? 输入版本号就可以创建了;
我分析了一下Gitee的URL;

但我点击这个页面的这里:
在这里插入图片描述
会来到最新版的这个URL:
https://gitee.com/zhuangbinan/my-app-download/releases/1.0.4
在这里插入图片描述
https://gitee.com/zhuangbinan/my-app-download/releases/1.0.4
最后面的1.0.4是版本号,这个url的前面是不会变的,当新版上传上去以后,
会变成:
https://gitee.com/zhuangbinan/my-app-download/releases/新版本号
在这个URL页面里也有最新版的APK的下载地址,通过F12就能找到;
那么我们只需要记住最新版的版本号,就可以获得最新版的下载地址;

那么怎么获取最新版的下载地址呢?
我看F12的network,发现
https://gitee.com/zhuangbinan/my-app-download/releases/新版本号
返回的是一个HTML,用程序并不方便(可能是我水平问题)找到那个下载的url
我用PostMan访问
https://gitee.com/zhuangbinan/my-app-download/releases/新版本号
返回的却是JSON格式的数据
浏览器访问的Headers
HTML页面的url
找到了下载地址
用PostMan访问返回的是JSON数据:

{
    "release": {
        "tag": {
            "name": "1.0.4",
            "path": "/zhuangbinan/my-app-download/tags/1.0.4",
            "tree_path": "/zhuangbinan/my-app-download/tree/1.0.4",
            "message": "",
            "commit": {
                "id": "37872ea0c8007ea530fbe7ff4163a65887aac39a",
                "short_id": "37872ea",
                "title": "我的app,版本号:1.0.1",
                "title_markdown": "我的app,版本号:1.0.1",
                "description": "",
                "description_markdown": "",
                "message": "我的app,版本号:1.0.1\n",
                "message_markdown": "我的app,版本号:1.0.1\n",
                "detail_path": "/zhuangbinan/my-app-download/commit/37872ea0c8007ea530fbe7ff4163a65887aac39a",
                "commits_path": "/zhuangbinan/my-app-download/commits/37872ea0c8007ea530fbe7ff4163a65887aac39a",
                "tree_path": "/zhuangbinan/my-app-download/tree/37872ea0c8007ea530fbe7ff4163a65887aac39a",
                "author": {
                    "name": "庄毕楠",
                    "email": "@qq.com",
                    "username": "zhuangbinan",
                    "user_path": "/zhuangbinan",
                    "enterprise_user_path": null,
                    "image_path": "no_portrait.png#庄毕楠-zhuangbinan",
                    "is_gitee_user": true,
                    "is_enterprise_user": null
                },
                "committer": {
                    "name": "庄毕楠",
                    "email": "@qq.com",
                    "username": "zhuangbinan",
                    "user_path": "/zhuangbinan",
                    "enterprise_user_path": null,
                    "image_path": "no_portrait.png#庄毕楠-zhuangbinan",
                    "is_gitee_user": true,
                    "is_enterprise_user": null
                },
                "authored_date": "2022-01-13T10:01:03+08:00",
                "signature": null,
                "build_state": null
            },
            "archive_path": "/zhuangbinan/my-app-download/repository/archive/1.0.4",
            "signature": null
        },
        "operating": {
            "edit": false,
            "download": true,
            "destroy": false,
            "enterprise_forbid_zip": false
        },
        "release": {
            "title": "2022-01-13_faker_1.0.4 最新版",
            "path": "/zhuangbinan/my-app-download/releases/1.0.4",
            "created_at": "2022-01-13T10:41:58+08:00",
            "is_prerelease": false,
            "description": "<p>2022-01-13_faker_1.0.4 最新版</p>",
            "content_pass": true,
            "author": {
                "name": "庄毕楠",
                "username": "zhuangbinan",
                "path": "/zhuangbinan",
                "avatar_url": "no_portrait.png#庄毕楠-zhuangbinan"
            },
            "attach_files": [
                {
                    "download_url": "/zhuangbinan/my-app-download/attach_files/943167/download/PAPP-1.0.4_faker.apk",
                    "name": "PAPP-1.0.4_faker.apk"
                }
            ]
        }
    }
}

这就找到了

"attach_files": [
                {
                    "download_url": "/zhuangbinan/my-app-download/attach_files/943167/download/PAPP-1.0.4_faker.apk",
                    "name": "PAPP-1.0.4_faker.apk"
                }
         ]

用Java代码实现:


import cn.gitee.release.ReleaseList;
import cn.utils.HttpComponent;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.junit.jupiter.api.Test;

import java.text.ParseException;
import java.util.*;



public class TestPlace {

	@Test
    void testGitee() throws JsonProcessingException {

        HttpComponent httpComponent = new HttpComponent();
        String versionTag = "1.0.4";//更新的时候填的TAG,不能有误
        // 想要获取最新版本,查id最大的值就是最新版
        String url = "https://gitee.com/zhuangbinan/my-app-download/releases/" + versionTag;
        //Headers 模拟PostMan才返回JSON格式
        Map<String,String> headers = new HashMap<>();
        headers.put("User-Agent","PostmanRuntime/7.26.8");
        headers.put("Accept","*/*");

        String jsonString = httpComponent.get(url, headers);

        ObjectMapper mapper = new ObjectMapper();
        //ReleaseList 是 JSON解析成的对象
        ReleaseList releaseList = mapper.readValue(jsonString, ReleaseList.class);
        String download_url = releaseList.getRelease().getRelease().getAttach_files().get(0).getDownload_url();
        String pre_url = "https://gitee.com";
        String result = pre_url + download_url;
        System.out.println(result);
    }
}

这就能拿到最新的下载地址了;
对JSON反序列化成Java对象借助了在线工具"JSON生成Java实体类"
https://www.bejson.com/json2javapojo/new/

吐槽一下IDEA的插件:JSONParser
对为null的属性直接不解析,这是一个缺点;这个在线工具会把null的属性解析为String类型,这有可能会出现异常的;
在这里插入图片描述
这段代码里的HTTP工具类HttpCompnent我放在这:
HttpCompnent 下载

over.

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

庄毕楠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值