# 断线与重连排查(进行中) 用户反馈:App 连接后可能自行断开,返回重连不成功。测试手机使用代号 android-test-a;不记录真实蓝牙地址、序列号和网络凭据。 ## 已实施 - RPC/握手内部超时转换为通信失败,关闭旧 GATT,避免被 CancellationException 分支吞掉而残留连接界面。 - GATT 建立超时也转换为通信失败;仅在握手前针对同一设备最多两次尝试,用户取消不重试,业务写请求不重放。 - 该手机曾对一次 MTU 请求报告 517 和 247;App 接收上限保守限制为 247,服务发现只启动一次,防止重复发现/订阅。 - 设备端应用声明 MTU 与 BlueZ 上限取较小值的修复已在此前开发部署,本轮未改动显示驱动。 - 真机测试增加持续轮询、生产 Controller 三页读取及前后台释放/重连。运行器允许 `--poll-cycles 0` 单独定位连接/Controller 问题,但此模式不算持续轮询验收;默认仍为 60。运行器主机超时时停止本 App 的 instrumentation,防止遗留连接。 ## 实际结果 | 项目 | 结果 | |---|---| | 核桃派主服务、bluetooth、aw859-bluetooth | 三者 active;未发现上次部署中途停服 | | Android debug 与 instrumentation APK 构建 | 通过;源码在原中文路径,构建使用隔离 ASCII 路径 | | JVM 测试 | 6 项通过:跨语言加密 3、协议 2、RPC 超时清理 1 | | 60 轮真实状态/当前帧读取及重新握手 | 一次通过,耗时 195.316 秒 | | 最新重复 MTU 回调修复后的底层读取 | 增强测试完成底层部分,随后 Controller 等待首屏数据失败;整体不能判通过 | | 生产 Controller 三页及前后台 | 等待首屏容量数据 30 秒超时,未完成后续步骤;已补充 phase/error 诊断 | | 随后针对性复测 | 扫描成功,GATT 建立失败;尚未进入 Controller 检查 | | 间歇性 GATT 建立失败 | Android 曾报告状态码 62;同环境后续可连接并完成持续测试,原因未确认 | | 仓库卫生检查 | 已通过 550 个候选文件;后续新文档仍需最终复查 | | 视觉检查 | 不适用;未启动相机或切换实屏测试图案 | 以上不等同首版交付通过,也不将一次稳定通信视为偶发问题已经完全解决。当前修复 APK 已覆盖安装在主测试机,只有 debug 签名。 ## 下一步 先确认测试期间没有人工操作干扰及设备距离,继续定位 GATT 建立失败;随后重新完成生产 Controller 状态机测试、蓝牙关闭/恢复、服务重启及异常断线恢复。按用户要求,新 root 用途必须先停止对话说明并等待开始授权;此前授权仅覆盖本 App 的蓝牙权限授予,不自动扩大用途。