17

我正在开发一个 Android 应用程序,我想在我的代码运行时有一些方法来打印调试语句。对我来说幸运的是,当我在 Android 2.3.3 (API 10) 模拟器上运行我的应用程序时,Logcat 能够打印出 Log.d 消息。

但是,当我在物理设备(Samsung Galaxy S4 Android 4.2.2)上测试相同的应用程序时,除了 dalvikvm 和 AndroidRuntime 消息之外,我什么也看不到。

com.android.internal.os.RuntimeInit <<<<<<
07-28 04:49:24.165: DEBUG/AndroidRuntime(6378): CheckJNI is OFF
07-28 04:49:24.165: DEBUG/AndroidRuntime(6378): setted country_code = USA
07-28 04:49:24.165: DEBUG/AndroidRuntime(6378): setted countryiso_code = US
07-28 04:49:24.175: DEBUG/AndroidRuntime(6378): setted sales_code = VZW
07-28 04:49:24.175: DEBUG/AndroidRuntime(6378): readGMSProperty: start
07-28 04:49:24.175: DEBUG/AndroidRuntime(6378): readGMSProperty: already setted!!
07-28 04:49:24.175: DEBUG/AndroidRuntime(6378): readGMSProperty: end
07-28 04:49:24.175: DEBUG/AndroidRuntime(6378): addProductProperty: start
07-28 04:49:24.185: DEBUG/dalvikvm(6378): Trying to load lib libjavacore.so 0x0
07-28 04:49:24.185: DEBUG/dalvikvm(6378): Added shared lib libjavacore.so 0x0
07-28 04:49:24.195: DEBUG/dalvikvm(6378): Trying to load lib libnativehelper.so 0x0
07-28 04:49:24.195: DEBUG/dalvikvm(6378): Added shared lib libnativehelper.so 0x0
07-28 04:49:24.385: DEBUG/AndroidRuntime(6378): Calling main entry com.android.commands.pm.Pm
07-28 04:49:26.978: DEBUG/AndroidRuntime(6378): Shutting down VM
07-28 04:49:26.988: DEBUG/dalvikvm(6378): GC_CONCURRENT freed 157K, 21% free 627K/788K, paused 1ms+0ms, total 4ms
07-28 04:49:26.988: DEBUG/jdwp(6378): Got wake-up signal, bailing out of select
07-28 04:49:26.988: DEBUG/dalvikvm(6378): Debugger has detached; object registry had 1 entries
07-28 04:49:27.458: DEBUG/AndroidRuntime(6420): >>>>>> AndroidRuntime START com.android.internal.os.RuntimeInit <<<<<<
07-28 04:49:27.458: DEBUG/AndroidRuntime(6420): CheckJNI is OFF
07-28 04:49:27.458: DEBUG/AndroidRuntime(6420): setted country_code = USA
07-28 04:49:27.458: DEBUG/AndroidRuntime(6420): setted countryiso_code = US
07-28 04:49:27.458: DEBUG/AndroidRuntime(6420): setted sales_code = VZW
07-28 04:49:27.458: DEBUG/AndroidRuntime(6420): readGMSProperty: start
07-28 04:49:27.458: DEBUG/AndroidRuntime(6420): readGMSProperty: already setted!!
07-28 04:49:27.458: DEBUG/AndroidRuntime(6420): readGMSProperty: end
07-28 04:49:27.458: DEBUG/AndroidRuntime(6420): addProductProperty: start
07-28 04:49:27.468: DEBUG/dalvikvm(6420): Trying to load lib libjavacore.so 0x0
07-28 04:49:27.478: DEBUG/dalvikvm(6420): Added shared lib libjavacore.so 0x0
07-28 04:49:27.478: DEBUG/dalvikvm(6420): Trying to load lib libnativehelper.so 0x0
07-28 04:49:27.478: DEBUG/dalvikvm(6420): Added shared lib libnativehelper.so 0x0
07-28 04:49:27.649: DEBUG/AndroidRuntime(6420): Calling main entry com.android.commands.am.Am
07-28 04:49:27.659: DEBUG/dalvikvm(6420): Note: class Landroid/app/ActivityManagerNative; has 169 unimplemented (abstract) methods
07-28 04:49:27.719: DEBUG/AndroidRuntime(6420): Shutting down VM
07-28 04:49:27.729: DEBUG/dalvikvm(6420): GC_CONCURRENT freed 157K, 20% free 666K/828K, paused 0ms+1ms, total 3ms
07-28 04:49:27.729: DEBUG/jdwp(6420): Got wake-up signal, bailing out of select
07-28 04:49:27.729: DEBUG/dalvikvm(6420): Debugger has detached; object registry had 1 entries

我不确定发生了什么,因为 Logcat 正确地针对我的物理设备,它显示在 adb 设备上,并且 USB 调试已打开。

我试过使用 Log.e 但这对输出没有影响。

我什至在 AndroidManifest.xml 中设置了 android:debuggable="true"。

我在这里缺少什么吗?为什么在我的物理设备上运行我的应用程序时,Logcat 不会显示我的调试消息?

编辑:我在 Android 4.2.2 模拟器上尝试了相同的应用程序,Logcat 在模拟器上按预期工作,但通过 USB 设备使用 Logcat 仍然存在问题。我发布的块不是普通 Logcat 打印输出的冗长,而是我在 Verbose 日志级别上看到的唯一内容。

4

6 回答 6

37

这可能是因为某些手机禁用了日志以提高性能。

例如,我的手机 HUAWEI P9 lite,我必须执行以下步骤才能Log.d正常工作:

  1. 拨打*#*#2846579#*#*
    • 号码可能会有所不同,您应该进行一些搜索以获取手机的密码。
  2. 来到ProjectMenu页面
  3. 点击Background Settings
  4. 点击LOG Settings
  5. 检查AP Log
  6. 由于未知原因,它在重新打开时自动检查了所有日志LOG Settings

在此处输入图像描述

[更新]

刚才在我从 git 中提取后再次发生,adb shell显示如下:

open '/dev/hwlog_switch' fail -1, 13. Permission denied
log switch off, only log_main and log_events will have logs!

我用新项目测试并得到日志,只有这个旧项目有问题。我尝试重建应用程序,重新启用上述日志步骤,甚至重新启动手机,但仍然没有运气。

然后我卸载productFlavors手机中的应用程序(或所有相关应用程序)并重新安装,日志又回来了。

于 2016-06-24T08:12:36.223 回答
13

在某些型号上,您必须转到开发人员选项,然后在“高级日志记录”中选择“全部允许”。

以下截图来自我的魅族 MX 4 Pro:

在此处输入图像描述

于 2017-03-15T23:17:43.510 回答
1

您是否为 logcat 启用了 USB 调试?(如果您的物理设备是通过 USB 电缆连接的)。转到“设置”,然后是“应用程序”,然后是“开发”,然后检查“USB调试”。

然后它应该出现在 DDMS 中。只需选择它即可调试/查看日志。

于 2013-07-28T12:08:24.763 回答
1

今天,我遇到了同样的问题。没有任何解决方案对我有用。但是对我有用的是图片中提到的底部的 Android Studio 右侧。选择图像中提到的选项。之后,一切都按预期工作。现在发布我的解决方案可能对其他人有所帮助。

在此处输入图像描述

希望对其他人有所帮助

于 2017-12-08T08:55:36.197 回答
0

您需要通过 adb shell 设置日志记录(到所需的级别),如下所示:

  1. 导航到您的 android sdk 文件夹中的平台工具。
  2. ./adb shell使用linux/mac/windows powershell 或仅adb shell用于 windows cmd打开 adb shell 。
  3. 发出以下命令:

     stop
     setprop log.tag.MYTAG VERBOSE
     start 
    

于 2013-11-18T06:41:12.010 回答
0

也许不是答案,但需要显示图片。尝试为您的标签设置过滤器,如下所示:

在此处输入图像描述

并选择详细选项:

在此处输入图像描述

这有帮助吗?

于 2013-07-29T11:44:55.590 回答