feat: 同步本地代码到远程仓库
- 新增WebDAV同步功能相关文件 - 新增CustomSwitch自定义开关组件 - 新增SyncCodeManager、UpdateInstaller、WebDAVSyncManager工具类 - 新增build_all_release.sh构建脚本 - 更新多个Dialog和Activity文件 - 更新字符串资源文件 - 删除apk/release目录下的旧文件
This commit is contained in:
@@ -49,6 +49,77 @@ public class Github {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 将GitHub Release下载URL转换为jsDelivr CDN URL
|
||||
* 例如: https://github.com/Tosencen/XMBOX/releases/download/v3.1.0/mobile-arm64_v8a-v3.1.0.apk
|
||||
* 转换为: https://cdn.jsdelivr.net/gh/Tosencen/XMBOX@v3.1.0/mobile-arm64_v8a-v3.1.0.apk
|
||||
*
|
||||
* @param githubUrl GitHub Release下载URL
|
||||
* @param tagName Release标签名(如 "v3.1.0")
|
||||
* @param fileName 文件名
|
||||
* @return jsDelivr CDN URL
|
||||
*/
|
||||
public static String convertToJsDelivrUrl(String githubUrl, String tagName, String fileName) {
|
||||
try {
|
||||
// 尝试从GitHub URL中提取信息
|
||||
// 格式: https://github.com/{owner}/{repo}/releases/download/{tag}/{file}
|
||||
if (githubUrl.contains("/releases/download/")) {
|
||||
String[] parts = githubUrl.split("/releases/download/");
|
||||
if (parts.length == 2) {
|
||||
String basePath = parts[0]; // https://github.com/Tosencen/XMBOX
|
||||
String[] baseParts = basePath.split("/");
|
||||
if (baseParts.length >= 2) {
|
||||
String owner = baseParts[baseParts.length - 2];
|
||||
String repo = baseParts[baseParts.length - 1];
|
||||
// 使用jsDelivr CDN格式
|
||||
String jsDelivrUrl = "https://cdn.jsdelivr.net/gh/" + owner + "/" + repo + "@" + tagName + "/" + fileName;
|
||||
Logger.d("Github: URL转换: " + githubUrl + " -> " + jsDelivrUrl);
|
||||
return jsDelivrUrl;
|
||||
}
|
||||
}
|
||||
}
|
||||
// 如果无法匹配,使用默认仓库信息构建
|
||||
String jsDelivrUrl = "https://cdn.jsdelivr.net/gh/Tosencen/XMBOX@" + tagName + "/" + fileName;
|
||||
Logger.d("Github: 使用默认格式构建URL: " + jsDelivrUrl);
|
||||
return jsDelivrUrl;
|
||||
} catch (Exception e) {
|
||||
Logger.e("Github: URL转换失败: " + e.getMessage());
|
||||
// 转换失败时返回原URL
|
||||
return githubUrl;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 将GitHub raw URL转换为jsDelivr CDN URL
|
||||
* 例如: https://raw.githubusercontent.com/Tosencen/XMBOX-Release/main/apk/release/mobile-arm64_v8a-v3.1.0.apk
|
||||
* 转换为: https://cdn.jsdelivr.net/gh/Tosencen/XMBOX-Release@main/apk/release/mobile-arm64_v8a-v3.1.0.apk
|
||||
*
|
||||
* @param rawUrl GitHub raw URL
|
||||
* @return jsDelivr CDN URL,如果转换失败则返回原URL
|
||||
*/
|
||||
public static String convertRawToJsDelivrUrl(String rawUrl) {
|
||||
try {
|
||||
// 格式: https://raw.githubusercontent.com/{owner}/{repo}/{branch}/{path}
|
||||
if (rawUrl.contains("raw.githubusercontent.com/")) {
|
||||
String path = rawUrl.substring(rawUrl.indexOf("raw.githubusercontent.com/") + "raw.githubusercontent.com/".length());
|
||||
String[] parts = path.split("/", 3);
|
||||
if (parts.length >= 3) {
|
||||
String owner = parts[0];
|
||||
String repo = parts[1];
|
||||
String filePath = parts[2];
|
||||
String jsDelivrUrl = "https://cdn.jsdelivr.net/gh/" + owner + "/" + repo + "@main/" + filePath;
|
||||
Logger.d("Github: Raw URL转换: " + rawUrl + " -> " + jsDelivrUrl);
|
||||
return jsDelivrUrl;
|
||||
}
|
||||
}
|
||||
// 转换失败时返回原URL
|
||||
return rawUrl;
|
||||
} catch (Exception e) {
|
||||
Logger.e("Github: Raw URL转换失败: " + e.getMessage());
|
||||
return rawUrl;
|
||||
}
|
||||
}
|
||||
|
||||
// 智能检测是否使用国内镜像
|
||||
public static boolean useCnMirror() {
|
||||
// 如果已经测试过并且在24小时内,直接返回上次的结果
|
||||
|
||||
Reference in New Issue
Block a user