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");
选项是
- 详细
- 调试。 您的日志将出现在这种情况下
- 信息
- 警告
- 错误
- 断言
假设你已经激活了 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 设备上试试这个!
性能优化-高级日志输出
我在 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");
选项是
- 详细
- 调试。 您的日志将出现在这种情况下
- 信息
- 警告
- 错误
- 断言
假设你已经激活了 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 设备上试试这个!
性能优化-高级日志输出