Fehler in Web-Apps beheben

Sie können JavaScript-Fehler mit den console JavaScript APIs beheben und die Ausgabemeldungen in Logcat ansehen. Wenn Sie sich mit dem Debugging von Webseiten mit Firebug oder Web Inspector auskennen, sind Sie wahrscheinlich auch mit der Verwendung von console (z. B. console.log()) vertraut. Das WebKit-Framework von Android unterstützt die meisten derselben APIs, sodass Sie beim Debugging in WebView Protokolle von Ihrer Webseite erhalten können. In diesem Thema wird beschrieben, wie Sie die Console-APIs für die Fehlerbehebung verwenden.

Console APIs in WebView verwenden

Die Konsolen-APIs werden auch beim Debugging in WebView unterstützt. Sie müssen einen WebChromeClient angeben, mit dem die Methode onConsoleMessage() implementiert wird, damit Konsolennachrichten in Logcat angezeigt werden. Wenden Sie dann WebChromeClient mit setWebChromeClient() auf WebView an. Weitere Informationen finden Sie in der Dokumentation zu Webview.

Das folgende Beispiel zeigt, wie Console APIs in WebView verwendet werden:

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

Der ConsoleMessage enthält auch ein MessageLevel-Objekt, das den Typ der übermittelten Konsolennachricht angibt. Sie können die Nachrichtenebene mit messageLevel() abfragen, um den Schweregrad der Nachricht zu ermitteln. Verwenden Sie dann die entsprechende Log-Methode oder ergreifen Sie andere geeignete Maßnahmen.

Wenn Sie onConsoleMessage(String, int, String) oder onConsoleMessage(ConsoleMessage) verwenden, ruft Android beim Ausführen einer Konsolenmethode auf Ihrer Webseite die entsprechende onConsoleMessage()-Methode auf, damit Sie den Fehler melden können. Mit dem Beispielcode oben wird beispielsweise eine Logcat-Nachricht ausgegeben, die so aussieht:

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

Im Folgenden finden Sie zusätzliche Ressourcen zur Fehlerbehebung:

Experimentelle Webfunktionen testen

Ähnlich wie auf der chrome://flags-Seite von Google Chrome können Sie auch experimentelle Webfunktionen in WebView testen.

Gehen Sie dazu so vor:

  1. Installieren Sie einen der WebView Vorabversionen (Beta, Dev oder Canary).

  2. Ändern Sie die Version WebView auf Ihrem Testgerät in die Version für die Vorabveröffentlichung.

  3. Klicken Sie auf den Launcher WebView DevTools:


    Abbildung 1: WebView-Entwicklertools-Symbol für eine auf einem Gerät installierte App.

  4. Klicken Sie in den Entwicklertools auf Flags und suchen Sie nach experimentellen Funktionen, die Sie aktivieren oder deaktivieren möchten. Die Änderung gilt für alle WebView-Instanzen auf dem Gerät.

  5. Beende die App und starte sie neu, um die neuen Funktionen zu testen.

Weitere Informationen zum Wechseln der Flags finden Sie in der Dokumentation zu den WebView-Entwicklertools.