adb error,connot create file No Such file or directory 

我在测试的时候执行:

adb push d:/a.txt /sdcard/a.txt
adb pull /sdcard/a.txt d:/b.txt

结果提示我:

adb: error: cannot create file/directory

我们看adb源码的报错位置

if (stat(dst, &st) == -1) {
    dst_exists = false;

    // If we're only pulling one path, the destination path might point to
    // a path that doesn't exist yet.
    if (srcs.size() == 1 && errno == ENOENT) {
        // However, its parent must exist.
        struct stat parent_st;
        if (stat(adb_dirname(dst).c_str(), &parent_st) == -1) {
            sc.Error("cannot create file/directory '%s': %s", dst, strerror(errno));
            return false;
        }
    } else {
        sc.Error("failed to access '%s': %s", dst, strerror(errno));
        return false;
    }
}

从代码看,如果文件不存在就会检查文件的目录是否存在,都不存在就会报错。

当我新建了此文件后,问题就不存在了。但是,

目录是存在的啊,目录不就是D:\, 换一种思路。我新建一个新的目录D:\testdir,然后执行:

adb pull /sdcard/a.txt D:\testdir\b.txt

这样就 OK 了。

WHY? 难道是 adb_dirname 不支持 disk?

正当我迟疑不解的时候,我手欠把开发者设置的 USB 调试关掉后重新打开了。然后,问题竟然没有了,然后再也出现不了了。

知觉告诉我,「一切不容易复现的问题都将复现」,但问题就是木有复现,什么原因呢?

其实问题来源于我正在写的adb helper中的测试 出现的,每次执行python test\adb_test.py都会复现这个问题。

为什么呢?

有人遇到过类似问题吗?


↙↙↙阅读原文可查看相关链接,并与作者交流