Как использовать Ripple Emulator для Windows для тестирования приложения PhoneGap?
можно ли использовать Ripple emulator для тестирования приложения PhoneGap под Windows?
либо я делаю что-то очень плохое, либо Ripple вообще не работает в такой среде.
Я установил расширение эмулятора пульсации для Chrome из магазина Chrome. Я перешел в Chrome на свое мобильное приложение (обслуживаемое локально через XAMPP). Я нажал значок пульсации рядом с Chrome omnibar и нажал Enable
В открывшемся окне. Я выбрал правильную платформу (Cordova 2.0
).
мое приложение было перезагружено в мобильном виде, имитирующем мобильное устройство. Ripple не смог прочитать мою конфигурацию из config.xml
файл, но это хорошо известная ошибка (сообщается здесь и здесь). Надеюсь, это не проблема, которая мешает мне использовать Ripple вообще?
Я выбрал свое устройство (Samsung Nexus
) и начать тестировать своего мобильного устройства. Даже первый вызов PhoneGap API не удался. Я попробовал компас, но получил только Cannot call method 'watchHeading' of undefined
.
как базовый объект PhoneGap может быть неопределенным? Что я упускаю? Могу ли я протестировать приложение PhoneGap под Windows в Chrome с помощью эмулятора Ripple или amy, я пропустил всю идею о том, что такое Ripple?
Я попытался помочь себе с документацией пульсации, но глава"включить эмулятор Ripple" - это полная фигня. У меня нет даже признака Start Ripple Services
опция в значке пульсации (только Enable
и Disable
) и когда я нажмите кнопку Enable
нет подписать лицензионное соглашение, которое я могу просмотреть и принять. У меня такое чувство, что этот док говорит о чем-то совершенно другом, чем я использую.
как использовать пульсацию в Chrome для тестирования приложения PhoneGap? Что я упускаю?
2 ответов
tl; dr: вопреки тому, что говорится в документах PGB, вы должны сохранить копию cordova.js
файл в корневом каталоге вашего приложения, и этот файл должен быть взят именно из версии 2.0 PhoneGap, так как последняя версия Ripple Emulator не работает ни с другой версией, ни без этого файла.
решение
я разрабатываю свои приложения PhoneGap с помощью сборки PhoneGap, а не локальной среды PhoneGap. Так-как я был инструкция - я удалил phonegap.js
файл из webroot моего приложения и только оставил ссылку на него в index.html
. Это нормально для сборки PhoneGap, но абсолютно не отлично для эмулятора пульсаций.
С тех пор, как я вернул этот файл (на самом деле cordova.js
С С phonegap-2.0.0.zip
мне удалось увидеть лицензию, запустить службы пульсации и протестировать рабочее приложение PhoneGap локально.
уведомление для людей, борющихся с аналогичной проблемой: текущая версия эмулятор пульсаций использует Cordova 2.0
. Убедитесь, что вы скачиваете правой версии из PhoneGap и забрать cordova.js
от него! Не пытайтесь использовать cordova.js
из новой версии (в настоящее время 3.0.0
), как вы можете столкнуться с необнаруживаемыми ситуациями, в том числе видеть много странных alert()
и даже висит перегруженный хром.
всегда убедитесь, что вы используете версию JS-файла PhoneGap, которая соответствует версии Ripple.
шаг за шаг
ключевые шаги, чтобы иметь возможность тестировать приложение PhoneGap под Windows, используя Chrome и Ripple Emulator:
поставить
cordova.js
файл обратно в корневую папку и проверьте ссылку на него. Вы можете захватить его изlib\android\example\assets\www\
папка из любой загружаемой версии PhoneGap (вы должны использоватьphonegap-2.0.0.zip
хотя, см. выше).установить
Ripple Emulator
расширение для Вашего браузера Chrome, используя Chrome Store. Включить он.запустите локальный веб-сервер и запустите HTML-код своего мобильного приложения через него (тестирование через прямой доступ к файлам в основном возможно в эмуляторе Ripple, но крайне не рекомендуется и может привести к непредсказуемым результатам).
нажмите значок эмулятора Ripple, прямо на вашем Chrome omnibar, а затем нажмите
Enable
(или выберите правильный вариант из контекстного меню, щелкните правой кнопкой мыши страницу).принять лицензионное соглашение и выбрать правильную платформу (
Cordova 2.0.0
).щелкните значок эмулятора пульсаций еще раз и нажмите
Start Ripple Services
если они не запускаются автоматически.установите платформу назначения (устройство) и наслаждайтесь работой приложения PhoneGap локально.
версия и различия API
вы также должны следить за PhoneGap API и тщательно проверьте, что было доступно и как это было доступно в PhoneGap 2.0.0? Например, простая проверка типа соединения изменилась с тех пор. В API-интерфейс 2.9.0 это делается через navigator.connection
, находясь в 2.0.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, чтобы мы могли бросить такой вещи подальше.
Ripple должен работать с последними версиями Phonegap, хотя вы можете получить несколько ложных сообщений об ошибках, которые всплывают во время загрузки страницы, которые из-за пульсации не совсем актуальны с последними версиями Phonegap. Убедитесь, что вы включили Phonegap JS в свою страницу. Попробуйте следующий пример - он отлично работает для меня в Ripple:
<html>
<head>
<script type="text/javascript" charset="utf-8" src="cordova-2.8.0.js"></script>
<script type="text/javascript">
function deviceready() {
console.log("Device ready");
navigator.compass.watchHeading(function(heading){
document.getElementById("heading").innerHTML = heading.trueHeading;
},function(error){
var errorType;
switch(error.code){
case CompassError.COMPASS_NOT_SUPPORTED:
errorType = "Compass not supported";
break;
case CompassError.COMPASS_INTERNAL_ERR:
errorType = "Compass internal error";
break;
default:
errorType = "Unknown compass error";
}
document.getElementById("heading").innerHTML = errorType;
});
}
document.addEventListener("deviceready", deviceready, true);
</script>
</head>
<body>
<h1>Test</h1>
<p>Heading: <span id="heading"></span></p>
</body>
</html>