【问题标题】:How can I get webview console log through adb?如何通过 adb 获取 webview 控制台日志?
【发布时间】:2019-08-15 04:44:06
【问题描述】:

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

【问题讨论】:

  • 您是在使用特定的框架或工具来构建您的应用程序,还是只是将 HTML5/Javascript 放入包装 WebView 的简单原生 (Java/Kotlin) Android 应用程序中?
  • 我正在使用Cordova 并且我已经更新了问题。谢谢。
  • 这个问题/答案可能会有所帮助Debugging WebView in apps

标签: android google-chrome webview


【解决方案1】:

在 SO 上任何地方都找不到这个,这对我有用:

adb -d logcat chromium:I *:S

-d 在我的例子中表示物理设备。如果一切都失败了,只需将adb logcat 的结果转储到一个文本文件中并搜索“CONSOLE”,这将为您提供 logcat 过滤器的提供程序。似乎这会随着时间而变化,并且取决于您的特定开发环境。

【讨论】:

    【解决方案2】:

    要通过 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 有更详细的了解才能支持此类功能,以及支持分叉的努力。

    【讨论】:

      猜你喜欢
      • 2013-09-16
      • 1970-01-01
      • 1970-01-01
      • 2013-08-18
      • 1970-01-01
      • 2012-04-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多