Seetong · Report

🎯 Seetong 问题雷达 09:00 第223期

时间窗口:2026-10-09 17:00:00 ~ 2026-10-10 09:00:00(Asia/Shanghai)

📌TL;DR 核心要点

🟠 问题 1:HarmonyOS 1.1.1.11 回放/录像链路多点不可用,本窗口跨 6 机型聚集 7 条(详细分析)

1. 现象与覆盖范围

反馈 ID机型地区时间原话(脱敏)
256428HUAWEI HBP-AL00河北邯郸魏县10-10 09:00:14无法录像
256427HUAWEI HBP-AL00河北邯郸魏县10-10 09:00:12无法录像
256425HUAWEI LMR-AL00天津红桥区10-10 08:48:28手机没画面
256418HUAWEI BRA-AL00河南濮阳南乐县10-10 08:08:02卡回放老是卡死
256407HUAWEI TLR-AL00黑龙江哈尔滨10-10 06:47:13手机不能查看了
256406HUAWEI PLA-AL10江苏徐州鼓楼区10-10 06:36:54录像播放不顺畅,又堵又卡还经常查不到图像。
256358HUAWEI SGT-AL50上海静安区10-09 20:41:23回看打不开卡的要死

2. 神策证据(核心数据源)

平台成功(人数)失败(人数)失败占比
Android6,553,180554,3727.81%
iOS1,804,457181,5729.15%
HarmonyOS1,392,128106,8347.13%
macOS3303710.08%
日期成功失败失败占比
10-031,480,262127,5557.93%
10-041,474,945123,8997.75%
10-051,443,444121,2677.75%
10-061,440,280120,6077.73%
10-071,440,581123,3517.89%
10-081,427,436110,9067.21%
10-091,392,166106,8357.13%

⇒ 失败占比当日最低(7.13%),7 天区间 7.13%~7.93% 平稳,无线上劣化趋势;说明本问题不是平台级回归,更可能是个别设备 / 个别网络 / 特定机型固件组合的低频聚集

3. Logan 关键日志(核心数据源)

6. 代码定位(详细)

PlayBackPage.pageDidAppear() → 准备回放参数 → playBackView.playVideoAction(devId, PLAY/FAST/SEEK, …) → renderView.callMethod("playVideoAction", …) → 原生 KMP 播放器 → 首帧回调 markPlaybackFirstFrame(devId) → showVideoMask=false

  1. playVideoAction() 的 devId 一致性前置判断——若设备切换/通道换绑后 this.devId 未同步,指令被静默丢弃(无日志、无提示),外部表现即「点了没反应/卡死」
  2. 首帧回调 markPlaybackFirstFrame 未触发时,页面停留在 showVideoLoading=true(外部表现「转圈/打不开」)
  3. HarmonyOS 侧回放页面与 KMP 共享层的生命周期绑定是否在返回前台后重建(需 ArkTS 侧证据)

7. 根因结论

  1. 反馈原话 7 条跨 6 机型 6 地区(聚集强度)
  2. 神策 MonitorFrameResult HarmonyOS 失败占比 7.13%(当日最低,排除平台回归)
  3. 神策 fail_reason 字段未上报(归因能力缺口)
  4. 7 条反馈 Logan 全空(证据链缺口)

8. 建议下一步

  1. 补齐 HarmonyOS 端 Logan 上报(回放/录像场景强制附带日志),这是根治「Harmony 反馈不可定位」的前置能力问题,优先级高于单次问题修复
  2. 在 playVideoAction() 的 devId 不匹配分支补显式日志 + 用户可见失败提示(当前静默丢弃)
  3. 给首帧回调补超时兜底(markPlaybackFirstFrame 未达时退出 loading)

🟠 问题 2:Android 云回放小窗口触发 App 冷启动重启(vivo V2148A / 8.3.14.2)(详细分析)

1. 现象与覆盖范围

2. 神策证据(核心数据源)

3. Logan 关键日志(核心数据源,含类名:行号 + PID 证据)

关键发现 1:两次冷启动 PID 切换(重启的硬件级证据)

logcat 段首行时间PID说明
seetong_logcat_0.log10-09 19:53:35.6124809冷启动 ①
seetong_logcat_1.log——空文件
seetong_logcat_2.log10-09 19:59:47.88816379冷启动 ②(PID 变更 = 进程被杀后重启)
seetong_logcat_3.log10-08 16:09:58.66715348前一日冷启动(历史样本)

⇒ 19:53:35 → 19:59:47 的 6 分 12 秒内,进程从 PID 4809 变为 PID 16379,两次均为 LoadedApk: Unable to instantiate appComponentFactory 起始的完整冷启动序列(LoadedApk → SeetongLog: Logan not init → UMCrash 初始化 → Matrix.AnrTracer)

关键发现 2:冷启动序列原文(seetong_logcat_2.log)

[L2] 10-09 19:59:47.888 16379 16379 E LoadedApk: Unable to instantiate appComponentFactory
[L3] 10-09 19:59:47.888 16379 16379 E LoadedApk: java.lang.ClassNotFoundException: Didn't find class
     "androidx.core.app.CoreComponentFactory"
[L38] 10-09 19:59:48.381 16379 16460 E SeetongLog: Logan not init...Please initialize Logan first
[L39] 10-09 19:59:48.395 16379 16459 E UMCrash : ==================可接入免费的网络分析能力!!!===================
[L47] 10-09 19:59:48.407 16379 16379 I         : [App version:]********
[L56] 10-09 19:59:48.418 16379 16469 I Matrix.AnrTracer: anrTrace, final mAnrBeatTime:400, mAnrBeatRate:400

关键发现 3:日志中不存在崩溃栈

⇒ 重启并非由 Java 崩溃栈引起(无 FATAL),符合「系统级进程终止 / 内存压力 / 原生层 fatal signal 未落 logcat」三类成因。必须补 logcat -b crash 与 tombstone 才能定因(列入待补证)。

6. 代码定位(详细)

云回放页 → 录像列表 → 点击「查看录像小窗口」 → 小窗播放器初始化 → playVideoAction(...) → renderView?.callMethod("playVideoAction", …)

  1. 小窗模式下的播放器实例生命周期——若小窗创建了第二个 KMPCloudPlaybackVideoView 实例,而未释放原实例的 Surface / 原生解码器,可能触发原生层资源冲突
  2. devId 一致性判断(moduleBase/.../KMPPlayBackVideoView.kt:105 if (this.devId == pDevId))在小窗切换时未同步 this.devId,导致指令错投
  3. 宿主侧与小窗相关的 UI 抢焦点 / SurfaceView 重挂载路径(需 Android 宿主 app 模块对应 Activity 证据)

① 核对小窗播放器的创建与释放是否成对(当前仅见 releasePlay() 在「页面销毁或切换设备时」调用);
② 在小窗入口补 devId 绑定同步;
③ 补 logcat -b crash 采集能力,否则此类重启永远只能靠 PID 推断

7. 根因结论

  1. OBS logcat PID 切换(4809 → 16379,间隔 6 分 12 秒)
  2. 两段完整冷启动序列(LoadedApk → UMCrash 初始化)
  3. 反馈原话「点击查看录像小窗口,APP重启」与时间窗吻合(反馈提交 20:01:43,重启 19:59:47,间隔 116 秒)
  4. fail_reason / MonitorScreenExit / 冷启动埋点三处均无神策数据(反证:不能靠埋点定性)

8. 建议下一步

  1. 拿 256347 的 OBS 附件与本次分析对照,用 adb logcat -b crash 复跑该路径,判定是否 native crash / 系统 kill
  2. 核对小窗播放器实例的创建—释放配对
  3. 回访用户 15989469220 确认机型、复现步骤与设备通道配置(该用户设备为 64 通道 NVR,devChannelStates 含异常位)

本期扫描全量(全部沉淀到知识库)

汇总:扫描 128 条 / 进雷达 2 条 / 排除 126 条(🟢 无效 9 🟡 配置·咨询 6 🟣 网络 77 🟤 建议·商业化 34)

#关键词反馈数分类处置
1-102 / -101 手机网络类(含多语言)77🟣 网络问题已排除(普遍类)
2HarmonyOS 1.1.1.11 回放/录像/查看7🔴 进雷达详细分析见问题 1
3Android 云回放小窗 App 重启1🔴 进雷达详细分析见问题 2
4登录失败 30100222 / 30100225(第三方登录)1🟡 配置·咨询已排除(低量常驻,见下)
5设备掉线/离线(256405 / 256376 / 256368 / 256308)4🟡 配置·咨询已排除(单点、无 Logan)
6卡顿/加载慢(256411 / 256404 / 256358 等)4🟡 配置·咨询部分并入问题 1,其余排除
7建议·商业化(黑夜模式、字号、访问记录等)6🟤 心愿单已排除
8摄像头闪白光 / 黑白 / 不转动(咨询类)4🟡 配置·咨询已排除(硬件咨询)
9无意义文本 / 测试数据 / 纯数字9🟢 无效已排除
10其余零散(账号错误、微信关联、客服等待、警戒音等)15🟤 建议/其他已排除

排除项补充说明(登录失败 30100222 / 30100225):

错误码含义(STResponseModel.h)10-0310-0410-0510-0610-0710-0810-09
30100222第三方授权码不能为空78851032
30100225授权码校验失败399364343339292271258

数据源状态汇总

数据源状态说明
反馈接口✅ 完整total=128 / fetched=128 / complete=true,3 页翻完,无截断
神策✅ 可用MonitorFrameResult(按 $os × is_success × 日期)、DeviceVideoPlayback、Login(按 error_code)三组查询成功;fail_reason 字段全端未上报、MonitorScreenExit 当日为 0、UCRemotePlaybackOperation 覆盖仅 9 人 —— 三处观测盲区已标注
Logan⚠️ 严重受限问题 1:7 条反馈 Logan 全空(Harmony 未上报);问题 2:256347 全量可用(1,931,653 字节 / 310,100 行)+ OBS logcat 4 段
友盟➖ 未查询两问题均非崩溃 / ANR 关键词(问题 2 无 Java 崩溃栈),按 Stage 2c 规则不触发
TAPD✅ 已关联问题 1 沿用 T-20260926-170258-2226;问题 2 新建任务,均不重复创单

待补证


下一期 = 第224期 = 2026-10-10-H17(今天下午 17:00;本期为 09:00 正期,窗口 昨日 17:00 ~ 今日 09:00)

🗂️历史期次