提问者:小点点

如何读取ADB shell输出?


我希望通过使用adb命令的python程序从USB中连接的设备接收信息。

import subprocess

#flush logcat
subprocess.Popen(["adb", "logcat", "-c"], stdout=subprocess.PIPE)

#wait for log to be sent
proc = subprocess.Popen(["adb", "shell", "logcat", "-d", "-b", "main", "-v", "raw", "-s", "Command:I"], stdout=subprocess.PIPE)

test = b""
while b"COMMAND\r\n" not in test:
   test = proc.stdout.read()

print(test)
      
proc.wait()

命令adb shell logcat-b main-v raw-s command:i正在侦听logcat并等待标题为“command”的日志从设备发送,以便输出这些日志的内容。 当在命令提示符下执行它时,它确实输出日志的内容,但是上面的代码不读取输出。


共1个答案

匿名用户

当您启动adb客户端时,客户端首先检查是否有一个adb服务器进程已经在运行。 如果没有,则启动服务器进程。 当服务器启动时,它绑定到本地TCP端口5037并侦听从adb客户端发送的命令-所有adb客户端都使用端口5037与adb服务器通信

您现在可以用USB连接设备。 您可以通过从android_sdk/platform-tools/目录执行adb设备来验证您的设备是否已连接。