计划进度:M2 完成、R-02(V2 file:// 跨域)关闭

- 01_任务分解WBS:M2 标记完成(13 任务),新增 M2 任务明细块与决策/偏差记录
- 03_风险登记册:R-02 关闭(setPathAllowingUniversalAccess 方案 + 真机复测 OK)
- 框架 §7.3:file:// 跨域改为已验证的具体方案(setPathAllowingUniversalAccess),保留 onInterceptRequest 回退
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
lanterngamescn
2026-06-25 18:43:18 +08:00
parent 2100faaef7
commit 40b8c2e91c
3 changed files with 34 additions and 4 deletions
+1 -1
View File
@@ -7,7 +7,7 @@
| ID | 风险 | 概率 | 影响 | 触发信号 | 缓解 / 应对 | 负责人 |
|---|---|---|---|---|---|---|
| **R-01** | **`yy://` 自定义 scheme 的 iframe 导航不被 `onLoadIntercept` 捕获**(桥不通) | 中 | 高(阻断全局) | T-M1-07 验证失败 | 前置到 M1 最先验证;回退:`onInterceptRequest`+`WebSchemeHandler` 注册 `yy` scheme;或改桥 JS 走 `javaScriptProxy.postMessage`(对 H5 透明)。三方案均零改 H5 | 桥/技术负责人 |
| **R-02** | **`file://` 页面跨域受限**H5 的 XHR/fetch 取本地资源失败 | 中 | 高(大厅/子游戏白屏) | T-M2-08 验证失败 | 前置到 M2;回退:自定义协议/`onInterceptRequest` 接管本地资源(框架 §7.3)。必要时把首页改用自定义 scheme 加载 | 台/桥 |
| **R-02 ✅关闭** | **`file://` 页面跨域受限**H5 的 XHR/fetch 取本地资源失败 | 中 | 高(大厅/子游戏白屏) | T-M2-08 验证失败 | **已关闭(2026-06-25)**T-M2-08 首测确被 CORS 拦截(origin 'null'file 不在允许跨域 scheme);采用官方方案 `WebviewController.setPathAllowingUniversalAccess([filesDir/tsgames])` 放开资源根跨域,对 H5 透明(仍 file:// 加载)。模拟器复测 fetch/XHR OK。比 onInterceptRequest 代理更简、无需逐请求拦截 | 台/桥 |
| **R-03** | `MessageCodec` 转义与 lzyzsd 不一致,含特殊字符的 data 解析错位 | 中 | 中 | 含引号/反斜杠/中文的分享文案、JSON data 解析异常 | 单测以 Android 端样例做字节级对照;复用库 JS 原文件 | 桥 |
| **R-04** | **线程问题**:能力回调在非 UI 线程调 `runJavaScript` 崩溃/丢消息 | 中 | 高 | 定位/支付/传感器回调偶发崩溃 | 强制 UI 线程守卫(框架 §5.5);能力回传统一经桥(emitter/UIContext | 桥 |
| **R-05** | **TaskPool Sendable 约束**导致下载/解压回调传参编译/运行失败 | 中 | 中 | `@Concurrent` 报 Sendable 错 | 仅传 Sendable + emitter 回传(§9.1);路径在 UI 线程取好传字符串 | 台 |