我正在开发一个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按照预期的方式与模拟器一起工作,但Logcat仍然存在通过USB设备的问题。而不是普通Logcat打印输出的详细程度,我发布的块是我在详细日志级别上看到的唯一内容。答案 0 :(得分:30)
可能是因为某些手机禁用了日志来提升性能。
例如,我的手机HUAWEI P9 lite,我必须执行以下步骤才能使Log.d
正常工作:
ProjectMenu
页面Background Settings
LOG Settings
AP Log
。 LOG Settings
时自动检查所有日志。<强> [UPDATE] 强>
刚从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
应用)并重新安装,日志又回来了。
答案 1 :(得分:10)
答案 2 :(得分:1)
今天,我遇到了同样的问题。没有什么比我提到的解决方案更有用但对我来说有用的是Android Studio右侧底部,如图中所示。选择图像中提到的选项。之后一切都按预期工作。现在发布我的解决方案可能有助于其他人。
希望能帮助他人
答案 3 :(得分:0)
您是否为logcat启用了USB调试? (如果您的物理设备通过USB电缆连接)。转到“设置”,然后“应用程序”,然后“开发”,然后选中“USB调试”。
然后它应该出现在DDMS中。只需选择它即可调试/查看日志。
答案 4 :(得分:0)
也许不是答案,但需要展示照片。尝试为您的TAG设置过滤器:
并选择详细选项:
这有帮助吗?
答案 5 :(得分:0)
您需要通过adb shell设置日志记录(达到所需级别),如下所示:
./adb shell
为linux / mac / windows powershell打开adb shell,或者只为{+ 1}}打开windows cmd。发出以下命令:
adb shell