删除"歌曲源临时受限"弹窗, 取址失败只保留一个提示
- 删除 Eac19WindowGuard.onBlocked 及其弹窗(含 MainActivity 处理器、60 秒去重、lastAllFailedAt 访问器) - 取址失败现在只有一句用户可见提示: onAllFailed → "远程源已全部失效,等待新版本修复"(15 分钟节流) - 风控 403 改为只写日志: noteRiskBlocked() 落 SOURCE-BLOCKED 源站风控 403… 到远程日志与本地 logs/ktv.log (保留它是为了区分"403 风控"与"只发广告"两种受限原因, 删掉会失去现场判断依据) - 类注释与 AGENTS 段落同步更新 版本号按规则 3: 1.5.6(38) → 1.5.7(39); 本地打包(未发布) 验证: assembleRelease + 单元测试(9 例全过); 全局检索无 onBlocked/lastAllFailedAt 残留
This commit is contained in:
@@ -195,8 +195,8 @@ $BT/apksigner verify 目标名.apk
|
||||
|
||||
### 版本号
|
||||
|
||||
- `app/build.gradle`:`versionName "1.5.6"` / `versionCode 38`
|
||||
(`1.5.5`/`37` 已发布;`1.5.6` 是"更新源加 Gitee"这一改动的版本号,尚未打包。18~21 曾被本机临时诊断包占用)
|
||||
- `app/build.gradle`:`versionName "1.5.7"` / `versionCode 39`
|
||||
(`1.5.5`/`37` 已发布;`1.5.6` = 更新源加 Gitee、`1.5.7` = 删除「歌曲源临时受限」弹窗,均尚未发布。18~21 曾被本机临时诊断包占用)
|
||||
- App 内显示统一用纯版本号(不加 `(versionCode)` 括号)
|
||||
- ⚠️ **发布构建已开启 NewApi 闸门**(`lint { checkReleaseBuilds true; fatal += ['NewApi'] }`):
|
||||
任何「调用了高于 `minSdk 21` 且未做版本守卫的 API」都会让 `assembleRelease` 直接失败。
|
||||
@@ -426,12 +426,12 @@ $BT/apksigner verify 目标名.apk
|
||||
`APP-INIT ... logFile=<路径>` 指明位置;
|
||||
4. `MiliLog.init` 已提到 **`KtvApplication.onCreate`**(早于 `MainActivity`),
|
||||
这样即使更早的初始化抛异常,也已经有日志可查。
|
||||
- ⚠️ **"所有源都取不到地址"必须给用户一句明确的话(2026-10 用户要求)**:
|
||||
- ⚠️ **取址失败只有一句用户可见提示(2026-10 用户要求,后经调整)**:
|
||||
`Eac19WindowGuard.onAllFailed` ← `noteAllSourcesFailed()`,
|
||||
由 `SongUrlResolver.resolve()` 在**本轮彻底失败**时调用(403 / 只发广告 / 网络异常都算),
|
||||
弹窗文案固定为 **「远程源已全部失效,等待新版本修复」**。
|
||||
它与 `onBlocked`(风控 403 → "换公网 IP")常常同时触发,因此 `onBlocked` 处理器里
|
||||
用 `lastAllFailedAt()` 做了 60 秒去重,**不允许同时弹两个框**;两者都按 15 分钟节流。
|
||||
弹窗文案固定为 **「远程源已全部失效,等待新版本修复」**,按 15 分钟节流。
|
||||
⚠️ **原先的「歌曲源临时受限…请重启光猫换 IP」弹窗(`onBlocked`)已删除** ——
|
||||
风控 403 现在只由 `noteRiskBlocked()` 写日志(`SOURCE-BLOCKED 源站风控 403…`),不再有第二个框。
|
||||
以前这里只有一句"无法生成下载地址"的 toast,用户看着像界面没反应。
|
||||
- 一段典型现场日志应为:`BOOT` → `STORAGE` → (点歌)`点歌编号=... 请求源=... 状态=成功 urlHost=...`
|
||||
→ `PLAY ... src=local` → 每 6h `HEALTH ...`;异常时才有 `RAW-ERR`/`NET-ERR`/`NATIVE-SONG ...失败`。
|
||||
@@ -460,7 +460,7 @@ $BT/apksigner verify 目标名.apk
|
||||
所以**别把它们当成"授权正常"**。
|
||||
- 代码侧已处理:`SongUrlResolver` 统计"全部源只返回不可信地址"→ 打
|
||||
`SOURCE-BLOCKED 全部 N 个源只返回广告/测试资源(该出口 IP 授权窗口失效)示例=<url>`
|
||||
并调用 `Eac19WindowGuard.noteRiskBlocked()`(弹「歌曲源临时受限」引导重启光猫/路由器换 IP),
|
||||
并调用 `Eac19WindowGuard.noteRiskBlocked()`(**只写日志**;其弹窗已删除),
|
||||
同时进入 3 分钟冷却(`BLOCKED_COOLDOWN_MS`)避免继续冲击源站;拿到真源立即解除。
|
||||
- 现场处置:**更换公网出口 IP**(重启光猫/路由器重拨)即恢复;已下载的歌曲不受影响照常播。
|
||||
- **403 也是受限信号**:2026-10 实测**主源 `w.w345.my/i.php` 直接返回 HTTP 403**、
|
||||
|
||||
Reference in New Issue
Block a user