отладка javascript в эмуляторе android с помощью phonegap


Я новичок в разработке phonegap и android. Могу ли я знать, как я могу отлаживать ошибку javascript на эмуляторе? Я слышал о ADB может я знаю, как я могу использовать и установить его на windows 7 системы? У меня есть ajax вызывается с jsonp, но нет ответа на эмулятор. Тем не менее, я могу назвать это ajax с браузером на windows. Могу я узнать, что пошло не так?

17 68

17 ответов:

вы могли бы по крайней мере записывать отладочные материалы в консоль adb, вызывая консоль.log () в JavaScript. Может быть, этого будет достаточно?

чтобы просмотреть вывод журнала с помощью adb, перейдите к вашей платформе SDK-tools/ directory и выполните:

adb logcat

посмотреть logcat инструмент командной строки

Обновление Ноябрь 2016: похоже, это больше не работает.

проще и одним из самых мощных способов является использование http://debug.phonegap.com (он использует Weinre в фоновом режиме, если вам не все равно). Ты просто

  1. выбрать случайную строку, скажем r4nd0m,
  2. впрыснуть <script src="http://debug.phonegap.com/target/target-script-min.js#r4nd0m"></script> в своем index.html
  3. посетить http://debug.phonegap.com/client/#r4nd0m и вы мгновенно будете отлаживать свой мобильный интернет приложение.

что вы можете сделать (похоже на Firebug или веб-инспектор):

  1. просмотр и изменение DOM
  2. редактирование CSS
  3. консоль для живой отладки и удаленного запуска Javascript.
  4. другие вещи, такие как: хранение, ресурсы, сроки, профиль, и т. д.

теперь вы можете использовать инструменты разработчика Chrome удаленная отладка приложений с помощью PhoneGap на Android! Я написал инструкции здесь:удаленная отладка приложений Phonegap с помощью Chrome Dev Tools

шаги для эмулятора Android:

  1. перейдите в chrome:/ / inspect / in Google Chrome на вашем настольном компьютере.
  2. найдите эмулятор Android на вкладке Устройства и нажмите "Проверить" ссылку

Google Chrome remote target

см. также вам Началось с удаленной отладки Android устройств

Проверьте недавно опубликованные http://developer.android.com/guide/webapps/debugging.html

Я бы рекомендовал jsconsole. Он позволяет вводить любой JavaScript на страницу и предоставляет базовую консоль. Есть хороший учебник по удаленной отладки.

Да, у вас есть ошибки журнала с консолью.войдите и покажите вкладку LogCat в Eclipse. Там будут отображаться сообщения веб-консоли (включая ошибки JS). Это немного многословно, поэтому вам нужно отфильтровать, чтобы показать только теги веб-консоли, но это хорошо работает. Описано здесь: ОТОБРАЖЕНИЕ КОНСОЛИ КОНСОЛИ.ВЫХОД ЖУРНАЛА И ОШИБКИ JAVASCRIPT С PHONEGAP НА ANDROID / ECLIPSE

Я обнаружил, что это работает для отладки ошибок javascript для Android/Phonegap при тестировании приложения через Eclipse на Windows 7.

просто подойдите к Окно > Показать Вид > Другое...

выберите LogCat под Android.

только что появившееся окно/вкладка, где эмулятор Android будет отправлять свои журналы и сообщения об ошибках. Вы можете отрядить на это окно и поместить его за пределами интегрированной среде разработки Eclipse (Я нашел это полезным). Вы также можете управлять типами ошибок, которые вы видите, выбрав любую из 5 цветных букв в правом верхнем углу окна.

чтобы скрыть бесполезную информацию, чтобы вы просто видели ошибки, убедитесь, что вы выбрали только (E). Лично мне также нравится, чтобы были выбраны (W) предупреждения, а также (E) ошибки.

надеюсь, что это поможет!

есть (наконец) инструмент, доступный для правильной отладки JavaScript для Android -http://www.jshybugger.org/

характеристики:

  • добавить/удалить/включить / отключить точки останова линии
  • следите за выражениями
  • шаг в/ПО/из
  • пауза на исключение
  • навигация стека вызовов
  • локальная переменная проверки
  • удаленная консоль
  • синтаксис JavaScript и отчеты об ошибках во время выполнения
  • просмотр/редактирование / удаление локальных элементов хранения
  • просмотр/редактирование / удаление элементов хранения сеанса
  • просмотр/редактирование / удаление записей базы данных WebSQL (смотреть видео)
  • просмотр ресурсов страницы (изображения, скрипты, html)
  • поддержка удаленной консоли расширена (stacktrace)
  • отладчик: расширенная проверка объекта
  • отладчик: условные точки останова
  • отладчик: продолжайте здесь

я решил его легко на двух шагах.

изменить уровень ведения журнала

в config.xml добавить эту строку

    <log level="DEBUG"/>

запустите журнал Кордовы

это файл bat, который вы можете просто запустить и отслеживать все сообщения журнала перейдите в свой проект phonegap и перейдите к \platforms\android\cordova откройте log.bat Теперь вы можете эмулировать приложения с помощью командной строки

cordova emulate

и журнал будет показан в cmd, который будет всплывать при открытии log.bat

Если вы готовы установить NodeJS где вы можете сделать некоторые дополнительные отладки с iBug, который, хотя и был разработан для iPhone, я протестировал на Android, и он отлично работает. Это в основном firebug lite для мобильных устройств. Я указываю на свою вилку, потому что узел сильно изменился, и код Джона не будет работать на современных nodeJS, поэтому я исправил его, чтобы запустить его на nodeJS 0.2.3, YMMV на более поздних версиях nodeJS.

Если вы используете console.log вы можете сделать простые операторы печати. А также с помощью adb чтобы просмотреть их, вы можете использовать средство просмотра журналов на устройстве и просматривать журналы там. Дополнительная информация: http://www.technomancy.org/android/javascript-debugging/

лучшим решением для перехвата исключений и отображения в консоли является следующий код:

window.onerror = function(msg, uri, line) {
    console.log(msg + uri + line);
}

в Eclipse вы можете добавить крюк к кнопке возврата эмулятора android и проверить значение на лету. Добавьте onBackPressed диспетчер событий и вызовите оттуда консоль javascript. С точки зрения отладки eclipse вы измените значение String переменная к тому, что вы хотите проверить, и передать его в приложение, позвонив super.loadUrl.

смотрите код ниже. Не забудьте включить отладку вашего приложения из DDMS view

public class MyActivity extends DroidGap {
    private String js = "";
    @Override
    public void onBackPressed() {  
        //add a breakpoint to the follow line 
        //and change the value for "js" variable before continuing execution
        super.loadUrl("javascript:console.log(" + js + ")");
        return;
    }
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        super.setBooleanProperty("keepRunning", false);
        super.setIntegerProperty("splashscreen", R.drawable.splash);
        super.loadUrl("file:///android_asset/www/index.html", 20000);
    }
}

Если вы используете Phonegap Build и хотите отлаживать с помощью консоли Chrome, вот рабочее решение. Можно отлаживать WebViews с помощью отладки USB (https://developer.chrome.com/devtools/docs/remote-debugging#debugging-webviews)

во-первых, убедитесь, что ваш виджет тег содержит xmlns: android="http://schemas.android.com/apk/res/android"

<widget 
    xmlns="http://www.w3.org/ns/widgets" 
    xmlns:gap="http://phonegap.com/ns/1.0" 
    xmlns:android="http://schemas.android.com/apk/res/android"
    id="me.app.id" 
    version="1.0.0">

затем добавьте следующий

<gap:config-file platform="android" parent="/manifest">
     <application android:debuggable="true" />
</gap:config-file>

это работает для меня на Nexus 5, Phonegap 3.7.0.

<preference name="phonegap-version" value="3.7.0" />

создайте приложение в сборке Phonegap, установите APK, подключите телефон к USB, включите отладку USB на вашем телефоне, затем посетите chrome://inspect.

источник: https://www.genuitec.com/products/gapdebug/learning-center/configuration/

отладка приложения PhoneGap / Apache Cordova проста с помощью GapDebug

  • скачать и установить GapDebug из https://www.genuitec.com/products/gapdebug/

  • запустите GapDebug на вашем ПК / Mac

  • включить опцию разработчика и отладку USB на вашем устройстве android (настройки - > опция разработчика (ВКЛ.) - > Отладка USB (ВКЛ.))

  • Если Вариант разработчика не найден (Настройки - > О телефоне - > нажмите Номер сборки для 7 раз)

  • вы можете отлаживать приложение от вашего GapDebug

см http://phonegappro.com/tutorials/debugging-phonegap-applications-apache-cordova/ для подробных шагов с изображениями

Phonegap debug все еще существует. тот, о котором я знаю, находится в сборке phonegap, найденной в настройках, и отметьте опцию приложения отладки. Затем он перестроит ваше приложение, когда вы его сохраните. Кнопка отладки появится на странице приложения вместе с параметрами перестроения. (этот сервис также использует встроенный weinre)

другой вариант, который я также нахожу самым быстрым, это jsconsole.com. Свой очень легкий для того чтобы настроить и не требует почти никакой конфигурации сравненной к другим методам отладка, где вам нужно установить много вещей, таких как драйверы и SDK.

внимание!

в PhoneGap 10 когда вы создаете свое приложение и любые запросы вне приложения(как будто нет интернета) терпят неудачу,вам придется добавить это в свою конфигурацию.xml

<gap:plugin name="com.indigoway.cordova.whitelist.whitelistplugin" version="1.1.1" />
<access origin="*" />
<allow-navigation href="*" />
<allow-intent href="*" />

я вытаскивал свои волосы, пытаясь заставить любой инструмент удаленной отладки работать только для того, чтобы узнать, что внешние запросы были заблокированы по умолчанию. это спасло меня.

обновление: в настоящее время PhoneGap называется Apache Cordova, и если вы хотите использовать его для разработки приложений для Android, вам нужно установить Android Studio. Чтобы получить доступ к консоли logcat из Android Studio, откройте свой проект Android (это папка platform/android внутри вашего проекта Cordova) и выберите меню Tools->Android->Android Device Monitor.

Android Device Monitor (AVD) может работать в одиночку, так что вы можете создать прямой доступ, чтобы избежать всего этого пути. AVD автоматически получит журнал сообщения из вашего эмулятора запускаются с помощью Cordova, и это позволяет легко устанавливать фильтры для уменьшения большого количества выходных данных, полученных из эмулятора. Я специально предпочитаю фильтровать по имени приложения.