Fehler in Web-Apps beheben

Sie können Ihr JavaScript mit den console JavaScript APIs debuggen und die Ausgabemeldungen in Logcat ansehen. Wenn Sie mit dem Debuggen von Webseiten mit Firebug oder Web Inspector vertraut sind, kennen Sie wahrscheinlich die Verwendung von console (z. B. console.log()). Das WebKit-Framework von Android unterstützt die meisten dieser APIs, sodass Sie beim Debuggen in Ihrem WebView Protokolle von Ihrer Webseite erhalten können. In diesem Abschnitt wird beschrieben, wie Sie die Konsolen-APIs zum Debuggen verwenden.

Console-APIs in WebView verwenden

Die Console-APIs werden auch beim Debuggen in WebView unterstützt. Sie müssen ein WebChromeClient bereitstellen, das die Methode onConsoleMessage() implementiert, damit Konsolennachrichten in Logcat angezeigt werden. Wenden Sie dann WebChromeClient auf Ihr WebView mit setWebChromeClient() an. Weitere Informationen finden Sie in der Dokumentation zu WebView.

Das folgende Beispiel zeigt, wie Sie Konsolen-APIs in WebView verwenden:

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

Das ConsoleMessage enthält auch ein MessageLevel-Objekt, das den Typ der gesendeten Konsolennachricht angibt. Sie können die Meldungsebene mit messageLevel() abfragen, um den Schweregrad der Meldung zu ermitteln, und dann die entsprechende Log-Methode verwenden oder andere geeignete Maßnahmen ergreifen.

Unabhängig davon, ob 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 wird beispielsweise eine Logcat-Nachricht ausgegeben, die so aussieht:

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

Hier finden Sie zusätzliche Ressourcen zur Fehlerbehebung:

Experimentelle Webfunktionen testen

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

Gehen Sie dazu so vor:

  1. Installieren Sie einen der WebViewVorab-Release-Versionen (Beta, Entwickler oder Canary).{.external}

  2. Stellen Sie auf Ihrem Testgerät den WebView-Kanal auf den installierten Vorab-Release-Kanal um.

  3. Klicken Sie auf den Launcher für die WebView-Entwicklertools.

    Launcher-Symbol für WebView-Entwicklertools
    Abbildung 1. WebView DevTools-Symbol für eine App, die auf einem Gerät installiert ist.
  4. Klicken Sie in den Entwicklertools auf Flags und suchen Sie nach experimentellen Funktionen, die Sie aktivieren oder deaktivieren möchten. Die Änderung wird auf alle WebView-Instanzen auf dem Gerät angewendet.

  5. Beenden Sie Ihre App und starten Sie sie neu, um die neuen Funktionen zu testen.

Weitere Informationen zum Ein- und Ausschalten von Flags finden Sie in der WebView-Dokumentation für Entwicklertools.