Skip to content

HaRu 2.6.0

Choose a tag to compare

@github-actions github-actions released this 17 Oct 10:47
· 2 commits to main since this release

HaRu 2.6.0

本次更新带来应用内一键更新:启动时会静默检查新版本,发现更新即弹窗提示,也可以在「我的 → 关于 HaRu → 检查更新」手动检查,确认后 App 自行下载安装包并调起系统安装确认页完成覆盖安装,不必再跳浏览器手动下载。此外还重构了视频详情页的折叠播放器与吸顶页签,把大页面 HTML 解析移出主线程,并为本地库补齐视频 ID 索引,进入详情页、打开本地库与冷启动都更跟手。

应用内一键更新

  • 启动时静默检查新版本:每次启动后自动检查一次(10 秒超时,失败或不支持的环境直接静默,不打扰使用);发现新版本时弹出「发现新版本」对话框,展示版本号与更新说明,同一个版本只提示一次,忽略后不会每次开 App 都再弹;
  • 检查更新页新增「一键更新」:在「我的 → 关于 HaRu → 检查更新」可随时手动检查,查到新版本时页面直接给出「一键更新」按钮,而不再只是跳转 GitHub 页面;
  • App 内下载并调起系统安装:确认后在 App 内下载 APK,对话框实时显示「已下载 X / Y」进度并可中途取消;下载完成先校验文件大小与 SHA256,校验通过后通过系统安装会话调起安装确认页,直接覆盖安装现有版本,不再出现「打开方式」选择器;
  • 异常场景给出明确指引:未开启「安装未知应用」权限时先引导到系统设置、返回后自动继续安装;安装包校验失败、文件写入失败、设备存储空间不足、签名与已安装版本不一致、设备不支持自动安装时,都会提示具体原因;若该版本没有可下载的安装包,则自动打开 GitHub 发布页供手动下载;
  • 更新源多通道回退:GitHub API 被限流时自动回退到 Release 页的 SHA256SUMS.txt 与 Atom Feed 补全安装包直链,仍找不到可用安装包才退回打开发布页。

Hanime1 接口梳理与解析加固

  • 大页面解析移出主线程:Hanime1 的列表页与详情页 HTML 常在 100KB 以上,同步解析会占用主线程并造成掉帧;超过体积阈值的页面现在会下放到后台 Isolate 解析,搜索与详情页滚动更顺滑;
  • 写操作提交路径统一:点赞、稍后观看、播放列表、评论与举报、账号资料与头像等写操作统一按站点要求携带令牌并区分请求方式,失败时保留可排查的日志上下文,不再只抛一个笼统错误;
  • 错误提示可读化:评论发布、回复加载、举报、账号资料修改与头像更新等失败提示,不再显示英文异常串。

视频详情页重构

  • 折叠播放器与吸顶页签:收起播放器后页签栏始终吸顶;播放中或置顶时,外层与内层滚动不再相互争抢,连续滑动不会再出现反复折叠 / 展开的抖动;
  • 加载骨架屏:详情数据到达前显示骨架占位,不再先白屏再突然排版跳动;
  • 断网恢复后自动刷新:网络从离线恢复时自动重新拉取详情,不需要手动返回再进;
  • 详情组件拆分重构:点赞 / 稍后观看 / 下载 / 分享等动作按钮、观看数与发布日期等统计信息、Hanime 折叠简介与系列剧集横条均拆为独立组件;剧集面板可展开为底部全量列表,并自动把当前剧集滚动到视口中央;
  • 播放出错提示更友好:播放源初始化失败与刷新播放地址失败时给出中文原因,播放器控制台只在可见性或缓冲状态变化时重建,减少无谓刷新。

网络层、数据库与细节修复

  • 网络底座共享且能干净释放:同一站点的多个请求复用同一份底层原生网络适配器(按 UA、HTTP/2、QUIC 区分),避免重复创建造成的资源泄漏;App 退出时统一释放;已释放的请求明确报错而不再被误判成「用户已取消」,两个站点仍各自持有独立网络底座、互不干扰;
  • 本地库数据库升级到 v14:为本地库的视频 ID 建立索引,按视频查询「在哪个库」与「是否存在」从全表扫描变为近乎即时;精选媒体库的匹配条件下推到数据库执行、库名判断改在内存集合中完成,冷启动更快(老版本升级时自动迁移,数据不丢失);
  • 下载进度不再频繁写库:下载进度改为每 500 毫秒、每 1MB 或每 1% 变化才写入一次数据库,完成时补写最终大小,下载列表更跟手,也减少无谓的磁盘写入;
  • 统一中文错误与可重试错误页:网络异常、HTTP 状态码、本地数据库读写异常、安全证书校验失败、超时与页面解析失败统一转换为中文说明;本地库、搜索建议等列表出错时提供「重试」按钮,不再是整屏英文异常;
  • 站点徽章区分选中态:底部导航的 R / H 徽章未选中时为描边样式、选中时恢复红底,当前停留在哪个站点一眼可辨;
  • 标签翻译联想更跟手:内置中文词条的归一化结果改为预先计算,输入时不再对每条词条重复做小写化与空白处理;
  • 缩略图按显示尺寸解码:列表封面按卡片实际宽度(乘设备像素比)解码并限制内存缓存尺寸,长列表更省内存;加载占位由逐卡转圈改为静态占位块,滚动观感更稳;
  • 启动默认站点更确定:默认入口站点在初始化阶段就完成同步,不再出现首帧渲染后又被动切换站点的情况。