• v1.5.1 b40a2bdf9b

    zijunchiang released this 2026-09-26 22:34:06 +08:00 | 19 commits to master since this release

    麦动KTV V1.5.1

    本次从 1.4.7 直接升级到 1.5.1,中间 1.4.8 ~ 1.5.1 的修复全部包含。
    ⚠️ 本版本号已于发布后撤回并重新发布(修复"切歌→公放在老设备卡死"),
    请以本次附件为准(内部 versionCode 33)。

    本版修复:点歌列表「切歌」到公放列表时,老设备(极米 H1S)卡死

    新设备正常、老设备卡死,排查出三个叠加原因,都属于"新设备看不出来、老设备致命":

    1. 切歌任务排在长任务后面:切歌用的是 4 线程的公共线程池,而"点歌即下即播"这类几十秒的
      长任务也在同一个池里。老设备网速慢,并发点几首歌就把池占满,切歌任务一直排队 ——
      表现就是按了切歌不动、旧歌播完后没声。
      → 切歌/随机续播改用专用线程,与下载彻底隔离。

    2. 切歌时现扫目录找候选:候选列表的构建代价是"每个文件在头尾各读约 4.3MB 做格式校验",
      并且会遍历外置存储各挂载点(老 ROM 上的失效挂载点可能让目录列举永久阻塞)。
      → 改为启动时后台预热候选缓存(带超时保护),下载完成即时补充,切歌直接读缓存(零 I/O)。

    3. 主线程上做深度文件校验:判断"本地是否有可播文件"的接口会真实读取文件头尾各 4.3MB,
      却被用在播放、播放错误回调、以及列表逐行渲染里 —— 老设备的慢存储上每次都是数秒卡顿
      (直接 ANR)。
      → 播放/渲染路径改为只看文件存在与大小的廉价检查,深度校验只保留在后台。

    同版本内已包含的历史修复

    • 点歌最后一首按「切歌」后卡死:原逻辑清空了播放状态却没停播放器,导致那首歌播完后回调被
      丢弃、再也无法推进。现改为在点歌清单最后一首上按切歌 → 直接转入公放;其它情形保持原逻辑;
      公放清单与点歌清单互不影响。并且所有"清空播放状态"的出口都补齐了显式停播。
    • 公放时按「切歌」没反应:上一版启动清理把整个歌曲缓存目录删了(该目录同时就是公放曲库)。
      现改为只清理"多首不同歌曲内容完全相同"的注入广告副本,正常歌曲绝不动。
    • 广告视频被当成歌曲播放(gz.ac16.vip):建立统一的可信地址闸门,任何来源的播放地址都要
      通过校验(非 http(s) / 广告域名或路径 / .ts 文件名与点歌编号不符 一律拒绝),并附回归测试。
    • 启动被误判成"断网恢复":启动瞬间不再执行重建会话等恢复动作,状态栏也不会错显"网络已恢复"。
    • 点歌取址白等 15 秒:桥一旦判定不可用即记住,后续点歌取址降到 0.3~0.7 秒。
    • 老设备(极米 H1S / GMUI2.0 / Android 5.1.1)累计修复:该机型此前所有版本都打不开 ——
      启动闪退(存储根目录写死)→ 无法下载曲库(老系统不认 Let's Encrypt 新证书链)→
      下载卡死/极慢(高频进度回调压死主线程)→ 点歌"无法生成下载地址"(该机 WebView 为 Chrome 39,
      脚本无法解析)。现已可正常点歌播放。

    说明

    • versionName 1.5.1 / versionCode 33,签名与历史版本一致,可直接覆盖安装。
    • 双 ABI:armeabi-v7a + arm64-v8a。
    • 首次安装需下载曲库约 430MB(解压后约 1GB),请预留约 1.5GB 可用空间。
    Downloads