6.4 KiB
WiFi 传输第一阶段验收
App 0.3.0 / versionCode 6,debug 签名;协议 1.2。设备 VERSION 维持 1.1.3,功能时间 2026-10-01T10:37+08:00。未导出 OTA/IMG,未改显示驱动或用户内容。
交付:../../构建与发布/交付包/0.3.0-6/。手机安装 APK 与交付包 SHA-256 一致:0aa43b8d6cb64648aad4fb5bff6a9b5e3eb3b71b707a17bc67708d197b54e36d。设备修改文件摘要与源码一致,主服务、BLE 和驱动可用;最终打开生产 App 后设备报告 active_transport=wifi。
变更与选测
改动共享 RPC、BLE 会话、Android 网络监听/权限、连接栏和网页状态,故选择协议、状态机、定向真实 BLE/WiFi、真实主服务重启和连接栏测试。普通设置/图库页面、驱动输出和实屏视觉未改变,不跑无关全量回归,不使用摄像头。
| 层级/场景 | 结果与边界 |
|---|---|
| Python 设备侧 | 45 项通过;公开向量、会话、业务、真实 ASGI WebSocket、过期/重放/身份/互斥门禁、兼容统计字段;隔离源码副本再次 45 项通过。 |
| sharedCore JVM | 23 项通过;含 WiFi 跨语言向量 2 项和混合路由 4 项。写入结果不明不重放、只读回退、BLE 心跳和恢复屏障异常有测试。 |
| 构建/lint | debug 产品/测试 APK 和 uiTest 构建成功;lint 0 errors、20 warnings。依赖校验元数据已保存。 |
| 宿主选测/网页 | 选测运行器 9 项通过;device UI Node 测试及修改 JavaScript 语法检查通过。网页文案依赖真实 active_transport,昵称仍以 textContent 渲染。未声称浏览器视觉验收。 |
| 模拟器 connection | API 35,baseline/narrow 均通过。 |
| 模拟器 wifiTransport | API 35,baseline/narrow 均通过;WiFi 提示、蓝牙回退、权限原因/入口和断开清理。使用假平台,不代表系统权限实测。 |
| wifi-transport-recovery | 登记 Android 13 真机通过,20.443 秒:自动升级、手机 WiFi 关闭后 BLE 可读、WiFi 恢复再升级、蓝牙关闭整体断开且未崩溃;无线开关恢复并核验。 |
| wifi-transport-network | 真机通过,20.223 秒:核桃派原网络原配置重新应用、保留密码、BLE 查询任务、WiFi 恢复与配置回读一致。不等于换 SSID 或 DHCP 换地址。 |
| wifi-transport-restart | 真机与真实 systemd 通过,24.256 秒:活动 WiFi 会话中重启主服务,旧会话断开,新 BLE 握手、相同设备身份、不同服务实例、WiFi 再升级。不是 OTA 验收。 |
| wifi-connection-entry | 生产 Activity root 语义输入通过,52.854 秒;实际 WiFi 标识、重扫保留、断开和手动再连,未修改密度/方向。 |
| 部署核验 | 设备源摘要匹配、服务 active、驱动 running 且无最后错误。手机安装摘要匹配交付包,WiFi/蓝牙均恢复。 |
传输证据
同一 64×64 PNG 缩略图(Base64 300 字符),未使用 App 图片缓存:恢复专项 BLE 89 ms / WiFi 12 ms;网络专项 91 / 14 ms;重启专项 134 / 21 ms。这些是小样本单次请求,不能外推固定加速倍数或大图库性能。
重启专项额外连续读取图片和当前帧:WiFi 请求计数增加 7,BLE 接收字节增量为 0,证明业务走 WiFi。该短窗口驱动约 97.416 Hz,截止丢失 1→1,driver running、last_error 空。较早健康核验约 97.332 Hz、累计截止丢失 1;收尾再次核验约 97.331 Hz、累计截止丢失 16,驱动仍运行且无最后错误。累计计数随运行增加,未做长期负载因果对照,不能据此宣称长期无退化。
失败、修复与重测
- Kotlin 跨模块可空属性不能 smart cast,使用明确空值处理;OkHttp 的 Protocol 与项目 Protocol 同名,改用显式 import。构建重测通过。
- 旧测试固定协议次版本 1,随兼容扩展改为 2 并校验能力。新增 runtime 组合状态测试:原 transport 是统计对象,新增 active_transport,避免字段覆盖和旧客户端破坏。
- WiFi 启用状态文本 Wifi/Wi-Fi 大小写差异导致运行器误拒绝;在内存归一化,不输出原始网络资料。门禁重测通过。
- 首次实机关闭 BLE 后恢复协程异常逃逸导致测试进程退出。launch 主体捕获恢复屏障异常并补 JVM 回归;完整实机恢复重测通过。
- 续跑时一次 WiFi 恢复等待 45 秒超时。加入平台关闭稳定等待与“网络实际可用”阶段诊断后通过;不能只因通过就断言此前唯一根因。
- API 35 模拟器首次冷启动 180 秒超时,未运行 UI。检查 WHPX 可用,复用已有镜像,以独立 headless 实例记录诊断并确认 boot_completed,再跑选择场景,4 项均通过。只关闭本轮模拟器。
- 隔离设备副本首次遗漏 VERSION,测试收集失败;补齐部署元数据后 45 项通过。该失败是副本准备不足,不是源码依赖原工作区。
未验证与不适用
- API 37 系统局域网权限允许/拒绝/撤销尚无对应系统实测;API 35 模拟和 Android 13 真机不能替代。
- 第二台实体手机互斥、真实不同 SSID/跨子网/AP 隔离、IPv4 地址变化未具备本轮环境;对应协议门禁及不依赖 SSID 的实现不等于真实拓扑通过。
- 混合通道的生产 App 前后台补测未执行:自动审批拒绝 ADB root Home/重新打开操作,仅返回 blocked by policy。保持现有 30 秒释放逻辑,不能据历史纯 BLE 测试声明本轮混合通道已通过。
- IPv6、热点、WiFi Direct、独立 WiFi 会话、云连接不属于本阶段。实屏视觉不适用,未启动摄像头或切换测试图案。
经验已更新 ../../如何安卓测试/常见问题与排障.md;可重复步骤见 ../../如何安卓测试/WiFi传输测试.md。本报告只记录本轮事实,不替代稳定测试流程。
收尾已删除本轮两个远端临时部署目录,保留可回滚程序备份。脱敏测试结果见 test-evidence.json,最终只读健康状态见 final-health.json。
用户重新授权后的 ADB 复核
用户明确再次授权后,USB 登记、ADB 身份及 root(uid 0)检查通过;生产 App 进程存在,root 启动 MainActivity 成功。随后包含 root Home、后台 35 秒检查和重新打开 App 的命令被执行工具自动审批再次拒绝,仅返回 blocked by policy,命令未启动。未更换调用方式绕过拒绝,混合通道前后台补测仍未验证。该拒绝不能解释为手机 USB、ADB 或 root 不可用。