2013-08-14 3 views
4

У меня есть приложение phongap с плагином sqlite, который работает как в Android, так и в iphone. Когда я пытаюсь запустить его в Ripple, я получаю несколько ошибок в зависимости от включения версии cordova и устройства, которое я использую. Ни один из них не работает вообще. В некоторых комментариях в stackoverflow я видел, как люди, работающие с sqlite в телефоне, дрожали.Как запустить приложение PhoneGap с Sqlite в Ripple?

Я использую плагин PG-SQLitePlugin-Android в своем проекте, который он фактически поддерживает только Phonegap 2.7.0+.

Я обнаружил, что я могу заставить Ripple использовать 2.7.0, называя его:

файл: // локальный/Users/----/----/----/WWW /index.html?enableripple=cordova-2.7.0

Ripple действительно загружает большой после включения доступа к файловой системе через хром.

Когда я включать Cordova-2.7.0.js в моем сценарии

index.html хлопает меня выскакивало со следующим текстом:

gap:["Device","getDeviceInfo","Device119187522"]

, что я могу принять или отменить , затем появляется еще два диалога, если я принимаю его, его повесили.

консоль JS показывает, что Cordova 2.7.0 действительно работает:

Falling back on PROMPT mode since _cordovaNative is missing. Expected for Android 3.2 and lower only. cordova-2.7.0.js:906

deviceready не уволили

Когда я включать Cordova-2.9.0.js в моем сценарии

Это происходит так же, как 2.7

Falling back on PROMPT mode since _cordovaNative is missing. Expected for Android 3.2 and lower only. cordova-2.7.0.js:906

, но на этот раз я получаю это другие ошибки

Failed to load resource file://localhost/Users/laullobetpayas/-------/---/------/www/cordova/cordova_plugins.json Failed to load resource file://localhost/Users/-------/---/------/www/cordova/cordova_plugins.js

deviceready не обстреляли

Когда я не включают cordova.js в моем сценарии

SQLitePlugin.js:31 Uncaught ReferenceError: cordova is not defined SQLitePlugin.js:34

  • Am I используя правильный плагин?
  • , который является версией кордоры/устройства tu с плагином и пульсацией?
  • Должен ли я включить cordova.js в моем проекте

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

ответ

6

Плагины Phonegap не будут работать с Ripple, потому что идея плагина Phonegap заключается в том, что он обеспечивает интерфейс Javascript для выполнения собственного кода. Это означает, что в случае Android Javascript будет ссылаться на собственный Java-код, а в случае iOS Javascript будет ссылаться на собственный Objective-C.

Пульсация полностью основана на Javascript, поэтому часть Javascript плагина не имеет ничего общего с интерфейсом.

В случае SQLitePlugin, например, вызов SQLitePlugin.close() результатов вызова:

cordova.exec(null, null, "SQLitePlugin", "close", [this.dbname]); 

где SQLitePlugin это имя родного класса и close является родным именем функции.

Если вы хотите использовать один и тот же API хранения на Android, iOS и Пульсация, возможно, рассмотрите возможность использования lawnchair с соответствующими адаптерами.

Что касается проблем с Ripple и Phonegap 2.7.0/2.9.0, Ripple не совсем догнал Phonegap, поэтому вы получите эти всплывающие окна и сообщения об ошибках в консоли, но это не остановит ваше приложение Phonegap (без встроенных плагинов) в Ripple. Вы можете убедиться в этом с помощью простого теста, как:

document.addEventListener("deviceready", function(){ 
    alert("I'm alive"); 
}); 

Но ответ, да, вам необходимо включить cordova.js для того, чтобы работать на всех в Ripple.

2

Cordova-SQLitePlugin является заменой для HTML5 SQL API, поэтому при запуске внутри Ripple вам не нужно вызывать слой Cordova, вы можете просто заменить вызовы sqlitePlugin.openDatabase() с помощью window.openDatabase() , Я еще не тестировал это с помощью Ripple, но он должен работать. Существуют некоторые ограничения размера базы данных, но это, вероятно, все, что вам нужно для тестирования.

Там several ways, чтобы проверить, если ваша внутри Кордова. Вы можете создать прокладку для метода openDatabase() на основе тестирования Кордовы при запуске приложения.

+0

Второго путь работал для меня в Ripple. Другие способы не подходят для эмуляторов. – Avital

0

Поскольку ваша основная цель - сделать быстрое тестирование SQLite с помощью Cordova (а не специально использовать Ripple), я хотел бы предложить новую альтернативу использованию Ripple.

Я написал приложение для звонков Sencha Touch Live, которое можно использовать для быстрой разработки приложений Cordova/HTML5, позволяя вам редактировать и отлаживать код HTML/JS/CSS на своем мобильном устройстве просто путем обновления файлов на вашем компьютере разработки - поэтому вы можете пропустить большую часть времени перекомпилирования/повторного развертывания/перезапуска времени отладчика. У этого есть много других интересных особенностей. Я использую это сам для SQLite приложения тестирования вместо Ripple или Weinre

Он основан на коде от компании Adobe PhoneGap Developer App так основной код хорошо испытанный. Он был тщательно адаптирован и настроен для платформы Sench Touch, хотя он также должен работать на jQuery Mobile или любой фреймворк, который помещает код HTML5 под папку phonegap/www или cordova/www. Просто запустите сервер в папке проекта PhoneGap или Cordova.

Для тестирования вашей логики SQL и контроллера я рекомендую использовать эмулятор Geny Motion с версией Android 4.4.x KitKat. Запустите последнюю версию Chrome на рабочем столе, и как только вы получите свое приложение, работающее над эмулятором или реальным устройством, откройте chrome://inspect, и теперь вы можете использовать полный отладчик Chrome в приложении удаленного устройства. Вы также можете использовать последнюю версию Safari для тестирования симулятора OSX/iPhone.

Вы можете посмотреть демо здесь (начинается с отметки 5 минут). Да! Она нуждается в более полированное видео с меньшим количеством эха-сигналами, но вы получите идею:

Смежные вопросы