安卓Logcat在模拟器中正常工作,但在真实设备上不正常

3
我在我的应用程序中的服务中执行Logcat。
commandLine = "logcat -v time -b main"
process = Runtime.getRuntime().exec(commandLine);

当它在任何AVD上运行时,它可以捕获系统中运行的任何进程的所有日志消息。但是,当我通过复制apk并以正常方式安装应用程序在真实设备(ASUS TF201)上运行时,它只能捕获来自我的应用程序的日志消息。 应用程序运行良好,没有崩溃,所有活动都正常工作,即使是开始和停止logcat的活动也是如此。在AVD和设备上运行之间唯一的区别是缺少的消息。我知道有消息丢失,因为我在我的应用程序之外还运行了aLogCat,并且aLogCat确实可以捕获所有消息。 我错过了什么?
1个回答

1

这应该一直是预期的行为,并且在Jelly Bean中得到了正确的修复。每个应用程序只能访问与其自身进程相关的logcat信息。

在您的情况下,您需要以root身份运行命令才能访问不属于您的应用程序的logcat消息。

-- 参考文献 --

SO问题

讨论

Android问题

aLogCat用户评论

希望这满足了您的好奇心。


你如何解释aLogCat捕获所有消息的情况?这听起来不太对,因为logcat用于调试,没有人能保证你的应用程序中的问题仅是由你自己的应用程序引起的。更有意义的是,logcat显示所有内容以允许您正确调试,而无需root您的设备,这很愚蠢。 - ilomambo
@ilomambo,你有权发表自己的意见,但是免费访问logcat是一个重大的安全漏洞,会无意中泄露很多信息。 - PravinCG
除非您已取得root权限并将应用程序作为系统应用程序,否则它不应该在Jelly Bean上运行。 - PravinCG
我也有aLogCat的源代码,但到目前为止,我还不明白它在我的应用程序中做了什么我没有做的事情。 - ilomambo
我也在网上搜索了这个问题。我不知道为什么,但是aLogCat v2.6.1在我的ASUS Prime上与Jelly Bean兼容。它可以获取其他每个应用程序的日志。而且我的设备没有root。我给aLogCat开发人员Jeffrey Blattman发送了一封电子邮件,希望他能澄清为什么它可以工作,而根据你挖掘的其他信息,它不应该工作。如果他回复的话,我会发布答案。 - ilomambo
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接