原因分析:
硬件:PCIE转USB3.0(无供电),PC到手机延长线15M。
使用同一ADB.exe程序在笔记本使用短线测试正常,怀疑硬件连接距离过长或者PCIE供电不稳定。ADB使用的Pull文件也没有断点续传的算法优化,所以导致传输过程中硬件出现波动卡在传输过程。
尝试的方法
我们程序里面直接调用的是ADB.exe这个程序
开始解决思路是当出现卡住超时结束掉ADB.exe然后重新启动在发送,这样会导致杀死ADB进程后再打开识别不到手机,尝试过模仿Ctrl+C结束Pull操作也已失败告终。
最终解决方法
直接调用ADB程序改为通过调用cmd在cmd里面发送adb指令,如果出现传送超时结束掉cmd进程在重新打开,结束掉cmd进程只会取消当前执行的adb指令,adb进程还在从而实现类似断点续传。
优化方法
可以使用adb指令获取想要Pull的文件夹下所有问文件路径,保存到List里面然后逐一发送Pull指令,遇到超时重新发送当前文件pull指令,这样比直接重新Pull文件夹要快速很多。