通过 logcat 在 Android 上调试 WebView (Ionic) 应用程序

Debugging a WebView (Ionic) app on Android via logcat

关于这个主题有几个问题,但似乎没有一个能解决我遇到的特定问题。

我正在使用 Cordova/Ionic 开发一个应用程序,并且使用 adb logcat CordovaLog:D *:S 打印我使用 console.log() 输出的调试信息在某些更新之前工作正常。现在我似乎不知道如何正确过滤 logcat 的输出,所以我只能从我的应用程序中获取调试信息。

记录本身有效。如果我没有设置过滤器并将输出重定向到一个文件,我可以在所有其他调试消息中看到我的调试信息,它看起来像这样:

I/Web Console: Event triggered: device.ready:1

记录到屏幕也可以,但速度大约为每秒 100 行。我至少尝试了以下方法来过滤输出:

adb logcat -s "Web Console"
adb logcat "Web Console":V
adb logcat "Web Console":*
adb logcat -s Web
adb logcat Web:V
adb logcat "myApp":V
adb logcat myApp:V
adb logcat -s myApp

...可能还有其他我已经忘记的内容。他们要么完全不打印任何东西,要么完全打印系统服务中的所有内容。

我在 Windows 所以我不能 grep,我正在调试的设备是 运行 Android 4.2.2 所以我可以不使用 GapDebug,似乎也无法通过 Chrome 中的 chrome://inspect 访问设备的日志。

我真的非常想了解过滤 logcat 的输出是如何工作的。我不愿意将所有内容都记录到一个文件中,然后再进行切换。

似乎 logcat 无法正确解析带有空格的标签名称。因此,我建议在设备上使用 grep

adb shell "logcat | grep 'Web Console'"

或者在 linux 或基于 unix 的 os/git 上运行 adb bash:

adb logcat | grep 'Web Console'

虽然您可以在 Linux/Unix 下使用 grep,但在 Windows 下您可能会选择 findstr:

adb logcat | findstr /C:"Web Console"

如果您更喜欢在 Windows 下使用 grep,您可以从 http://gnuwin32.sourceforge.net/packages/grep.htm.

2019 年对我有用的东西:

adb -d logcat chromium:I *:S

-d 表示在我的情况下是物理设备。如果所有其他方法都失败了,只需将 adb logcat 的结果转储到文本文件中并搜索 "CONSOLE",这将为您提供 logcat 过滤器的提供程序。这似乎会随着时间的推移而变化,并且取决于您的特定开发环境。