Ответ 1
tl; dr: В отличие от того, что сказано в документах PGB, вы должны хранить копию файла cordova.js
в корневом каталоге приложения, и этот файл должен взяты из версии 2.0 PhoneGap, так как последняя версия Ripple Emulator не работает ни с другой версией, ни без этого файла.
Решение
Я разрабатываю свои приложения PhoneGap, используя PhoneGap Build, а не локальную среду PhoneGap. Итак - как мне было поручено - я удалил файл phonegap.js
из своего веб-сайта приложения и оставил ссылку на него в index.html
. Это нормально для PhoneGap Build, но для не.
С тех пор, как я вернул этот файл (фактически cordova.js
из lib\android\example\assets\www\
) из phonegap-2.0.0.zip
, мне удалось увидеть лицензию, запустить службы Ripple и проверить локальное приложение PhoneGap.
Уведомление для людей, борющихся с аналогичной проблемой: Текущая версия Ripple Emulator использует Cordova 2.0
. Убедитесь, что вы загружаете правильную версию PhoneGap и берете cordova.js
от нее! Не пытайтесь использовать cordova.js
из более новой версии (в настоящее время 3.0.0
), поскольку вы можете столкнуться с неопределяемыми ситуациями, в том числе увидеть много странных alert()
и даже повредить перегруженный Chrome.
Всегда убедитесь, что вы используете версию JS файла PhoneGap, которая перехватывает ту, которая находится за пульсом.
Шаг за шагом
Основные шаги для тестирования приложения PhoneGap под Windows с использованием эмулятора Chrome и Ripple:
-
Поместите
cordova.js
файл обратно в корневой каталог папки и проверьте ссылку на него. Вы можете взять его из папкиlib\android\example\assets\www\
из любой загружаемой версии PhoneGap (вы должны использоватьphonegap-2.0.0.zip
, хотя, см. Выше). -
Установите расширение
Ripple Emulator
для браузера Chrome, используя Chrome Store. Включите его. -
Запустите свой локальный веб-сервер и запустите свой HTML-код своего мобильного приложения через него (тестирование через прямой доступ к файлам в основном возможно в Ripple Emulator, но крайне нежелательно и может привести к непредсказуемым результатам).
-
Нажмите значок "Эмулятор пульсации", прямо на ваш общий значок Chrome, затем нажмите
Enable
(или выберите подходящую опцию из контекстного меню, щелкнув правой кнопкой мыши). -
Примите лицензионное соглашение и выберите подходящую платформу (
Cordova 2.0.0
). -
Еще раз нажмите значок "Эмулятор пульсации" и нажмите
Start Ripple Services
, если они не запускаются автоматически. -
Установите целевую платформу (устройство) и наслаждайтесь работой приложения PhoneGap локально.
Варианты версий и API
Вам также нужно следить за PhoneGap API и тщательно проверять, что было доступно и как оно было доступно в PhoneGap 2.0.0? Например, с тех пор изменилась простая проверка типа соединения. В 2.9.0 API выполняется через navigator.connection
, а в 2.0 API. он был доступен в интерфейсе navigator.network
.
Так как Ripple Emulator использует PhoneGap 2.0.0, в настоящее время поддерживается способ вызова этого объекта:
var networkState = navigator.connection.type;
не удастся. Вам придется использовать его следующим образом:
var networkState = navigator.network.connection.type;
Хотя вы можете выбрать версию PhoneGap при компиляции в PhoneGap Build (и вы можете заставить ее использовать версию 2.0.0, хотя компилировать этот код без изменений), вы, скорее всего, захотите разработать свое приложение, используя новейшую версию PhoneGap.
В этом случае вы должны использовать "защищенный" подход, который будет работать как в Ripple, так и в PhoneGap:
var networkState = ((navigator.connection) ? navigator.connection.type : ((navigator.network && navigator.network.connection) ? navigator.network.connection.type : 'unknown'));
Или вы можете объявить какую-то специальную переменную:
var debugMode = typeof(window.tinyHippos) !== 'undefined';
И используйте его как переключатель:
var networkState = (debugMode) ? navigator.network.connection.type : navigator.connection.type;
Надеюсь, Ripple скоро будет обновлен до новейшей PhoneGap, чтобы мы могли отказаться от таких вещей.