LogCat 在真实设备中不显示我自己的日志

LogCat doesn't show my own logs in real device

我在 Android Studio 中的小测试应用程序有关于 LogCat 的奇怪行为: 例如我有这样的日志:

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Log.d(TAG, "onCreate(Bundle) called");
        ...

如果我尝试在模拟器中启动我的应用程序,我的所有日​​志都可以正常工作。 但是如果我尝试在真实设备上启动我的应用程序,我可以从我的设备中看到很多系统日志(例如来自 BatteryService),但是这里有 none 我自己的日志。

我在 LogCat 中启用了 ADB 集成和日志源,选择正确(我的设备)。

检查 LogCat 中的 dropdown 并将选项更改为 Debug 或 D。
由于您已将日志放入 Log.d("TAG","MSG");

选项是

  1. 详细
  2. 调试您的日志将出现在这种情况下
  3. 信息
  4. 警告
  5. 错误
  6. 断言

假设你已经激活了 USB 调试(否则它不会工作)。
打开 logcat 并按下启动按钮。当它进入您的设备时,它应该可以正常工作。现在,如果您使用来自 google 驱动器、应用商店或其他任何地方的 APK,它将无法工作,因为不存在调试访问权限。

如果你已经做到了以上,可以试试这个方法:

如您所见,'Log level' 下拉菜单旁边有一个搜索框。搜索您的应用程序(以包名称的格式),它就会显示出来。从那里,您可以 select 一个日志级别(如果您愿意的话)。如果您没有选择日志级别并将其设置为详细,则将显示所有日志,所有类型的日志级别。

如果这不起作用,我们可以明确地得出结论,它 USB 调试相关。那么可能是因为 build.gradle 文件中的配置,Android 清单,或者可能是代码中的配置。另外,根据我的经验,Proguard 会阻止日志输出,但您不会从您的应用程序中获得输出。因此,如果上述 none 有效,请检查:

  • Android 最低版本(根据您的应用可以处理的版本)
  • Android 目标版本(与当前最新的 API 相比,现在是 24)
  • (在应用级别 build.gradle 中相同)
  • 混淆器on/off

最后,如果 none 有效,请下载 ACRA 并使用最简单的后端(10 行)转换日志,您的网站上就会有 .txt 格式的崩溃日志。这是一个艰难的解决方法,但至少您将能够读取任何崩溃。

我发现了问题。 LogCat 的奇怪行为是因为 API 版本的设备 Android 低于要求的 API 版本的应用程序。

在您的 Android 设备上试试这个!

性能优化-高级日志输出