复现步骤:
192.168.0.173:5555
adb devices -l
当前程序先恢复已保存 Wi-Fi;adb connect 失败后整个 Worker 直接报错,没有继续执行普通设备枚举,所以表格看不到已经连接的 USB 设备。
adb connect
client/src/android_device_service.py
client/src/settings_ui_event.py
client/test/test_settings_ui_event.py
QObject + moveToThread
android.selected_serial
从 client/ 执行:
client/
C:/Python310/python.exe -m unittest discover -s test -p test_settings_ui_event.py -v C:/Python310/python.exe -m unittest discover -s test -v C:/Python310/python.exe -m py_compile src/android_device_service.py src/settings_ui_event.py $env:QT_QPA_PLATFORM="offscreen" C:/Python310/python.exe -c "from src.ui_main import MainWindow; from PyQt5.QtWidgets import QApplication; app=QApplication([]); w=MainWindow(); print('OK'); w.close(); app.quit()" Remove-Item Env:QT_QPA_PLATFORM
手动验证:数据库已保存不可连接的旧 Wi-Fi 地址,同时 USB 手机在 adb devices -l 中为 device;点击搜索后应显示 USB 手机和恢复警告。
device
代码与回归已完成,准备提交:
验证:Client 全量 183 项测试通过;语法检查和离屏主窗口冒烟通过。
当前机器实机只读验证:旧地址 192.168.0.173:5555 恢复超时后,搜索结果仍返回 USB 设备 30167b23,且没有整体搜索错误。
30167b23
状态:待用户验收。
最终实现:旧 Wi-Fi 恢复失败后继续普通设备枚举,表格显示实际设备,并把恢复错误作为“配置已保留”的警告;只有普通枚举也失败时才保留旧表格并显示搜索失败。没有修改数据库、Admin 接口或设备保存值。
提交:
ff8cdd7
fix: Wi-Fi 恢复失败后继续搜索设备 (#66)
c01f3f8
docs: 归档任务 #66
归档:docs/task/66-Wi-Fi恢复失败后继续搜索设备.md
docs/task/66-Wi-Fi恢复失败后继续搜索设备.md
验证:设置页 37 项测试通过,Client 全量 183 项测试通过,语法检查和离屏冒烟通过。当前机器旧 Wi-Fi 恢复超时后仍成功返回 USB 设备 30167b23。
未验证:用户尚未在可见 Client 页面点击搜索完成最终验收。
用户已于 2026-08-11 明确验收通过。
eca9289
No dependencies set.
The note is not visible to the blocked user.
基本信息
要解决什么
复现步骤:
192.168.0.173:5555。adb devices -l可以看到 USB 设备。当前程序先恢复已保存 Wi-Fi;
adb connect失败后整个 Worker 直接报错,没有继续执行普通设备枚举,所以表格看不到已经连接的 USB 设备。做什么 / 不做什么
adb devices -l;表格展示实际找到的设备;提示恢复警告并保留已保存配置;只有普通设备枚举本身失败才按搜索失败处理。怎么做
client/src/android_device_service.py:增加简单的设备搜索结果对象,分别表达设备列表和可选的恢复警告。client/src/settings_ui_event.py:后台 Worker 捕获已保存设备恢复错误,随后继续普通搜索;把设备和恢复警告一起回传主线程。主线程始终先更新实际设备表格,再显示“搜索完成但旧设备恢复失败”的中文提示。client/test/test_settings_ui_event.py:覆盖旧 Wi-Fi 离线但 USB 在线、旧 Wi-Fi 离线且无其他设备、普通adb devices -l失败,以及原有成功恢复行为。验收标准
adb devices -l本身失败时,保留原表格并显示搜索失败。QObject + moveToThread工作线程执行,界面不阻塞。android.selected_serial,不影响保存、删除和 USB 转 Wi-Fi。怎么验证
从
client/执行:手动验证:数据库已保存不可连接的旧 Wi-Fi 地址,同时 USB 手机在
adb devices -l中为device;点击搜索后应显示 USB 手机和恢复警告。风险和回退
实施进度
代码与回归已完成,准备提交:
adb devices -l失败仍按真正搜索失败处理并保留旧表格。验证:Client 全量 183 项测试通过;语法检查和离屏主窗口冒烟通过。
当前机器实机只读验证:旧地址
192.168.0.173:5555恢复超时后,搜索结果仍返回 USB 设备30167b23,且没有整体搜索错误。完成记录
状态:待用户验收。
最终实现:旧 Wi-Fi 恢复失败后继续普通设备枚举,表格显示实际设备,并把恢复错误作为“配置已保留”的警告;只有普通枚举也失败时才保留旧表格并显示搜索失败。没有修改数据库、Admin 接口或设备保存值。
提交:
ff8cdd7fix: Wi-Fi 恢复失败后继续搜索设备 (#66)c01f3f8docs: 归档任务 #66归档:
docs/task/66-Wi-Fi恢复失败后继续搜索设备.md验证:设置页 37 项测试通过,Client 全量 183 项测试通过,语法检查和离屏冒烟通过。当前机器旧 Wi-Fi 恢复超时后仍成功返回 USB 设备
30167b23。未验证:用户尚未在可见 Client 页面点击搜索完成最终验收。
用户已于 2026-08-11 明确验收通过。
eca9289