我已经编写了一个可执行文件,并将其推送到 /system/bin。
运行文件后,它会给出一个浮点数的结果。
现在在PC端,我想得到这个结果。
首先我将这个浮点数写入一个文件并使用'adb pull'来拉这个文件,然后读取文件。因为我需要经常做这个操作,可能每秒2次。这会导致手机性能不佳。
使用 adb socket 会不会影响不大?我的可执行文件应该在哪里输出?adb socket如何得到结果?
谢谢。詹姆士。
如果你让电话保持连接,你可能只是这样做
adb shell /system/bin/myexecutable
并让您的二进制文件将其输出打印到标准输出。只要你的程序运行得很快,每秒两次不应该太快。否则,你可以做
adb shell cat /somewhere/myoutfile
查看当前文件中的内容。
如果有可用的 ADB 连接,您可能会logcat
用作将数据从 Android 应用程序获取到桌面计算机的媒介。
我的想法是有两个部分:
使用 logcat 将您的应用程序输出记录到 Android 端的唯一 TAG。例如,
Log.d("MyAppOutput", "This is the output I am looking for");
在桌面端,您可以运行专门针对该 TAG 的命令行,例如:
adb logcat -s MyAppOutput
我相信这将使您能够近乎实时地从 Android 应用程序中读取结果。如果您需要知道日志消息的时间戳,可以添加-v time
参数为每条消息添加时间戳。
我之前也有同样的问题,您不需要将结果输出到文件,只需将结果输出到套接字端口,然后使用 adb forward 通过 adb 套接字在您的 pc 上获取结果。这就是您需要的解决方案。
adb 转发 tcp:18000 tcp:19000
这条命令的意思是,pc 的 tcp 端口 18000 绑定到设备的 tcp 端口 19000,如果你向 pc 的 18000 端口发送数据,你可以从设备的 19000 获取数据。反之亦然。