Debugowanie aplikacji internetowych

Kod JavaScript możesz debugować za pomocą interfejsów API JavaScript console i wyświetlać komunikaty wyjściowe w Logcat. Jeśli znasz debugowanie stron internetowych za pomocą Firebuga lub Web Inspectora, prawdopodobnie wiesz, jak korzystać z console (np. console.log()). Interfejs WebKit na Androida obsługuje większość tych samych interfejsów API, więc podczas debugowania w WebView możesz otrzymywać dzienniki ze swojej strony internetowej. W tej sekcji opisaliśmy, 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. Aby komunikaty konsoli pojawiały się w Logcat, musisz podać obiekt WebChromeClient, który implementuje metodę onConsoleMessage(). Następnie zastosuj tag WebChromeClient do WebView za pomocą tagu setWebChromeClient(). Więcej informacji znajdziesz w dokumentacji Webview.

Ten 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 w konsoli. Możesz wysłać zapytanie o poziom wiadomości za pomocą parametru messageLevel(), aby określić jej wagę, a następnie użyć odpowiedniej metody Log lub podjąć inne odpowiednie działania.

Gdy na stronie internetowej wykonasz metodę konsoli (onConsoleMessage(String, int, String) lub onConsoleMessage(ConsoleMessage)), Android wywoła odpowiednią metodę onConsoleMessage(), aby umożliwić zgłoszenie błędu. Na przykład w przypadku kodu z powyższego przykładu zostanie wydrukowany komunikat w Logcat, który wygląda tak:

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

Oto dodatkowe materiały dotyczące debugowania:

Testowanie eksperymentalnych funkcji internetowych

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

Aby to zrobić:

  1. Zainstaluj jeden z WebViewkanałów wersji wstępnych (beta, deweloperskiej lub Canary).{: .external}

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

  3. Kliknij menu Narzędzia dla deweloperów WebView:


    Rysunek 1. Ikona narzędzi programistycznych WebView dla aplikacji zainstalowanej na urządzeniu.

  4. W Narzędziach deweloperskich kliknij Flagi i poszukaj funkcji eksperymentalnych, które chcesz włączyć lub wyłączyć. Zmiana dotyczy 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 dokumentacji WebView Narzędzi dla deweloperów.