Depurar apps da Web

É possível depurar o JavaScript usando as APIs JavaScript console e conferir as mensagens de saída no Logcat. Se você tem familiaridade com a depuração de páginas da Web com o Systrace ou o Web Inspector, provavelmente já conhece o uso de console (como console.log()). O framework WebKit do Android é compatível com a maioria das mesmas APIs. Portanto, você pode receber registros da página da Web durante a depuração em WebView. Este tópico descreve como usar as APIs do Console para depuração.

Usar APIs do console na WebView

As APIs do console também têm suporte durante a depuração em WebView. É necessário fornecer um WebChromeClient que implemente o método onConsoleMessage() para que as mensagens do console apareçam no Logcat. Em seguida, aplique o WebChromeClient à WebView com setWebChromeClient(). Para mais informações, consulte a documentação Webview.

O exemplo abaixo mostra como usar as APIs do console em 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;
    }
});

O ConsoleMessage também inclui um objeto MessageLevel para indicar o tipo de mensagem do console que está sendo entregue. É possível consultar o nível da mensagem com messageLevel() para determinar a gravidade da mensagem e, em seguida, usar o método Log apropriado ou tomar outras ações adequadas.

Se você estiver usando onConsoleMessage(String, int, String) ou onConsoleMessage(ConsoleMessage), ao executar um método de console na sua página da Web, o Android chamará o método onConsoleMessage() adequado para que você possa relatar o erro. Por exemplo, com o código de exemplo acima, uma mensagem do Logcat é mostrada desta forma:

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

Confira abaixo outros recursos relacionados à depuração:

Testar recursos experimentais da Web

Assim como na página chrome://flags do Google Chrome, você também pode testar recursos experimentais da Web em WebView.

Para isso, siga estas etapas:

  1. Instale um dos canais de pré-lançamento do WebView (Beta, dev ou canário){: .external}.

  2. Mude o canal WebView no dispositivo de teste para o canal de pré-lançamento instalado.

  3. Clique na tela de início do WebView DevTools:


    Figura 1. Ícone do WebView DevTools para o app instalado em um dispositivo.

  4. No DevTools, clique em Flags e procure recursos experimentais que você quer ativar ou desativar. A mudança se aplica a todas as instâncias do WebView no dispositivo.

  5. Interrompa e reinicie o app para começar a testar com os novos recursos.

Para saber mais sobre como ativar ou desativar flags, consulte a documentação do WebView DevTools.