"adb pull" 卡在半路

"adb pull" stuck in half way

我的 "adb pull" 命令突然卡在进程中间。 安装某些应用程序或驱动程序后,我不确定是什么原因造成的。 拉取一个文件或多个文件时发生。

有没有人遇到过同样的问题?谢谢。

示例:

U:\batch>adb pull /sdcard/xxxlog/mobilelog .\xxxlog\

[ 94%] /sdcard/xxxlog/mobilelog/APLog_xxx/main_log_1__xxx: 87%

Here a screenshot from my console

我在 Windows 7 机器上启动的 adb 服务器 (v 1.0.40) 上遇到了类似的问题。当试图从同一本地网络中其他机器 运行 Linux 上的设备提取文件时(我使用:"adb -H pull ..."),adb 偶尔会冻结。

解决方案是不对 ADB 服务器使用 Windows。

当 adb 服务器 运行 在 Linux VM (Ubuntu 16.4/ VirtualBox) 上时,此问题不可见。希望这对您有所帮助。

BR, 齐吉

我的具体答案,给遇到类似问题的人pos一个合理的答案。

在我重新安装整个 os 之后,测试不同的 adb 版本, 问题依旧。

在测试 adb 版本时, 我发现如果我使用 Local Disk 就不会发生这个问题... 使用 网络驱动器 ..

时出现问题的地方

所以一个os可行的解决方案是不要使用网络驱动器

每次遇到这个问题,最后都是最大路径长度问题。使用 adb 在设备上打开 shell 并查看您正在拉取的目录中的文件名。如果名称过长,它们将无提示地失败并且 adb 将挂起

真正让您陷入循环的是它通常在给出完成百分比后失败,这让您认为这是连接错误或其他问题。

我还没有找到递归列出 shell 中的文件名并在执行拉取之前测试它们的名称长度的好方法,以便知道问题是否会发生,但是当我有同样的问题并重命名长文件,它最终会在下一次尝试中工作。

我在尝试将大量数据从 Android phone 传输到 Raspberry Pi 3B+ 时遇到了同样的问题,并且 logcat 输出似乎显示由于 USB 缓冲区读取问题导致 adb 无声地失败(不幸的是,我没有收到确切的消息)。

在最初的失败之后,通过拔下 phone、运行、adb kill-serveradb start-server 并重新插入,可以单独获取另外几个文件在每个之间,但我能找到的唯一 longer-term 修复是重新启动 Raspberry Pi。但是,此解决方案不是永久性的,必须偶尔重复。

我无法在 Windows 或传统的 Ubuntu 系统上重现此问题。