Отладка веб-приложений

Вы можете отладить свой JavaScript с помощью console API-интерфейсов JavaScript и просмотреть выходные сообщения в Logcat. Если вы знакомы с отладкой веб-страниц с помощью Firebug или Web Inspector, то вы, вероятно, знакомы с использованием console (например, console.log() ). Платформа Android WebKit поддерживает большинство одних и тех же API, поэтому вы можете получать журналы со своей веб-страницы при отладке в WebView . В этом разделе описывается, как использовать консольные API для отладки.

Используйте консольные API в WebView

Консольные API также поддерживаются при отладке в WebView . Вы должны предоставить WebChromeClient , который реализует метод onConsoleMessage() , чтобы сообщения консоли появлялись в Logcat. Затем примените WebChromeClient к вашему WebView с помощью setWebChromeClient() . Дополнительные сведения см. в документации Webview .

В следующем примере показано, как использовать консольные API в WebView :

Котлин

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
    }
}

Ява

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

Ниже приведены дополнительные ресурсы, связанные с отладкой:

Тестирование экспериментальных веб-функций

Как и на странице chrome://flags в Google Chrome, вы также можете протестировать экспериментальные веб-функции в WebView .

Для этого выполните следующие шаги:

  1. Установите один из каналов предварительной версии WebView (бета-версия, версия для разработчиков или канарейка) {: .external}.

  2. Переключите канал WebView на тестовом устройстве на установленный канал предварительной версии.

  3. Нажмите кнопку запуска WebView DevTools :


    Рис. 1. Значок WebView DevTools для приложения, установленного на устройстве.

  4. В DevTools нажмите «Флаги» и найдите любые экспериментальные функции, которые вы хотите включить или отключить. Изменение применяется ко всем экземплярам WebView на устройстве.

  5. Остановите и перезапустите приложение, чтобы начать тестирование новых функций.

Дополнительные сведения о переключении флагов см. в документации WebView DevTools .