Client 的设备搜索、连接、USB 转 WiFi 和应用检测目前直接执行系统 PATH 中的 adb。开发机依赖 D:\\Portable\\adb,但用户电脑不一定安装或配置 ADB,打包后行为也可能因系统 ADB 版本不同而变化。
adb
D:\\Portable\\adb
需要把用户指定目录中的必要 ADB 文件纳入 Client 项目和安装包,后续所有 Client ADB 命令只使用项目内的固定可执行文件;运行时检测不到内置 ADB 时,在软件中显示容易关闭的中文错误弹窗并中断本次设备操作。
adb.exe
AdbWinApi.dll
AdbWinUsbApi.dll
fastboot.exe
aapt-arm-pie
client/vendor/android-platform-tools/windows/
app_dir()
client/src/android_device_service.py
client/packaging/build.ps1
预计修改:
client/src/settings_ui_event.py
client/test/
不修改数据库结构和 Admin 接口。
从 client/ 执行:
client/
C:/Python310/python.exe -m unittest discover -s test -p "test_*android_device*py" C:/Python310/python.exe -m unittest discover -s test -p "test_*packaging*py" C:/Python310/python.exe -m py_compile src/android_device_service.py
打包验证:
powershell -ExecutionPolicy Bypass -File packaging/build.ps1
真机验证需单独执行:临时从测试进程 PATH 移除系统 ADB,使用一台 USB Android 设备验证搜索、PDD 检测、转 WiFi、拔线后 WiFi 保持连接。本工单不执行采购和下单。
状态:进行中。
已核对来源目录:三个运行文件齐全,adb.exe version 为 1.0.32,并已记录 SHA-256。实现将同时设置 ADBUTILS_ADB_PATH,这样直接 subprocess 命令和 uiautomator2/adbutils 都使用项目内同一个 ADB;缺失时启动弹窗提示且不回退 PATH。
adb.exe version
ADBUTILS_ADB_PATH
状态:已完成,待验收。
实现提交:8f2037d 归档提交:2a3224b 归档:docs/task/149-内置并统一使用项目ADB.md
8f2037d
2a3224b
docs/task/149-内置并统一使用项目ADB.md
验证结果:相关 144 项测试、语法检查、清空 PATH 的 adbutils 路径检查和 0.1.0 实际打包均通过;发布目录内三个 ADB 文件哈希与来源一致。未执行 adb devices、USB 转 Wi-Fi 和 uiautomator2 真机连接,避免重启当前 ADB Server 导致现有 Wi-Fi 设备临时掉线。
adb devices
用户于 2026-08-13 明确验收通过。本地归档状态已更新,批量验收记录提交:ad44f83。现关闭工单。
ad44f83
No dependencies set.
The note is not visible to the blocked user.
基本信息
要解决什么
Client 的设备搜索、连接、USB 转 WiFi 和应用检测目前直接执行系统 PATH 中的
adb。开发机依赖D:\\Portable\\adb,但用户电脑不一定安装或配置 ADB,打包后行为也可能因系统 ADB 版本不同而变化。需要把用户指定目录中的必要 ADB 文件纳入 Client 项目和安装包,后续所有 Client ADB 命令只使用项目内的固定可执行文件;运行时检测不到内置 ADB 时,在软件中显示容易关闭的中文错误弹窗并中断本次设备操作。
做什么 / 不做什么
D:\\Portable\\adb复制adb.exe、AdbWinApi.dll、AdbWinUsbApi.dll到 Client 统一的只读资源目录。adb。adb.exe或配套 DLL 时,通过 Qt 信号回到主线程,在软件中央显示中文错误弹窗,并中断本次设备搜索、采集或采购。fastboot.exe、APK、aapt-arm-pie等本任务不需要的文件。D:\\Portable\\adb只作为本次复制来源。怎么做
client/vendor/android-platform-tools/windows/,包含三个运行文件和简短版本/来源说明。app_dir()解析源码与 PyInstaller 打包后的资源路径,返回绝对adb.exe路径并检查配套 DLL。client/src/android_device_service.py,所有命令的首项改为统一解析后的绝对路径;相关诊断脚本如属于 Client 正式维护范围,也复用该入口。client/packaging/build.ps1,明确复制资源并校验adb.exe和两个 DLL;避免依赖系统 PATH 或碰巧由其他依赖带入的 ADB。预计修改:
client/vendor/android-platform-tools/windows/client/src/android_device_service.pyclient/src/settings_ui_event.py或现有设备操作错误展示边界client/packaging/build.ps1client/test/对应测试不修改数据库结构和 Admin 接口。
验收标准
adb.exe、AdbWinApi.dll、AdbWinUsbApi.dll,不包含本任务无关的 fastboot 和 APK。adb.exe的绝对路径启动,不依赖 PATH。怎么验证
从
client/执行:打包验证:
真机验证需单独执行:临时从测试进程 PATH 移除系统 ADB,使用一台 USB Android 设备验证搜索、PDD 检测、转 WiFi、拔线后 WiFi 保持连接。本工单不执行采购和下单。
风险和回退
adb.exe会在部分 Windows 电脑缺 DLL 而启动失败,因此三个文件必须作为整体处理。状态:进行中。
已核对来源目录:三个运行文件齐全,
adb.exe version为 1.0.32,并已记录 SHA-256。实现将同时设置ADBUTILS_ADB_PATH,这样直接 subprocess 命令和 uiautomator2/adbutils 都使用项目内同一个 ADB;缺失时启动弹窗提示且不回退 PATH。状态:已完成,待验收。
实现提交:
8f2037d归档提交:
2a3224b归档:
docs/task/149-内置并统一使用项目ADB.md验证结果:相关 144 项测试、语法检查、清空 PATH 的 adbutils 路径检查和 0.1.0 实际打包均通过;发布目录内三个 ADB 文件哈希与来源一致。未执行
adb devices、USB 转 Wi-Fi 和 uiautomator2 真机连接,避免重启当前 ADB Server 导致现有 Wi-Fi 设备临时掉线。用户于 2026-08-13 明确验收通过。本地归档状态已更新,批量验收记录提交:
ad44f83。现关闭工单。