-
麦动KTV V1.4.7 Stable
released this
2026-09-26 17:35:48 +08:00 | 25 commits to master since this release麦动KTV V1.4.7
本版集中修复 极米 H1S(GMUI2.0 / Android 5.1.1 / API 22) 上逐层暴露的兼容性问题。
该设备此前所有版本都无法打开,本版从闪退一路修到能正常点歌播放。修复(按发现顺序,层层叠加)
-
一打开就闪退 —— 存储根目录写死为
/storage/emulated/0/MaidongKTV,在这台机器上不可写
(其外部存储根实际是/mnt/sdcard)→ 建目录抛异常直接中断启动。
改为启动时按「外部存储 → 历史路径 → 应用私有外部目录 → 内部目录」真实探测可写性后选定根目录,
且所有路径一律走运行时 getter(不再编译期内联)。 -
无法下载曲库 —— 曲库服务使用 Let's Encrypt 新证书链
(leaf ← YR2 ← Root YR ← ISRG Root X1),而network_security_config.xml
只在 Android 7.0(API 24)+ 生效,5.1.1 上被忽略、系统信任库也没有 ISRG 新根 → 握手失败。
新增TlsCompat:API<24 时把「系统信任 ∪ 内置根证书」的复合信任库装到HttpsURLConnection;
裸 Socket 通道单独提供同源工厂;WebView 的 SSL 错误不盲目放行,而是用增强信任库对同一主机独立复核。 -
下载时卡死 / 极慢 —— 430MB 曲库按 256KB 分块会回调约 1700 次进度,每次都
main.post
做「改文本 + 改进度 +bringToFront()(整棵视图树重排)」,把主线程队列压满。
进度改为按最终文案去重(刷新次数降到 ≤100),刷新只做真正变化的事,
并在解压/校验阶段补上明细进度。 -
失败原因误报 —— 「曲库分区空间不足(当前可用 6.04GB)」是误判:
ENOSPC也可能来自
inode 耗尽/配额/ROM 限制。改为上报完整异常链 + 真实写入探针 + 挂载点信息,
并清理失败时残留的约 1.4GB 临时文件。 -
点歌「无法生成下载地址」 —— 两层原因:
- 点歌取址的裸 Socket 通道连接阶段没有超时(
Socket(host, port)不受soTimeout约束),
多源叠加会耗光 JS 侧 180 秒预算;HTTPS 分支还用了SSLSocketFactory.getDefault(),
绕过了证书补丁。已改为显式连接超时 + 使用增强信任工厂。 - 更根本:该设备 WebView 不可用(导不出
window.KtvApi),桥永远不就绪,
取址只能回退数据库 → 必然失败。新增SongUrlResolver:用原生代码复刻同一套取址协议
(i.php取 token →music/do.php取地址,多源自动排序 + 广告/错号校验),
走与 JS 完全相同的干净请求通道且不依赖 WebView,作为兜底接入。
- 点歌取址的裸 Socket 通道连接阶段没有超时(
可观测性
- JS 侧日志(
console.log)已桥接进远程日志(JS ...),此前只进 WebView 控制台、现场无法取证。 - 新增
JS-BRIDGE ...(WebView 就绪/失败)、NATIVE-SONG ...(原生取址过程与结果)、
MUSE-DB/DB-SYNC ...(曲库同步各步骤)、RAW-ERR/NET-ERR(请求失败)等上报。 - AGENTS.md 补齐对应约束(API 守卫、存储根运行时解析、老系统 TLS 根证书、高频回调刷 UI、
裸 Socket 三坑、取址双实现同步)。
说明
versionName 1.4.7/versionCode 27,签名与历史版本一致,可直接覆盖安装。- 双 ABI:
armeabi-v7a+arm64-v8a。 - 首次安装需下载曲库约 430MB(解压后约 1GB),请预留约 1.5GB 可用空间。
Downloads
-