Files
matrix-screen-controller/移动端相关内容/安卓app/测试结果归档/2026-09-25_重启与连接恢复.md
T

64 lines
9.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 重启后连接恢复与联调记录
用户确认全部机器已重启,并明确授权 root 切换专用测试手机蓝牙。重新执行手机登记/USB 授权和核桃派凭据门禁,未沿用前一日进程、连接或运行目录判断。
## 初始状态与授权操作
- android-test-a USB 调试与登记身份核验通过。
- 核桃派主服务、bluetooth.service、aw859-bluetooth.service 均 active;mobile.available=true,初始无控制会话、收发计数为 0。
- root 返回 UID 0;关闭手机蓝牙后验证 bluetooth_on=0,恢复后验证为 1。仅操作授权蓝牙用途,未扩展系统修改。
## 故障证据与修复
重启后首次测试失败。手机日志显示连接已建立,先回调缓存 MTU 517,随后才完成 MTU 247 协商;App 在缓存回调中提前调用 discoverServices,没有获得 onServicesDiscovered,之后连接被释放。
Android 修复:等待实际不大于 247 的 MTU 回调后启动一次服务发现;未出现该回调则 2 秒后备启动;关闭取消后备任务。保留此前超时清理及仅握手前有限重试。设备代码、协议格式与显示驱动未改,未重新部署设备。
修复后日志显示 MTU 247 回调后服务发现成功、通知订阅完成。`BleIntegrationTest --poll-cycles 0` 通过,115.718 秒:两次真实加密会话、状态/容量/设置/内容/帧/网络只读接口、生产 Controller 三页与缩略图队列、短后台返回取消释放、后台 30 秒释放以及前台重连。此模式不替代 60 轮持续读取;完整复测另外记录。
## 后续联调记录(按事件保留)
DNS 修复开发部署成功,主服务与 mobile.available 均正常;回退副本保留在 `/opt/matrix-screen-controller.mobile-backup-82b8d262a76b`,本轮不导出 IMG/OTA、不推进设备 VERSION。修复后使用独立重建 APK 执行真实 BLE 原网络重新应用,123.272 秒整体通过:保存的静态 IPv4 字段不变、密码保留、网络任务成功、重新连接当前网络、BLE 后续请求与 Controller 生命周期正常。
真实网络激活首轮在保存前返回 BAD_REQUEST。只读诊断确认:当前为静态 IPv4,nmcli 把多个 DNS 返回为逗号分隔单行,原解析按换行,validate_wifi_settings 拒绝该混合字符串。修复设备端 read_saved 兼容逗号/换行并去重,新增三种格式的密码保留往返测试;网络/移动控制/API 共 46 项回归通过。更新设备功能时间为 2026-09-25T16:10+08:00,版本号不变;部署和重新应用网络的结果另行记录。
独立重建:从中文源码目录通过文档脚本复制到新建、包含空格的 ASCII 构建根目录,所有 92 个构建任务执行,JVM 测试、debug APK、instrumentation APK 均成功。此验证不依赖旧构建目录,也不要求不同构建路径产出字节相同 APK。
BLE WiFi 扫描、拒绝故意过期的配置修订后继续 ping、10 轮状态/帧读取及 Controller 生命周期组合测试通过(159.495 秒)。本机 mobile protocol/session/control 与 dedicated_host 共 33 项 pytest 通过;依赖产生弃用提示,未记为测试失败。
并行运行 150 秒性能采样,保存 122 个有效样本,详见 `2026-09-25_BLE_WiFi性能样本.json`。期间原有动画持续运行,未切换内容;完成帧增加 14578,截止丢失增加 1,OE 故障增加 0,未发现驱动错误。未连接 20 样本:平均刷新 97.379 Hz、应用 CPU 平均 26.74%;连接 102 样本:平均刷新 97.416 Hz、CPU 平均 27.07%;两组应用内存最大均 233.10 MiB。此为同一运行窗口的观察值,包含 WiFi 扫描和帧读取,不能替代蓝牙关闭前后的受控对照;不宣称零丢失。
第二台手机后续结果:用户明确报告连接成功,执行了一些操作且未发现问题,随后退出第二台 App。操作清单没有逐项登记,因此只记录“第二台接入和用户手动操作通过”,不推定 WiFi 切换/所有写操作已覆盖。退出后板端复核 connected=false、ActiveInstances=1,释放与恢复广播通过。主机占用时不可扫描、异常退出后第二台接入、第二台退出后广播恢复的普通双手机流程已完成。
双手机分阶段验收:用户在第二台手机扫描,报告看不到设备;同步板端确认主测试机控制会话仍 connected=true,BlueZ ActiveInstances=0,符合占用时暂停广播。随后通过正常 ADB force-stop 主测试 App 验证异常退出释放;板端确认 connected=false、ActiveInstances=1,广播恢复。当时请求第二台重新扫描并连接;后续用户已确认成功,见本节第二台结果。本项仅证明普通扫描入口未提供抢占机会,不把它夸大为恶意客户端无法尝试连接的证明。
真实 systemd 主服务 stop/start 测试通过:RuntimeDirectory 的测试 sentinel 在停服及重新启动后均保留;config.json、wifi_config.json、mobile/identity.json 摘要不变;服务启动后 mobile.available=true 且无残留手机会话。测试 sentinel 已清理。随后正常启动主测试 App 并确认重新连接成功。该项不等同完整故障回滚或 OTA 测试。
用户随后明确授权 root 自动点击本 App。直接从 instrumentation 执行带引号的命令未达到预期点击效果,改用只在授权模式推送的 shell 辅助脚本:核对本 App 为前台、限制 tap 的数字参数/Home、验证成功标记,结束删除脚本。真实 `AppLifecycleTest --root-input` 通过,49.45 秒:自动连接、内容/设置/设备页切换、Home 后等待 33 秒、返回自动重连和主动断开。未操作其他 App、系统安全开关或摄像头。
实际 Activity 测试结果:第一次被 MIUI 的后台启动限制拒绝;测试改为正常 shell 显式启动 App 后,App 前台与自动连接检查通过,但点击“内容”时被系统拒绝,错误为 INJECT_EVENTS 权限不足。不能记为三页 UI 自动化通过。已准备可选 `--test activity --root-input`,只根据本 App 语义控件的当前中心位置点击,并允许 Home 键验证后台;不改系统权限/安全开关、不操作其他 App。当时属于新 root 用途,因而暂停;用户随后明确授权并通过测试,结果见上段。测试 APK 编译通过。
完整 `BleIntegrationTest` 随后通过,290.908 秒,包含默认 60 轮持续读取及全部 Controller 前后台流程。`lintDebug` 通过,0 错误、14 警告;警告主要为依赖可升级提示、版本目录建议、KTX 建议、低版本忽略高版本权限属性,以及应用图标/备份规则配置建议。未为消除升级提示改动已锁定工具链。APK 使用现有 Android Debug 证书,签名验证通过。
上述已完成项目均分别记录;其余未覆盖场景见实施状态,当前不宣称全部首版验收完成。视觉检查不适用,未启动相机或切换实屏图案。
## 断线状态清理版本的复测
新增 ControllerRecoveryTest 三项测试通过:传输失败后清空旧画面与状态并可重连、主动断开取消在途操作、旧扫描回调不能污染新扫描。真实 Activity 蓝牙切换/三页/后台释放/返回重连通过,65.637 秒。
该版之后的 BLE 持续回归完成 60 轮读取;测试主动关闭第一会话后,第二次 GATT 建立两次返回状态 62,整项失败,191.663 秒。手机日志显示第一会话由测试正常 close,不能将这次失败描述为持续读取期间的莫名掉线。板端复核 available=true、connected=false,广播实例为 1。测试修改为第二次连接前重新扫描,与正式 App 路径一致;仅凭此修改不能证明地址复用就是根因,复测结果须另行登记。
## 本机完整回归
全套 pytest 首次为 456 通过、1 失败、9 跳过。唯一失败是 index.html 添加手机连接状态后 ui-copy.json 未重新生成;运行正式生成器更新 424 条文案索引后,test_ui_copy_editor.py 的 10 项全部通过。新增生成索引也加入开发部署清单。跳过项不能计作通过,不用本机 mock 结果替代板端硬件测试。
仓库卫生检查通过,562 个 Git 候选文件,未输出真实凭据。未启动正式签名、IMG 或 OTA 导出。
重新扫描连接版本完整 BLE 真机复测通过,277.369 秒:60 轮状态/帧读取、第二次扫描与加密握手、生产 Controller 三页数据、缩略图、后台释放及返回重连。该 APK 同时包含预览确认时间/过期提示与开机默认内容回读。之前 GATT 状态 62 的失败仍保留,不以单次成功宣称全部无线环境绝无断线。
真实开发部署故障恢复通过:安装文件与 unit 后故意退出 97,同一 EXIT 回滚路径恢复程序;被部署文件及 config.json、wifi_config.json、mobile/identity.json 摘要与测试前一致,服务 active。随后真实 stop/start 五项全部通过,BLE available 且无残留会话。故障测试副本保留于 `/opt/matrix-screen-controller.mobile-backup-e224b2adf70b`;这不是正式 OTA 或掉电测试。
控制写入专项真实 BLE 回归通过,118.701 秒:使用当前修订重新提交原亮度并回读一致;活动动画暂停、当前位置 seek、原倍速写入成功,finally 恢复原暂停状态,开机默认内容保持一致。测试未选择新内容。首轮曾因厂商在覆盖安装后异步撤回蓝牙权限而未进入 BLE 测试;已授权 root 授予后的延时复核修正后通过。
后续升级兼容:蓝牙文件/服务状态纳入 ota_components 的持久系统事务,无 FRP 载荷的移动端补丁也会运行安装入口;旧事务日志不触碰蓝牙。新增测试包括无 FRP 载荷进入事务、失败恢复文件/屏蔽状态、旧日志兼容,组件与生命周期单测 35 项通过。此处尚不代表完整真实 OTA 升级验收。