Подтвердить что ты не робот

Как использовать Ripple Emulator для Windows для тестирования приложения PhoneGap?

Можно ли использовать эмулятор Ripple для тестирования приложения PhoneGap под Windows?

Либо я делаю что-то очень плохое, либо Ripple не работает вообще в такой среде.

Я установил расширение Ripple Emulator для Chrome из магазина Chrome. Я перешел на Chrome в мое мобильное приложение (обслуживается локально через XAMPP). Я щелкнул значок Ripple рядом с Chrome omnibar и нажал Enable в открывшемся окне. Я выбрал подходящую платформу (Cordova 2.0).

Мое приложение было перезагружено в мобильном режиме, имитируя мобильное устройство. Ripple не смог прочитать мою конфигурацию из файла config.xml, но это хорошо известная ошибка (сообщено здесь и здесь). Надеюсь, это не проблема, которая мешает мне использовать Ripple?

Я выбрал свое устройство (Samsung Nexus) и начал тестировать свое мобильное устройство. Даже первый вызов PhoneGap API завершился неудачно. Я пробовал компас, но все, что у меня было, было Cannot call method 'watchHeading' of undefined.

Как может базовый объект PhoneGap быть undefined? Что мне не хватает? Могу ли я тестировать приложение PhoneGap под Windows в Chrome с эмулятором Ripple или amy, я пропустил всю идею о том, что такое Ripple?

Я попытался помочь себе в документации Ripple, но глава "" Включить эмулятор Ripple" - это полный мусор. У меня нет знака опции Start Ripple Services в значке Ripple (только Enable и Disable), и когда я нажимаю Enable, никаких признаков лицензионного соглашения нет, я мог бы просмотреть и принять. У меня возникает ощущение, что этот документ говорит о чем-то совершенно другом, чем я использую.

Как использовать Ripple в Chrome для тестирования приложения PhoneGap? Что мне не хватает?

4b9b3361

Ответ 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, чтобы мы могли отказаться от таких вещей.

Ответ 2

Ripple должен работать с последними версиями Phonegap, хотя вы можете получить несколько ложных сообщений об ошибках, которые появляются во время загрузки страницы, из-за того, что Ripple не совсем обновляется с последними версиями 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>