“adb pull”卡在了一半

问题描述 投票:0回答:6

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

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

例子:

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

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

Here a screenshot from my console

android mobile adb
6个回答
3
投票

对于我的具体答案,并为遇到类似问题的人提供可能的答案。

在我重新安装整个操作系统后,测试不同的 adb 版本, 问题仍然存在。

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

时出现问题的地方

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


1
投票

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

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

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

BR, 齐吉


1
投票

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

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

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


1
投票

我在尝试将大量数据从 Android 手机传输到 Raspberry Pi 3B+ 时遇到了同样的问题,

logcat
输出似乎显示 adb 由于 USB 缓冲区读取问题而静默失败(不幸的是,我没有确切的消息)。

在最初的失败之后,可以通过拔下电话,运行

adb kill-server
adb start-server
,然后在每个文件之间重新插入来单独获取另外几个文件,但我能找到的唯一长期解决方案是重新启动树莓派。但是,此解决方案不是永久性的,必须偶尔重复。

我无法在 Windows 或传统的 Ubuntu 系统上复制这个问题。


0
投票

我在将文件从我的 Ubuntu 机器复制到我的 Pixel 7 时遇到了这个问题。

基于这个错误报告的解决方法是运行

adb shell exit

在另一个终端卡住,直到所有文件都被复制。你也可以跑

watch -n 30 adb shell exit

每 30 秒运行一次命令,这样您就不必一直观察该过程。我希望这对某人有帮助。


0
投票

在我的例子中,当它尝试

adb
/
push
文件夹/文件时,
pull
开始挂起。尝试替换:

adb push input path output path

adb push "input path" "output path"

如果您在代码中使用

adb
(例如
nodeJS
)并且上面没有帮助,您可以尝试像这样编码您的路径:

"output path".replaceAll(" ", "\\ ")

您可能还想逃避

\\"
例如这个:

execSync(`adb push "${inputPath}" "${outputPath}"`);

会变成:

execSync(`adb push \\"${inputPath}\\" \\"${outputPath}\\"`);

所以完整的例子是:

execSync(`adb push \\"${inputPath.replaceAll(" ", "\\ ")}\\" \\"${outputPath.replaceAll(" ", "\\ ")}\\"`);
© www.soinside.com 2019 - 2024. All rights reserved.