通过打印控制台消息或通过远程调试来排除 WebView 故障

将 webview 控制台消息打印到 logcat

要从网页处理 console 消息,你可以覆盖 WebChromeClient 中的 onConsoleMessage

final class ChromeClient extends WebChromeClient {
    @Override
    public boolean onConsoleMessage(ConsoleMessage msg) {
        Log.d(
            "WebView", 
            String.format("%s %s:%d", msg.message(), msg.lineNumber(), msg.sourceId())
        );
        return true;
    }
}

并将其设置在你的活动或片段中:

webView.setWebChromeClient(new ChromeClient());

所以此示例页面:

<html>
<head>
    <script type="text/javascript">
        console.log('test message');
    </script>
</head>
<body>
</body>
</html>

将日志’测试消息’写入 logcat:

WebView:测试消息 sample.html:4

chrome-client 也支持 console.info()console.warn()console.error()

使用 Chrome 远程调试 Android 设备

你可以从桌面 Chrome 远程调试基于 webview 的应用程序。

在 Android 设备上启用 USB 调试

在 Android 设备上,打开设置,找到开发人员选项部分,然后启用 USB 调试。

连接并发现你的 Android 设备

在 Chrome 页面中打开页面: chrome:// inspect /#devices

检查设备对话框中,选择你的设备并按检查。Chrome 的 DevTools 的新实例在你的开发机器上打开。

有关 DevTools 的更详细指南和说明,请访问 developers.google.com