访问logcat是否需要root用户?


9

我的设备已经植根,这就是我要问的原因。

您是否需要root才能监视电话上的logcat流?如果我在电话的终端中运行logcat命令,那行得通吗?

Answers:


15

Market中的这些免费应用程序声称能够显示您的logcat,并且没有提及root。应该只花您几分钟来尝试一下:

编辑:感谢@mente提醒我,这些应用程序将只让您查看旧版Android中的完整日志文件。Android 4.1围绕日志文件引入了新的安全模型,这意味着应用程序只能读取自己的日志文件和日志文件条目,而无法读取由系统或其他应用程序编写的日志文件条目。

但是,仍然存在一种方法,使应用程序的用户可以生成要发送给开发人员的应用程序最近的日志条目的日志文件,还可以通过电话的所有者授予权限,以允许应用程序在没有完整root用户的情况下读取日志文件。确实需要您使用ADB命令,不幸的是,这使大多数普通电话用户无法使用它:

如果希望用户为您提供调试信息,则可以让他们生成一个错误报告,其中包含电源+调低音量+调高音量,其中包括日志和许多其他数据,并自动调出其电子邮件应用程序以发送所有信息(加上屏幕截图)。我们只是在讨论我们应该有一种更简单的方式来生成这些内容,我将考虑在设置应用程序中添加一些内容。

我也已经开始介绍“开发”权限的概念,将读取日志分类为。这允许该应用请求权限,但不能在安装时获取它。但是一旦安装,您可以 使用adb shell命令授予它。稍后,我希望在系统中有一个UI可以执行此操作,但是我们将暂缓执行该操作,以防止出现此情况。

摘自Android框架工程师Dianne Hackborn 在Google网上论坛上帖子。我的重点。

提到的授予应用程序读取日志权限的ADB命令是:

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

此设置应在应用程序的重启和升级后有效(但不能卸载/重新安装)。


从Android 4.1开始,您需要具有root访问权限才能读取其他应用程序日志。CatLog开发人员发布了解释。假设这些应用程序适用于<4.1版本
月经

1
此快捷方式在我的Android 4.1.2上不起作用
mente

我创建了一个实用程序来从PC收集日志:gist.github.com/hrj/5983971
HRJ

4

您无需将手机root即可adb logcat与Android SDK 一起运行,但是我只是在终端仿真器中对其进行了测试,因此我必须是root(使用su命令-我的手机已经root)才能在我的手机上的终端。

所以可以:如果您的手机具有root用户,则可以从手机的终端运行logcat。


1

不,您不需要root即可获取logcat信息。

为此,您可能想使用SDK随附的adb工具下载Android SDK并运行“ adb logcat”。或者,您可以安装ADT Eclipse插件并使用其方便的流式Logcat查看器。


我想通过电话而不是使用SDK的远程计算机执行此操作
Wulfbane 2010年

1

不,您不需要root即可访问logcat。我的设备(三星Galaxy Note,带有备用ROM的Gingerbread 2.3.6)尚未植根(尚未!),并且我使用以下方法访问设备上的日志:

  • CatLog应用
  • aLogcat应用
  • 已激活SSHDroid应用程序,并使用SSH客户端连接到设备终端
  • 使用Android SDK并运行 adb logcat

但是,终端应用程序不允许您运行logcat,并给您“权限被拒绝”。我不知道为什么。


是的,在Gingerbread上...但是今天的Android 确实需要root用户。
NH。

1

似乎如果没有root用户,则无法从Terminal Emulator运行logcat。在这种情况下,您必须先su。AFAIK,它来自Android权限:终端仿真器根本没有足够的权限来查看设备的日志。因此系统显示“权限被拒绝”。

另一方面,正如其他人所说,有许多应用程序仅由于它们请求许可而允许您查看设备的日志。



0

Logcat不需要root。简单-它是针对不同Android版本的实际标准,无论您是否扎根,它都是Android的一部分,并且是诊断问题的标准方法,例如-安装应用,应用程序强制关闭,您向该应用程序的开发人员投诉,无论您是否扎根,开发人员都会要求“通过logcat发送”的可能性很高!

请记住,aLogCat是一种收集信息的方式,可以选择登录到网页布局或纯文本,如果您安排它以一定的频率(例如每15分钟一次)登录,则SDCard会很快填满。

另一方面,logcat的使用方式将取决于内核的存储量-在ROM使用的任何内核中,它是从内核级别记录日志的源,在该内核中它为logcat服务保留内存可以在drivers/staging/android/logger.c使用适当的定义中找到,例如:

DEFINE_LOGGER_DEVICE(日志主,LOGGER_LOG_MAIN,64 * 1024)DEFINE_LOGGER_DEVICE(日志事件,LOGGER_LOG_EVENTS,256 * 1024)DEFINE_LOGGER_DEVICE(log_radio,LOGGER_LOG_RADIO,64 * 1024)DEFINE_LOGGER_DEVICE(日志*

同样,里程会有所不同,此类ROM的某些开发人员将选择最小化消耗以减少内存开销。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.