为什么通过 ADB 的 logcat 与系统 logcat 不同?

问题描述

我有一个使用以下命令生成 logcat 的应用程序:

logcat -d -v time -t 1620059528.0 *:W

但是,它的输出与我通过控制台运行完全相同的命令时得到的输出不同

adb logcat -d -v time -t 1620059528.0 *:W

日志开始的时间不同,一个比另一个大很多,输出也不同。

这是为什么?在此处运行 Android 11。

编辑:我通过

调用logcat
 Process process = Runtime.getRuntime().exec("logcat -d -v time -t 1620059528.0 *:W");

这是否只打印正在运行的包中的 logcat?

解决方法

是的,出于安全原因,自 Android 4.1 起,应用只能访问自己的日志。

这在 this Android StackExchange answer 中进行了扩展,其中还提到如果您拥有设备,您可以(据称,在 2013 年)获得完整的设备日志访问权限:

adb shell pm grant <pkg> android.permission.READ_LOGS