如何通过adb获取webview控制台日志?

时间:2019-03-24 22:57:17

标签: android google-chrome webview

我正在使用Cordova构建一个Android应用程序,该应用程序正在Web视图中运行。我知道我可以通过chrome://inspect访问Webview,但是它仅适用于调试版本。它无法检查APK版本中的Chrome。那么有没有办法通过adb命令获取chrome控制台日志?

2 个答案:

答案 0 :(得分:0)

有关通过adb获取控制台日志的信息,请参见:Debugging a WebView (Ionic) app on Android via logcat

请先尝试以上操作,因为我似乎误解了您有关通过远程调试来调试WebView的问题。

对于包装WebView的简单本机Java / Kotlin Android应用,the documentation is quite clear that all one needs to do is to enable the feature

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
    WebView.setWebContentsDebuggingEnabled(true);
}

并需要其他代码才能将其限制为调试版本:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
    if (0 != (getApplicationInfo().flags & ApplicationInfo.FLAG_DEBUGGABLE))
    { WebView.setWebContentsDebuggingEnabled(true); }
}

查看Cordova Android存储库中的内容:

Cordova Android - ... SystemWebViewEngine.java

相关代码在这里:

//Determine whether we're in debug or release mode, and turn on Debugging!
ApplicationInfo appInfo = webView.getContext().getApplicationContext().getApplicationInfo();
if ((appInfo.flags & ApplicationInfo.FLAG_DEBUGGABLE) != 0) {
    enableRemoteDebugging();
}

我还发现了这个开放的ISSUE 500: Release version still have debugging enabled,这意味着即使将APK打包发布,Android模拟器也可以进行调试。

因此,对于在发行版APK上远程调试WebView的建议是:

  1. 尝试使用仿真器通过发行版APK进行调试。

  2. 考虑派生Cordova Android代码并创建特殊的调试模式,以便可以在设备上调试WebView的内容。可以通过自定义系统属性来隐藏启用这种功能:How to define and use a system property in Android?例如,假设您将标志定义为com.example.myapp.debugwebview。您可以通过adb setprop com.example.myapp.debugwebview 1之类的命令设置属性,并且在启动/重新启动时,应用将启用WebView调试。请注意,这确实需要更详细地了解Android以支持该功能,以及支持分叉的努力。

答案 1 :(得分:0)

无法在任何地方找到此 ,这对我有用:

adb -d logcat chromium:I *:S

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