Консоль 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, почти исключительно, и никогда не было этой проблемы. Вот несколько вещей, чтобы проверить:

  1. убедитесь, что Отладка USB включена.
  2. убедитесь, что ваш Webview имеет набор WebChromeClient. Браузер, используемый в Webview, не реализует консоль.бревно.)(
  3. должно быть легко увидеть выход ADB logcat, но чтобы сделать его проще, отфильтруйте выход.

включите USB отладка:

  1. отключите устройство от компьютера.
  2. перейдите в Настройки - > Приложения - > разработка - > выберите "включить отладку USB"
  3. плагин на компьютер. (Убедитесь, что у вас установлены правильные драйверы для использования 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.