Debugowanie aplikacji internetowych

Kod JavaScript możesz debugować za pomocą consoleinterfejsów JavaScript API, a komunikaty wyjściowe wyświetlać w narzędziu Logcat. Jeśli znasz debugowanie stron internetowych za pomocą Firebuga lub Web Inspectora, prawdopodobnie wiesz, jak używać console (np. console.log()). Platforma WebKit na Androidzie obsługuje większość tych samych interfejsów API, więc podczas debugowania w WebView możesz otrzymywać logi ze swojej strony internetowej. W tej sekcji opisujemy, jak używać interfejsów API konsoli do debugowania.

Korzystanie z interfejsów API konsoli w WebView

Interfejsy API konsoli są też obsługiwane podczas debugowania w WebView. Musisz podać WebChromeClient, który implementuje metodę onConsoleMessage(), aby komunikaty konsoli pojawiały się w Logcat. Następnie nałóż WebChromeClient na WebView za pomocą setWebChromeClient(). Więcej informacji znajdziesz w WebViewdokumentacji.

Poniższy przykład pokazuje, jak używać interfejsów API konsoli w 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;
    }
});

Obiekt ConsoleMessage zawiera też obiekt MessageLevel, który wskazuje typ dostarczanego komunikatu konsoli. Możesz wysyłać zapytania o poziom wiadomości za pomocą parametru messageLevel(), aby określić ważność wiadomości, a następnie użyć odpowiedniej metody Log lub podjąć inne odpowiednie działania.

Niezależnie od tego, czy używasz onConsoleMessage(String, int, String) czy onConsoleMessage(ConsoleMessage), gdy wykonujesz metodę konsoli na stronie internetowej, Android wywołuje odpowiednią metodę onConsoleMessage(), dzięki czemu możesz zgłosić błąd. Na przykład w przypadku przykładowego kodu wyświetlany jest komunikat Logcat, który wygląda tak:

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

Oto dodatkowe materiały związane z debugowaniem:

Testowanie eksperymentalnych funkcji internetowych

Podobnie jak na stronie chrome://flags w Google Chrome, możesz też testować eksperymentalne funkcje internetowe w WebView.

Aby to zrobić, wykonaj te czynności:

  1. Zainstaluj jeden z WebView kanałów wersji przedpremierowych (beta, deweloperska lub Canary){:.external}.

  2. Przełącz WebView kanał na urządzeniu testowym na zainstalowany kanał wersji przedpremierowej.

  3. Kliknij ikonę Narzędzia deweloperskie WebView.

    Ikona programu uruchamiającego Narzędzia deweloperskie WebView.
    Rysunek 1. Ikona Narzędzi deweloperskich WebView dla aplikacji zainstalowanej na urządzeniu.
  4. W Narzędziach deweloperskich kliknij Flagi i wyszukaj dowolne eksperymentalne funkcje, które chcesz włączyć lub wyłączyć. Zmiana zostanie zastosowana do wszystkich wystąpień WebView na urządzeniu.

  5. Zatrzymaj i ponownie uruchom aplikację, aby rozpocząć testowanie nowych funkcji.

Więcej informacji o przełączaniu flag znajdziesz w WebViewdokumentacji Narzędzi deweloperskich.