Konsola Javascript.log() na urządzeniach HTC z Androidem i adb logcat

Rozwijam aplikację w HTML, która wywołuje {[0] } z Javascript, aby dostarczyć MI logów podczas tworzenia o tym, co dzieje się w kodzie strony internetowej.

Niestety, gdy używam polecenia adb logcat do sprawdzania logów, widzę wyjście ze wszystkich innych aplikacji, ale nie wyjście z mojego kodu JavaScript. Widzę nawet dziennik z przeglądarki internetowej, że strona jest załadowana, ale nie console.log() wyjście z mojego kodu JavaScript wykonanego w przeglądarce internetowej.

Według informacje o tej stronie (http://developer.android.com/guide/webapps/debugging.html ) powinno zadziałać.

Testuję na HTC WildFire i HTC Desire HD .


edytowane po ponad 6 miesiącach

Po pewnym czasie i doświadczeniu z różnymi urządzeniami (telefony, telewizory, dekodery, WebViews, UIWebViews...) radzę zrobić zdalne logowanie Z JavaScript i nie polegać na konsola.log () lub inne metody-zobacz fajną sztuczkę z ładowaniem obrazu tutaj .

Nie przegap prezentacji tutaj Mam nadzieję, że to pomoże! STeN

Author: Community, 2011-04-04

6 answers

W domyślnej przeglądarce na Androida 2.3.3 (i prawdopodobnie od tej pory) możesz po prostu użyć wbudowanej konsoli javascript:

  • Otwórz przeglądarkę
  • przejdź do swojej strony
  • wpisz about:debug w pasku adresu i naciśnij enter
  • zobaczysz sekcję opcji debugowania, jeśli przejdziesz do ustawień aplikacji przeglądarki
  • zaznacz "Pokaż konsolę JavaScript", jeśli nie jest już włączona
  • odśwież swoją stronę

Na górze zobaczysz pasek z napisem "JavaScript Console".

 29
Author: thruflo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-07-17 18:14:36

Używam trzech różnych telefonów HTC, prawie wyłącznie, i nigdy nie miałem tego problemu. Oto kilka rzeczy do sprawdzenia:

  1. Upewnij się, że debugowanie USB jest włączone.
  2. Upewnij się, że Webview ma zestaw WebChromeClient. Przeglądarka używana w Webview nie implementuje konsoli.log ().
  3. powinno być łatwo zobaczyć wyjście adb logcat, ale aby to ułatwić, filtruj wyjście.

Włącz debugowanie USB:

  1. Disconnect Twoje urządzenie z komputera.
  2. przejdź do Ustawienia -> Aplikacje -> Rozwój - > wybierz "Włącz debugowanie USB"
  3. Plugin do komputera. (Upewnij się, że masz zainstalowane odpowiednie sterowniki do korzystania z ADB-więcej informacji tutaj: http://developer.android.com/guide/developing/device.html )

Ustaw WebChromeClient, który nadpisuje onConsoleMessage():

//Set the output prefix so you can filter adb logcat results later
public static final String TAG = "Your-Application-Name";

myWebView = (WebView) findViewById(R.id.webview);

//Not going to have much luck running JS without this:
myWebView.getSettings().setJavaScriptEnabled(true);

//Override onConsoleMessage() to output to the Log.
myWebView.setWebChromeClient(new WebChromeClient() {
    @Override
    public boolean onConsoleMessage(ConsoleMessage cm) {
        Log.d(TAG, cm.message() + " -- From line "
        + cm.lineNumber() + " of "
        + cm.sourceId() );
        return true;
    }
});

Więcej informacji na temat onConsoleMessage() tutaj: http://developer.android.com/reference/android/webkit/WebChromeClient.html#onConsoleMessage(java.lang.String, int, java.lang.String)

Więcej informacji na temat debugowania w ogóle tutaj: http://developer.android.com/guide/webapps/debugging.html

Filtruj wyjście adb logcat:

adb logcat tag-name:log-level *:S

Tag-name pasuje do łańcucha podanego w logu.x poziom dziennika odpowiada poziomowi dziennika wskazanemu podczas wywoływania dziennika.x

Przykład dotyczący do powyższego kodu:

adb logcat Your-Application-Name:D *:S

Wyświetli wszystkie dzienniki poziomu D dla pasującego tagu, nazwy Twojej aplikacji i wyciszy Wszystko inne.

Więcej informacji na temat filtrowania adb tutaj: http://developer.android.com/guide/developing/tools/adb.html#logcat

Mam nadzieję, że to pomoże! Wiem, że to było trochę podsumowania innych odpowiedzi, ale faktem jest, że to wymaga wszystkich kroków, aby to działało. :)
 12
Author: Jonathan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-05-19 03:58:26

Miałem ten sam problem, rozwiązuję go wykonując następujące czynności:

1 / po zainicjowaniu webview Dodaj klasę javascript bridge:

appView.addJavascriptInterface(new JSBridge(), "JSBridge");

2 / Utwórz klasę JSBridge z funkcją log

class JSBridge {
  public void log(String msg){
   Log.d(msg);
  }
}

3 / w Twoim javascript możesz teraz wywołać

JSBridge.log("my log message");

Może to być trochę przesada dla Twojego problemu, ale możesz również zrobić o wiele więcej z tym rozwiązaniem

 8
Author: standup75,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-10-06 17:55:11

Logcat generuje wiele rzeczy na urządzeniach oprócz twoich, więc być może będziesz musiał to filtrować.

Możesz spróbować "grep" wyjście dziennika, jeśli go oznaczyłeś. Na przykład: w zależności od artykułu wynik powinien wyglądać następująco:

Console: Hello World http://www.example.com/hello.html :82

Jeśli używasz polecenia (zakładając, że używasz Linuksa, Mac OS lub czegokolwiek innego z poleceniem grep)

adb logcat | grep -i "console"

Zmniejszy wynik do słowa kluczowego określonego w tych cudzysłowach. Jeśli dodasz unikalny znacznik do wyniku możesz również filtrować to, aby uzyskać tylko rzeczy, które chcesz zobaczyć.

[ctrl]+c

Zatrzyma ten proces logcat.

 4
Author: kneo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-05-04 23:14:19

Zobacz to: Jak wyświetlić konsolę.wyjście log() w aplikacji PhoneGap przy użyciu Eclipse i HTC Desire HD?

Wygląda na to, że konsola.log jest wyłączony na urządzeniach HTC z systemem Android 2.2.

Możesz obejść go używając zdalnego debugowania w jsconsole.com .

 3
Author: Epeli,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:55:06

Spróbuj:

1) Otwórz kartę urządzenia i upewnij się, że podłączone urządzenie jest zaznaczone/podświetlone.

2) Upewnij się, że debugowanie USB jest włączone na urządzeniu. Oto, co musisz zrobić w tym celu:

2a) na ekranie głównym naciśnij MENU, a następnie dotknij Ustawienia > Aplikacje > Rozwój.

2b) upewnij się, że pole wyboru debugowanie USB jest zaznaczone.

 0
Author: Ameer Sheikh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-05-04 19:00:05