Консоль Javascript.log () на устройствах HTC Android и ADB logcat
Я разрабатываю приложение в HTML, которое вызывает console.log()
из Javascript, чтобы предоставить мне журналы во время разработки о том, что происходит в коде веб-страницы.
к сожалению, когда я использую adb logcat
команда для проверки журналов я вижу вывод из всех других приложений, но не вывод из моего кода JavaScript. Я вижу даже журнал из веб-браузера, что страница загружена, но не console.log()
вывод из моего кода JavaScript, выполненного в интернете браузер.
По информации на этой странице (http://developer.android.com/guide/webapps/debugging.html) он должен работать.
Я тестирую на HTC WildFire и HTC Desire HD.
редактировать после более чем 6 месяцев
через некоторое время и опыт работы с различными устройствами (телефоны, телевизоры, телеприставки, WebViews, UIWebViews...) мой совет-сделать удаленное ведение журнала из JavaScript и не полагаясь на .log () или другие методы-см. хороший трюк с загрузкой изображения здесь.
не пропустите презентацию здесь Надеюсь, это поможет! Стэн!--4-->
6 ответов
в браузере по умолчанию на Android 2.3.3 (и, предположительно, с тех пор) вы можете просто использовать встроенную консоль javascript:
- открыть браузер
- перейдите на веб-страницу
- тип
about:debug
в адресной строке и нажмите enter - вы увидите раздел для параметров отладки появляются, если вы идете в настройки браузера приложения
- отметьте "показать консоль JavaScript", если она еще не включена
- обновить веб-страницы
вверху вы увидите панель с надписью "консоль JavaScript".
Я использую три разных телефона HTC, почти исключительно, и никогда не было этой проблемы. Вот несколько вещей, чтобы проверить:
- убедитесь, что Отладка USB включена.
- убедитесь, что ваш Webview имеет набор WebChromeClient. Браузер, используемый в Webview, не реализует консоль.бревно.)(
- должно быть легко увидеть выход ADB logcat, но чтобы сделать его проще, отфильтруйте выход.
включите USB отладка:
- отключите устройство от компьютера.
- перейдите в Настройки - > Приложения - > разработка - > выберите "включить отладку USB"
- плагин на компьютер. (Убедитесь, что у вас установлены правильные драйверы для использования ADB-дополнительная информация здесь:http://developer.android.com/guide/developing/device.html)
установите WebChromeClient, который переопределяет 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;
}
});
дополнительная информация о onConsoleMessage () здесь: http://developer.android.com/reference/android/webkit/WebChromeClient.html#onConsoleMessage(java.lang.String, int, java.ленг.String)
подробнее об отладке в общем вот: http://developer.android.com/guide/webapps/debugging.html
фильтровать вывод adb чтение logcat:
adb logcat tag-name:log-level *:S
tag-name соответствует строке, указанной в журнале.икс уровень журнала соответствует уровню журнала, указанному при вызове журнала.x
например, код:
adb logcat Your-Application-Name:D *:S
Это покажет все журналы уровня d для соответствующего тега, вашего имени приложения и заставит замолчать все остальное.
дополнительная информация о фильтрации adb здесь: http://developer.android.com/guide/developing/tools/adb.html#logcat
надеюсь, что это помогает! Я знаю, что это было немного резюмируя других ответов, но, на самом деле, он принимает все меры, чтобы заставить его работать. :)
у меня была такая же проблема, я решаю ее следующим образом:
1 / при инициализации webview добавьте класс моста javascript:
appView.addJavascriptInterface(new JSBridge(), "JSBridge");
2 / Создайте класс JSBridge с функцией log
class JSBridge {
public void log(String msg){
Log.d(msg);
}
}
3 / в вашем javascript теперь вы можете вызвать
JSBridge.log("my log message");
может быть немного излишним для вашей проблемы, но вы также можете сделать гораздо больше с этим решением
Logcat генерирует много вещей на устройствах в дополнение к вашему, поэтому вам, возможно, придется фильтровать это.
вы можете попробовать "grep" ваш выход журнала, Если вы пометили его. Например: согласно вашей статье вывод должен выглядеть так:
Console: Hello World http://www.example.com/hello.html :82
Если вы используете команду (предполагая, что вы используете Linux, Mac OS или что-нибудь еще с командой grep)
adb logcat | grep -i "console"
это уменьшит вывод до ключевого слова, указанного в этих кавычках. Если добавить уникальный тег для вывода вы также можете отфильтровать это, чтобы получить только то, что вы хотите видеть.
[ctrl]+c
остановит этот процесс logcat.
Это: Как отобразить консоль.log () вывод в приложении PhoneGap с помощью Eclipse и HTC Desire HD?
кажется, что это консоль.журнал отключен на устройствах HTC под управлением Android 2.2.
вы можете обойти его с помощью удаленной отладки в jsconsole.com.
попробуйте следующее:
1) Откройте вкладку Устройства и убедитесь, что устройство подключено это выделенных.
2) Убедитесь, что Отладка USB включена на вашем устройстве. Вот что вам нужно сделать для этого:
2a) на главном экране нажмите MENU, а затем нажмите Настройки > Приложения > разработка.
2b) убедитесь,что установлен флажок Отладка USB.