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 avez l'habitude de déboguer des pages Web avec Firebug ou Web Inspector, vous connaissez probablement l'utilisation de console (comme 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 lorsque vous effectuez un 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 lors du débogage dans WebView. Vous devez fournir un WebChromeClient qui implémente la méthode onConsoleMessage() pour que les messages de la console s'affichent dans Logcat. Appliquez ensuite le WebChromeClient à votre WebView avec setWebChromeClient(). Pour en savoir plus, consultez la documentation WebView.

L'exemple suivant montre comment utiliser les API de la 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 sur votre page Web, Android appelle la méthode onConsoleMessage() appropriée pour que vous puissiez signaler l'erreur. Par exemple, avec l'exemple de code, un message Logcat s'affiche et ressemble à ceci :

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

Voici d'autres ressources liées au débogage :

Tester des fonctionnalités Web expérimentales

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

Pour ce faire, procédez comme suit :

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

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

  3. Cliquez sur le lanceur d'outils de développement WebView.

    Icône de lanceur des outils de développement WebView.
    Image 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 l'élément Indicateurs et recherchez les fonctionnalités expérimentales que vous souhaitez activer ou désactiver. La modification s'applique à toutes les instances WebView sur l'appareil.

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

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