从android SD卡到windows主机的流文件
我的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
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等,但我不确定这是否可行
有人能建议我如何满足我的要求吗:
非常感谢。我认为这是您的具体要求,所以修改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继续查找文件并发回文件内容