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

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

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

Консольные API также поддерживаются при отладке в WebView . Для отображения консольных сообщений в Logcat необходимо предоставить WebChromeClient , реализующий метод onConsoleMessage() . Затем примените 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 (beta, dev или canary){:.external}.

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

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

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

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

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