HOME> 本届世界杯> 当你想用Gitee对你的APK文件上传下载时

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

当你想用Gitee对你的APP文件上传下载时 你的安卓APP的APK文件想找个免费的地方存放并且维护管理(上传下载),你又不想存在自己的服务器上,那么Git...

当你想用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格式的数据 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": "

2022-01-13_faker_1.0.4 最新版

",

"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 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.


如何用pe装系统 pe启动盘制作教程 为什么百度突然打开很慢?