云取 YunGet

更新日志

由发布说明本身生成 —— 应用内的「检查更新」读的是同一份数据,所以两处看到的版本与内容永远一致。

发布台账

每次发布、日期、附件数与预发布标记。这里没有一处是手写摘要 ——与下载页渲染的是同一份数据。

本次发布GitHub Release 附件
版本v2.7.10
发布日2026-10-18
安装包YunGet-2.7.10-release.apk
体积30.2 MB
SHA-2568d1c4662667ba104…
运行要求Android 6.0(API 23)
内置引擎TurboDL 0.2.1.0

全部字段由 GitHub API 读取,与下载直链同源

v2.7.102026-10-18 · 1 个附件
v2.7.92026-10-12 · 1 个附件
v2.7.82026-10-12 · 1 个附件
v2.7.72026-10-11 · 1 个附件
v2.7.62026-10-11 · 1 个附件
v2.7.52026-10-11 · 1 个附件
v2.7.42026-10-10 · 1 个附件
v2.7.32026-10-10 · 1 个附件
v2.7.22026-10-10 · 1 个附件
v2.7.12026-10-09 · 1 个附件
v2.7.02026-10-09 · 1 个附件
v2.6.212026-10-08 · 1 个附件
按体量排附件数最多的六次
1 个附件v2.7.10 · 2026-10-18
1 个附件v2.7.9 · 2026-10-12
1 个附件v2.7.8 · 2026-10-12
1 个附件v2.7.7 · 2026-10-11
1 个附件v2.7.6 · 2026-10-11
1 个附件v2.7.5 · 2026-10-11

这里突然多出来,通常意味着构建里新加了一个产物

更新怎么到达设备应用内「检查更新」
数据来源GitHub Release(与本页同一份)
判据semver 比大小,不看发布时间
提醒方式应用内提示 + 变更说明
下载同样从 Release 附件取,可核对 SHA-256
升级覆盖安装,登录状态与下载任务保留

改脚本不升版本号的话,用户永远收不到更新 —— 判据是版本号

版本号怎么读semver
正式版修 bug、加功能都会升这个号
pre 标记预发布:功能可能还在改,装之前想清楚
判据应用内「检查更新」按版本号比大小,不看发布时间
不可改写同一版本的字节变了会被索引拒绝

改了东西就必须升版本号 —— 这是本项目的硬规则,不是建议

v2.7.10

2026-10-18 · 1 个附件

云取 YunGet 2.7.10 这一版只做一件事:原生插件在手机上暂时停用。 为什么停用 原生插件(以前的"L2")是让插件直接以应用的身份跑在应用进程里的一档。它在手机上一直不稳:Android 10 之后系统不允许加载应用自己写出来的插件文件,最后只能靠"读进内存再加载"绕过,越往后系统限制越严。 而且实际效果也配不上这份麻烦——此前发布的四个网盘原生插件,做的事情只是把解析请求转回应用内部本来就有的实现,并没有带来应用自己做不到的能力。 停用之后会怎样 手机版现在只支持脚本插件(JS 插件),装上或更新后立即生效; 插件源里那四个网盘原生插件已经撤下,插件市场不再列出它们; 已经装过原生插件的用户:那几个插件留在手机上但不再参与工作,网盘解析走应用内置实现,功能不受影响;需要的话可以在插件列表里把它们卸载掉。 之后 等云推出了 Windows 版,原生插件会在 Wind…

发布页

v2.7.9

2026-10-12 · 1 个附件

云取 YunGet 2.7.9 修好两件影响日常使用的事:原生插件真正能加载了,图片终于能显示出来。 原生插件现在可以正常运行 上一版换了个目录存放插件包,真机上仍被系统拒绝——原因是 Android 10 之后系统禁止加载"位于可写目录里的插件文件",换到哪个可写目录都一样。这一版改为把插件包读进内存直接加载,全程不落盘,从机制上绕开了这条限制。 装过的网盘插件更新到本版并重启后即可正常加载;插件页不再显示"未运行"。 需要留意:加载原生插件需 Android 8.0 及以上;更低版本会给出明确提示,而不是静默失败。 图片能显示出来了 支持页的赞赏码、插件说明里的图片此前一律直连 GitHub,国内基本加载不出来。原因是应用里的"镜像"设置从来没有传给图片加载器——这个开关一直是空的。修复后: 图片与插件源、应用更新走同一套镜像规则(只对 GitHub 地址生效,失败…

发布页

v2.7.8

2026-10-12 · 1 个附件

云取 YunGet 2.7.8 修掉一个会让插件装不上的验签缺陷,建议所有用户更新。 修复 同一批签名的插件,一部分能装、一部分报"签名验证失败":应用内自带的一套 Ed25519 验签实现里,坐标运算的中间减法没有做取模归一化,导致减法出负数时结果算错——表现为与签名内容相关地随机失败(实测同一批 6 个插件,4 个能装、2 个报错)。这不是发布侧或网络的问题,插件包本身完全正确。修复后所有已发布的插件都能正常校验通过。 顺带修掉同一实现里另一处非规范余数(坐标取反)的隐患。 新增一条回归测试:直接用真实发布的插件文件与索引验证两条验签路径(平台实现与内置实现),防止这类"只有特定输入才触发"的缺陷再次溜过去。 如果你之前遇到 升级前若在插件市场看到"签名验证失败",那 2.7.8 之后重试即可正常安装;不需要重新下载任何插件源数据。

发布页

v2.7.7

2026-10-11 · 1 个附件

云取 YunGet 2.7.7 这个版本修复 2.7.6 在真机上的一个关键问题,建议所有安装了网盘插件的用户更新。 修复 原生插件重启后无法加载:Android 10 及以上系统拒绝从应用数据目录直接加载插件包(系统安全限制,日志表现为 "Writable dex file is not allowed")。现在加载前会把插件包复制到系统允许的位置,装过的原生插件重启后即可正常生效。2.7.6 里安装成功但一直显示"未运行"的插件,更新到本版并重启后即可使用。 安装失败时日志更具体:签名校验失败时,会把实际收到的文件指纹、索引里的签名字段与公钥来源写进诊断日志,远程排查"签名验证失败"类问题不再需要来回猜。

发布页

v2.7.6

2026-10-11 · 1 个附件

云取 YunGet 2.7.6 这个版本把插件系统真正接进了应用本体:此前完成的大部分插件能力只存在于底层,这一版补上了入口,并把一批影响日常使用的问题修掉。 原生插件可以装了 插件市场现在支持原生(L2)插件的完整流程:展示、安装、更新、卸载。原生插件以 jar 包分发,走与 JS 插件同一套校验(SHA-256 摘要、签名、吊销名单),体积上限 32 MB。 原生插件运行在应用进程内,没有沙箱隔离,安装确认页会如实说明这一点。它的任何变更(安装、更新、启停、卸载)都需要重启应用才能生效,相关操作都会明确提示。 插件能参与下载流程 下载完成的文件可以交给处理器插件做收尾(按扩展名匹配;处理器出错不影响下载结果,也不会动到已下载的文件)。 插件注册的下载后端会参与引擎的路由,优先级在内置后端之下。 网盘迁移说明 升级后首次启动会弹一次说明:网盘的分享解析将逐步交给插件处理,你的账号…

发布页

v2.7.5

2026-10-11 · 1 个附件

云取 YunGet 2.7.5 这个版本是网盘插件化的第一步,同时补齐了插件系统与日志系统的一轮能力。 网盘插件化 新增网盘插件统一契约:分享链接识别、分享解析、文件浏览、下载地址获取都由宿主定义接口,插件按契约实现。 下载地址仍由下载引擎执行——插件只提供结构化的下载信息(地址、请求头、有效期),不接管下载过程。多线程分片、断点续传这些能力不会因为用了插件而丢失。 各网盘能力差异较大(115 需要应用内登录页,蓝奏云没有分享解析接口),所以能力是声明式的:应用只调用插件声明过的能力,未声明的不会去调。 内置实现全部保留作为回退:插件未安装、未启用或不可用时,自动使用内置实现并记录日志,网盘功能不会中断。错误也按业务结果区分:需要提取码、需要登录、被风控、分享失效各有各的提示,而不是统一报「出错了」。 插件系统 更新失败可回滚:更新前保存当前版本,装载失败时自动回退并重新装载。…

发布页

v2.7.4

2026-10-10 · 1 个附件

插件系统的四项补齐,外加路上发现并修掉的两个真问题。 引擎同步到 TurboDL 0.2.1.0。 更新失败可回滚(P4) 一次坏更新过去会让插件彻底不可用:脚本已经被覆盖,而没有退路。 现在更新前会把当前版本快照到 filesDir/plugins/rollback/<id>.json (用侧车文件而不是加数据库列——这个项目已经出过一次迁移事故,不值得 为它冒风险)。装载失败会自动回滚、重新装载,并明确告诉你回退到了哪一版。 应用启动时也会体检已启用的插件:过去装载失败只有在你恰好打开插件页时才 暴露,不进那个页就永远发现不了,表现为"下载功能莫名失效,但插件列表看着 一切正常"。 源镜像与失败回退(P5) 候选顺序抽成了纯函数:本源自定义镜像 → 全局 GitHub 镜像 → 直连, 直连永远排最后。索引、脚本、清单、公钥四类请求走同一条回退链。 顺序本身…

发布页

v2.7.3

2026-10-10 · 1 个附件

这次改了什么 内嵌引擎升到 TurboDL 0.2.0.9:下载并发现在会自己收敛,高线程数不再必然更快。 以前你把线程数调高,引擎就真的开那么多连接 —— 不管对面服务器受不受得了。现在它会看总吞吐:多开的连接如果没换来速度,就退回到更低的一档。 为什么值得装 实测同一台机器、同一个文件: | 配置 | 吞吐 | |---|---| | 16 连接 | 30.6 MB/s | | 64 连接 | 8.7 MB/s | | 128 连接 | 6.1 MB/s(慢 5 倍) | 真实链路上也存在「加连接不再变快」的聚合限速。以前这两种情况引擎都不会自己退回来,你只能看着速度掉下去 —— 现在它会退,并在稳定一段时间后重新试一次。 有个细节值得说明 它不会因为「每条连接速度低」就降并发。有些服务端是按连接限速的(每条只有十几 KB/s),单连接速度本来就…

发布页

v2.7.2

2026-10-10 · 1 个附件

YunGet 2.7.2:修 OOM(下载时内存用满导致的崩溃) 问题 崩溃日志: 两处容易看错的地方: 一是崩在了 Okio Watchdog 线程上。 那只是"受害者"——它只是想在 socket 超时时关掉连接, 结果连 64 字节都分配不出来。真正的原因在别处。 二是 268435456 这个数字。 它是 256MiB,正好等于 Android 给这个应用的堆上限, 也正好等于 256 × 1MB。这不是巧合。 根因 引擎每个在飞连接分配一个读缓冲,缓冲大小是固定的 1MB。这个数看着不大,乘上连接数就大了—— 而我在 2.6.22 那一版(提交 71d402e)把线程上限从 128 提到了引擎支持的 256: 缓冲都是活对象(正被下载协程引用),GC 一个都回收不掉,所以是"占满"而不是"垃圾太多"。 触发条件很普通:线程数调到高 +…

发布页

v2.7.1

2026-10-09 · 1 个附件

YunGet 2.7.1:修下载页崩溃与 JS 引擎误报 这两个问题都在 2.7.0 引入,也都由你真机实报。它们有一个共同点:错在判断,不在功能—— 一个是把界面画崩的用法错误,一个是把好的引擎报成坏的。 下载页一进去就崩 崩在速度曲线的横轴上。我给横轴传了一个"返回空串"的格式化器,本意是让横轴不显示刻度, 但 Vico 明确禁止这么做:它把空标签当成用法错误,在绘制阶段直接抛异常,并在报错里写明了 正确做法——要控制哪些刻度显示标签,应该用 ItemPlacer,而不是让格式化器返回空串。 纵轴的"速度为零时不显示标签"是同一类错误,只是恰好没被触发到,一并改掉了。 横轴现在整条不传:它的刻度是采样点序号,对用户本来就没有信息量。 顺带把格式化逻辑抽出来配了测试,锁住"任何输入都不返回空串"这条契约。它能让应用崩溃, 但编译器不会拦——只能靠测试。覆盖了零、负数、各量级进…

发布页

v2.7.0

2026-10-09 · 1 个附件

YunGet 2.7.0:插件体系落地 + 界面大升级 这一版有两件事。一是把「JS 插件」从设计文档变成应用里真能用的东西:能装、能写、能更新。 二是把界面整体重排了一遍,并顺手修掉了几个一直存在但没人报的缺陷。 插件:现在真的能用了 以前插件只是引擎里的一个接口,应用里既装不了也写不了。这一版补齐了整条链路: 自己写 —— 内置编辑器,保存前先做语法预检。写错了当场告诉你哪一行有问题,而不是等下载时才发现脚本根本没加载。编辑器里有模板可以照着改。 从市场装 —— 插件市场支持添加插件源、浏览、一键安装,以及检查更新。装过的插件有更新时会提示,点一下就更新。 一个插件可以管多个协议 —— 不必给每个协议写一个插件。插件在清单里声明自己支持哪些协议(比如一个插件同时声明 magnet 和 bt),引擎在加载时建立索引,之后按协议查表。分成太多插件会让加载和切…

发布页

v2.6.21

2026-10-08 · 1 个附件

YunGet 2.6.21:修复「下载地址循环跳转」;引擎跟进到 TurboDL 0.2.0.6 -- 先说清楚这一版和上一版的关系 2.6.20 修的是「缺少下载参数」,这一版修的是「下载地址循环跳转」。两者是同一链路上的两个独立缺陷, 在 2.6.19 里就已经并存 —— 只是循环跳转被前面那个错误挡着,流程根本走不到那里; 2.6.20 修好第一步之后,它才第一次露出来。 修复:循环跳转 根因:命中 acw_sc__v2 人机校验页时,代码会算出 Cookie 然后重放同一个地址 —— 那是设计好的第二次请求。而循环检测只按 URL 去重,于是这次重放必然被判成循环。 换句话说,这条重放路径从来没有成功过:凡是碰上校验页的下载,最后都会以「循环跳转」收场。 修法:判据从「这个地址访问过吗」改成「这个地址带着这份 Cookie访问过…

发布页

完整历史