Déboguer des applications Web

Vous pouvez déboguer votre code JavaScript à l'aide des API JavaScript console et afficher les messages de sortie dans Logcat. Si vous savez déboguer des pages Web avec Firebug ou Web Inspector, vous savez probablement utiliser console (par exemple, console.log()). Le framework WebKit d'Android est compatible avec la plupart des mêmes API. Vous pouvez donc recevoir des journaux de votre page Web lors du débogage dans votre WebView. Cette section explique comment utiliser les API de la console pour le débogage.

Utiliser les API de la console dans WebView

Les API de la console sont également compatibles avec le débogage dans WebView. Vous devez fournir un WebChromeClient qui implémente la méthode onConsoleMessage() pour que les messages de console s'affichent dans Logcat. Ensuite, appliquez WebChromeClient à votre WebView avec setWebChromeClient(). Pour en savoir plus, consultez la documentation sur Webview.

L'exemple suivant montre comment utiliser les API de console dans 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 inclut également un objet MessageLevel pour indiquer le type de message de console envoyé. Vous pouvez interroger le niveau du message avec messageLevel() pour déterminer la gravité du message, puis utiliser la méthode Log appropriée ou prendre d'autres mesures appropriées.

Que vous utilisiez onConsoleMessage(String, int, String) ou onConsoleMessage(ConsoleMessage), lorsque vous exécutez une méthode de console dans votre page Web, Android appelle la méthode onConsoleMessage() appropriée afin que vous puissiez signaler l'erreur. Par exemple, avec l'exemple de code ci-dessus, un message Logcat s'affiche comme suit:

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

Vous trouverez ci-dessous d'autres ressources sur le débogage:

Tester des fonctionnalités Web expérimentales

Comme sur la page chrome://flags de Google Chrome, vous pouvez également tester les fonctionnalités Web expérimentales dans WebView.

Pour ce faire, procédez comme suit:

  1. Installez l'une des versions préliminaires WebView (bêta, en développement ou Canary){: .external}.

  2. Passez la chaîne WebView sur votre appareil de test à la version préliminaire installée.

  3. Cliquez sur le lanceur d'applications WebView DevTools:


    Figure 1 : Icône des outils pour les développeurs WebView pour une application installée sur un appareil.

  4. Dans les outils de développement, cliquez sur Flags (Options) et recherchez les fonctionnalités expérimentales que vous souhaitez activer ou désactiver. La modification s'applique à toutes les instances WebView de l'appareil.

  5. Arrêtez et redémarrez votre application pour commencer à tester les nouvelles fonctionnalités.

Pour en savoir plus sur l'activation/la désactivation des options, consultez la documentation des outils de développement WebView.