出现“adb logcat没有输出,但是adb shell可以工作”的情况可能是由于以下几个原因引起的:
adb logcat过滤器设置不正确:请确保在运行adb logcat命令时没有设置过滤器,或者过滤器设置正确。如果设置了过滤器,可能会导致logcat没有输出。
adb logcat缓冲区已满:adb logcat命令默认是读取main缓冲区的日志,如果缓冲区已满,则日志将无法输出。可以尝试通过以下命令清空缓冲区:
adb logcat -c
该命令将清空缓冲区并重新开始记录日志。
设备权限问题:使用adb shell命令需要设备具有足够的权限,但使用adb logcat命令可能需要更高的权限。可以尝试在命令前添加sudo或以管理员身份运行命令,以确保具有足够的权限。
以下是一个示例代码,展示如何使用adb logcat命令来获取设备的日志:
import subprocess
# 定义adb logcat命令
cmd = ['adb', 'logcat']
# 执行adb logcat命令并获取输出
process = subprocess.Popen(cmd, stdout=subprocess.PIPE)
output, error = process.communicate()
# 输出日志
if output:
print(output.decode())
else:
print('adb logcat没有输出')
请确保已正确安装adb,并将adb命令添加到系统的环境变量中。