3

我相信应用程序在 4.2 之后的 android 中读取日志的方式已经发生了变化。但是我想知道我是否可以从当前版本的android应用程序中读取所有日志,包括来自logcat的系统日志?如果是,是否需要一些许可?

4

2 回答 2

12

除非您扎根,否则自 Jelly Bean 以来您将无法做到这一点。请参阅此Android 错误报告和此相关讨论。引用:

变化是第三方应用程序不再获得读取日志权限,但是每个应用程序都可以读取仅包含他们编写的行的日志,而无需任何权限。

请记住,对日志的访问从来都不是 SDK 的一部分,也仍然不是 SDK 的一部分。如果您依赖它,那么即使在此更改之后,您也可能会冒着将来崩溃的风险。(这就是为什么它在文档中丢失的部分原因,它不是 SDK 的一部分,所以实际上没有地方可以记录它,实际上记录它会使其成为我们不使用的 SDK 的一部分不想。:p)

此外,我们真的非常希望开发人员不要以此为许可进一步滥用系统日志并从他们的应用程序中向其中注入越来越多的内容。日志噪音一直是 Android 上的一个问题(不仅仅是第三方应用程序,我们总是努力在没有太多噪音的情况下发布开源平台),如果情况继续恶化,我们可能会对其进行进一步的更改以使其更好控制它。

编辑:如果您可以访问设备,那么您可以在那里查看日志,甚至尝试向您的应用授予上述权限:

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

但是对于其他情况,您会很不走运(除非您在框架中发现错误)

于 2013-07-31T17:45:52.713 回答
4

是的你可以。你只需要一个有根设备。

于 2013-07-31T17:38:15.487 回答