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
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".
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:
- Upewnij się, że debugowanie USB jest włączone.
- Upewnij się, że Webview ma zestaw WebChromeClient. Przeglądarka używana w Webview nie implementuje konsoli.log ().
- powinno być łatwo zobaczyć wyjście adb logcat, ale aby to ułatwić, filtruj wyjście.
Włącz debugowanie USB:
- Disconnect Twoje urządzenie z komputera.
- przejdź do Ustawienia -> Aplikacje -> Rozwój - > wybierz "Włącz debugowanie USB"
- 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. :)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
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.
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 .
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.
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