调试 Web 应用

您可以使用 console JavaScript API 调试 JavaScript,并在 Logcat 中查看输出消息。如果您熟悉使用 Firebug 或 Web Inspector 调试网页,那么您可能熟悉使用 console(例如 console.log())。Android 的 WebKit 框架支持大多数相同的 API,因此您可以在 WebView 中调试时接收来自网页的日志。本部分介绍如何使用控制台 API 进行调试。

在 WebView 中使用控制台 API

WebView 中调试时,控制台 API 也受支持。您必须提供一个实现 onConsoleMessage() 方法的 WebChromeClient,控制台消息才会显示在 Logcat 中。然后,使用 setWebChromeClient()WebChromeClient 应用到您的 WebView。如需了解详情,请参阅 Webview 文档。

以下示例展示了如何在 WebView 中使用控制台 API

Kotlin

val myWebView: WebView = findViewById(R.id.webview)
myWebView.webChromeClient = object : WebChromeClient() {

    override fun onConsoleMessage(message: ConsoleMessage): Boolean {
        Log.d("MyApplication", "${message.message()} -- From line " +
              "${message.lineNumber()} of ${message.sourceId()}")
        return true
    }
}

Java

WebView myWebView = findViewById(R.id.webview);
myWebView.setWebChromeClient(new WebChromeClient() {
    @Override
    public boolean onConsoleMessage(ConsoleMessage consoleMessage) {
        Log.d("MyApplication", consoleMessage.message() + " -- From line " +
        consoleMessage.lineNumber() + " of " + consoleMessage.sourceId());
        return true;
    }
});

ConsoleMessage 还包含一个 MessageLevel 对象,用于指示发送的控制台消息类型。您可以使用 messageLevel() 查询消息级别,以确定消息的严重程度,然后使用适当的 Log 方法或采取其他适当的操作。

无论您使用的是 onConsoleMessage(String, int, String) 还是 onConsoleMessage(ConsoleMessage),当您在网页中执行控制台方法时,Android 都会调用相应的 onConsoleMessage() 方法,以便您报告错误。例如,使用上面的示例代码,将打印一条如下所示的 Logcat 消息

Hello World -- From line 82 of http://www.example.com/hello.html

以下是与调试相关的其他资源

测试实验性 Web 功能

与 Google Chrome 的 chrome://flags 页面类似,您也可以在 WebView 中测试实验性 Web 功能。

为此,请按以下步骤操作

  1. 安装其中一个 WebView 预发布渠道(Beta 版、开发者版或 Canary 版){: .external}。

  2. 将测试设备上的 WebView 渠道切换到已安装的预发布渠道。

  3. 点击 WebView DevTools 启动器


    图 1. 已安装在设备上的应用的 WebView DevTools 图标。

  4. 在 DevTools 中,点击 Flags 并搜索您要启用或停用的实验性功能。更改将应用于设备上所有 WebView 实例。

  5. 停止并重启应用,开始测试新功能。

如需了解有关切换标志的详情,请参阅 WebView DevTools 文档