2013-07-24 2 views
4

Я использую PhoneGap 2.9.0 и SenchaTouch для разработки приложения для Android (targetSdkVersion 16).deviceready не выстрелил в phonegap 2.9.0 с sencha touch 2

При запуске приложения в Chrome, я получил такие журналы:

Falling back on PROMPT mode since _cordovaNative is missing. Expected for Android 3.2 and lower only. cordova.js:912 
deviceready has not fired after 5 seconds. cordova.js:6725 
Channel not fired: onCordovaConnectionReady cordova.js:6718 
Channel not fired: onCordovaInfoReady cordova.js:6718 

Когда я проверить его в Samsung таблетки (Android 4.1.2), то первая строка исчезнувшие, но 3 события всегда не обжигали ,

Однако, похоже, SenchaTouch работает неплохо: отображения представлений и взаимодействия работают, как я ожидаю.

Вот Зав index.html:

<head> 
    <meta charset="UTF-8"> 
    <title>title</title> 

    <!-- The line below must be kept intact for Sencha Command to build your application --> 
    <script id="microloader" type="text/javascript" src="touch/microloader/development.js"></script> 

    <style type="text/css"> 
     some css here 
    </style> 

    <script type="text/javascript" charset="utf-8" src="pg/cordova.js"></script>  
    <script type="text/javascript" charset="utf-8" src="pg/barcodescanner.js"></script> 

</head> 

Я использую некоторые PhoneGap API, такие как камеры и файлов. Поскольку PhoneGap не получает событие deviceready, API недоступен, поэтому navigator.camera не определен.

Я сделал исследование объятий, но все, что я тестировал, не решает проблему. Любые советы приветствуются Заранее спасибо

+0

Я попытался войти в navigator.camera Ланч функции app.js, она была определена. Однако, когда я назвал его позже, он стал «неопределенным». Мое приложение находится в режиме навигации (я не знаю, если это имеет значение) – panda

ответ

5

Если бы тот же вопрос, но в моем случае это было связано с тем, что я ссылаться плагины в моей config.xml, которые я не инстанцированы в моем приложении.

Просто комментируя их до тех пор, пока я не назову их в своем коде, я сразу же подтвердил, что «Phonegap готов».

благодарности: http://community.phonegap.com/nitobi/topics/deviceready_has_not_fired_after_5_seconds

+0

Можете ли вы подробнее рассказать о своем решении? У меня точно такая проблема, но я не могу понять ваше решение. –

+0

Это довольно старая нить, поэтому я надеюсь, что она по-прежнему используется. Мое предложение состоит в том, чтобы удалить все, кроме исходного плагина, из вашего confix.xml, а затем посмотреть, правильно ли он загружается. Моя ошибка связана с добавлением дополнительных элементов внутри моего xml, но не для их вызова в моем приложении, поэтому кажется, что он застрял, ожидая, что события будут запущены на странице. Можете ли вы поделиться каким-то кодом? – Fraccus

+0

Я решил. Проблема заключалась в том, что PhoneGap.js, включенный дважды микрозагрузчиком Sencha Touch, из-за неправильной конфигурации и документации, неясной в этом аспекте –

0

Я рекомендую вам попробовать с чистым не-сенча HTML, просто проследить, если ошибка АМСВА из сенча или PhoneGap

+0

Не могли бы вы дать дополнительные инструкции? Я не вижу, как настроить «не-sencha» html для тестирования. – panda

+0

Извините, я имел в виду только пример html. Вы попробовали активы, включенные в «пример»? –

+0

пример работает, я получил событие. Я сомневаюсь, что время загрузки Sencha Touch слишком велико. Я попробовал cordova.js перед микрозагрузчиком Сенча: никакого события не было, и у меня был белый экран. – panda

0

Проблема вызвана жестко закодировано временем при загрузке URL-адресов. Этот тайм-аут возникает, потому что размер страницы, созданной Sencha Touch, не может быть рассчитан. К сожалению, я не могу найти ресурсы, которые я использовал для решения этой проблемы в прошлом, поэтому исправьте меня, если я ошибаюсь, но моим решением было создать html-файл с перенаправлением на фактический index.html.

<!DOCTYPE html> 

<!-- Launch the generated index.html file to prevent Cordova/PhoneGap timeouts --> 
<html> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    <title>AppName</title> 
    <script> 
     window.location = './index.html'; 
    </script> 
</head> 
<body></body> 
</html> 
0

Согласно (разделу WebKit) iOS 8 Beta 1 release notes, это известная проблема, Кордова/PhoneGap приложение в настоящее время нарушены из-за ошибки агента пользователя.

Применение этого временного «исправления» разрешило мои проблемы, когда событие «deviceready» не было запущено.

https://stackoverflow.com/a/24069550

0
you need to include cordova plugin before closing of body tag, as follows 
<!doctype html> 
<html> 
    <head> 
    </head> 
    <body> 

     <script src='cordova.js' type='text/javascript'></script> 
     <script src='index.js' type='text/javascript'></script> 
    </body> 
</html> 
Смежные вопросы