Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/184.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从android SD卡到windows主机的流文件_Android_Adb - Fatal编程技术网

从android SD卡到windows主机的流文件

从android SD卡到windows主机的流文件,android,adb,Android,Adb,我的SD卡上有一个应用程序不断写入的文件,我需要在应用程序写入时将该文件从设备中拉到我的windows主机上进行进一步分析 adb pull是不好的,因为它会拉取整个文件,然后停止,但当然,文件仍在编写中。不管怎么说,这个文件变得非常大,所以我不想每次都复制整个文件,只复制自上次阅读以来写入的部分 adb shell dd可能是一个选项,但我只能将其从SD卡上的一个文件复制到SD卡上的另一个文件,即不是我的windows计算机: e、 g.adb外壳dd如果=/sdcard/input.pcm

我的SD卡上有一个应用程序不断写入的文件,我需要在应用程序写入时将该文件从设备中拉到我的windows主机上进行进一步分析

adb pull
是不好的,因为它会拉取整个文件,然后停止,但当然,文件仍在编写中。不管怎么说,这个文件变得非常大,所以我不想每次都复制整个文件,只复制自上次阅读以来写入的部分

adb shell dd
可能是一个选项,但我只能将其从SD卡上的一个文件复制到SD卡上的另一个文件,即不是我的windows计算机:

e、 g.
adb外壳dd如果=/sdcard/input.pcm of=/sdcard/output.pcm
则使用跳过和查找dd选项

如果我使用了dd和管道::
adb shell dd if=/sdcard/input.pcm>output.pcm
输出文件有一些损坏:0x0D,0x0D随机添加到pcm数据中。就像我只做adb shell cat input.pcm一样

我还考虑过将数据写入logcat并对其进行解析,但这相当笨拙和混乱,而且有大量数据

另一种选择可能是在编写文件时将文件分成许多小文件,然后使用adb pull

这些都不理想。理想情况下,我希望主机上有一个程序,可以在我的控制下提取数据,例如fopen、fread等,但我不确定这是否可行

有人能建议我如何满足我的要求吗:

  • 读取windows主机可用的所有文件
  • 读取自上次读取以来已更新的文件部分(例如每100ms)

  • 非常感谢。

    我认为这是您的具体要求,所以修改Android的源代码并不重要

    为什么不执行另一个adb命令?然后,您可以记录上次读取的位置,并使用adb newcommand filename以增量方式拉出文件

    adb的实现可以分为两部分:主机端和adbd

    在主机端,当您键入命令时,它会转到commandline.c中的
    adb\u commandline()

    if(!strcmp(argv[0], "pull")) {
        if (argc == 2) {
            return do_sync_pull(argv[1], ".");
        } else if (argc == 3) {
            return do_sync_pull(argv[1], argv[2]);
        } else {
            return usage();
        }
    }
    
    然后,
    do\u sync\u pull
    继续与adbd通信。adbd(adb.c)侦听从主机端发送的请求

    一种简单的方法是向do_sync_pull添加另一个参数,让adbd继续查找文件并发回文件内容