Как использовать 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:

  1. поставить cordova.js файл обратно в корневую папку и проверьте ссылку на него. Вы можете захватить его из lib\android\example\assets\www\ папка из любой загружаемой версии PhoneGap (вы должны использовать phonegap-2.0.0.zip хотя, см. выше).

  2. установить Ripple Emulator расширение для Вашего браузера Chrome, используя Chrome Store. Включить он.

  3. запустите локальный веб-сервер и запустите HTML-код своего мобильного приложения через него (тестирование через прямой доступ к файлам в основном возможно в эмуляторе Ripple, но крайне не рекомендуется и может привести к непредсказуемым результатам).

  4. нажмите значок эмулятора Ripple, прямо на вашем Chrome omnibar, а затем нажмите Enable (или выберите правильный вариант из контекстного меню, щелкните правой кнопкой мыши страницу).

  5. принять лицензионное соглашение и выбрать правильную платформу (Cordova 2.0.0).

  6. щелкните значок эмулятора пульсаций еще раз и нажмите Start Ripple Services если они не запускаются автоматически.

  7. установите платформу назначения (устройство) и наслаждайтесь работой приложения 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>