Eseguire il debug delle app web

Puoi eseguire il debug di JavaScript utilizzando le API JavaScript console e visualizzare i messaggi di output in Logcat. Se hai dimestichezza con il debug di pagine web con Firebug o l'inspector web, probabilmente sai già come usare console (ad esempio console.log()). Il framework WebKit di Android supporta la maggior parte delle stesse API, quindi puoi ricevere i log dalla tua pagina web durante il debug nel tuo WebView. Questo argomento descrive come utilizzare le API della console per il debug.

Usa le API della console in WebView

Le API della console sono supportate anche durante il debug in WebView. Devi fornire un WebChromeClient che implementi il metodo onConsoleMessage() per visualizzare i messaggi della console in Logcat. Dopodiché applica WebChromeClient a WebView con setWebChromeClient(). Per ulteriori informazioni, consulta la documentazione Webview.

L'esempio seguente mostra come utilizzare le API della console in 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 include anche un oggetto MessageLevel per indicare il tipo di messaggio della console da consegnare. Puoi eseguire query a livello di messaggio con messageLevel() per determinarne la gravità, quindi utilizzare il metodo Log appropriato o eseguire altre azioni appropriate.

Che tu utilizzi onConsoleMessage(String, int, String) o onConsoleMessage(ConsoleMessage), quando esegui un metodo della console nella tua pagina web, Android chiama il metodo onConsoleMessage() appropriato per consentirti di segnalare l'errore. Ad esempio, con il codice di esempio riportato sopra, viene stampato un messaggio Logcat simile al seguente:

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

Di seguito sono riportate le risorse aggiuntive relative al debug:

Testare le funzionalità web sperimentali

Come per la pagina chrome://flags di Google Chrome, puoi anche testare le funzionalità web sperimentali in WebView.

Per eseguire questa operazione, procedi nel seguente modo:

  1. Installa uno dei WebView canali di pre-release (beta, dev o canary){: .external}.

  2. Cambia il canale WebView sul dispositivo di test al canale di pre-release installato.

  3. Fai clic sull'Avvio app WebView DevTools:


    Figura 1. Icona di WebView DevTools per l'app installata su un dispositivo.

  4. In DevTools, fai clic su Flag e cerca le funzionalità sperimentali che vuoi attivare o disattivare. La modifica si applica a tutte le istanze WebView sul dispositivo.

  5. Interrompi e riavvia l'app per iniziare i test con le nuove funzionalità.

Per ulteriori informazioni sull'attivazione/disattivazione dei flag, consulta la documentazione di WebView DevTools.