Debugowanie aplikacji internetowych

JavaScript możesz debugować za pomocą interfejsów API JavaScript console i wyświetlać komunikaty wyjściowe w narzędziu Logcat. Jeśli debugujesz strony internetowe przy użyciu Firebuga lub Inspektora sieci, zapewne znasz używanie console (np. console.log()). Platforma WebKit Androida obsługuje większość tych samych interfejsów API, dzięki czemu podczas debugowania możesz otrzymywać dzienniki ze swojej strony internetowej w WebView. W tym temacie opisujemy sposób używania interfejsów API konsoli do debugowania.

Używanie interfejsów API konsoli w WebView

Interfejsy API konsoli są też obsługiwane podczas debugowania w WebView. Aby komunikaty konsoli wyświetlały się w Logcat, musisz udostępnić kod WebChromeClient implementujący metodę onConsoleMessage(). Następnie zastosuj WebChromeClient do WebView za pomocą setWebChromeClient(). Więcej informacji znajdziesz w dokumentacji Webview.

Ten przykład pokazuje, jak korzystać z interfejsów API konsoli w WebView:

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 zawiera też obiekt MessageLevel wskazujący typ dostarczanej wiadomości konsoli. Możesz wysyłać zapytania na poziomie wiadomości za pomocą narzędzia messageLevel(), aby określić wagę wiadomości, a następnie użyć odpowiedniej metody Log lub podjąć inne odpowiednie działania.

Niezależnie od tego, czy używasz metody onConsoleMessage(String, int, String) czy onConsoleMessage(ConsoleMessage), podczas wykonywania na stronie internetowej metody konsoli, Android wywołuje odpowiednią metodę onConsoleMessage(), aby umożliwić Ci zgłoszenie błędu. W podanym wyżej przykładowym kodzie wyświetlono np. komunikat Logcat, który wygląda tak:

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

Tutaj znajdziesz dodatkowe materiały na temat debugowania:

Testowanie eksperymentalnych funkcji internetowych

Podobnie jak w przypadku strony chrome://flags w Google Chrome w usłudze WebView możesz także testować eksperymentalne funkcje internetowe.

Aby to zrobić:

  1. Zainstaluj jeden z kanałów przedpremierowych (WebView) (beta, deweloperski lub do wczesnych testów){: .external}.

  2. Przełącz kanał WebView na urządzeniu testowym na zainstalowany kanał wersji przedpremierowej.

  3. Kliknij menu WebView DevTools:


    Rysunek 1. Ikona Narzędzi deweloperskich w WebView w przypadku aplikacji zainstalowanej na urządzeniu.

  4. W Narzędziach deweloperskich kliknij Flagi i wyszukaj funkcje eksperymentalne, które chcesz włączyć lub wyłączyć. Zmiana zostanie zastosowana do wszystkich instancji WebView na urządzeniu.

  5. Zatrzymaj ją i uruchom ponownie, aby rozpocząć testowanie nowych funkcji.

Więcej informacji o przełączaniu flag znajdziesz w dokumentacji Narzędzi deweloperskich WebView.