window.phonegap не определен после успешной сборки phonegap

Это мой первый опыт создания чего-то с помощью phonegap, angularjs, ionic, yoman и grunt. Приложение отлично работает для Интернета, но я пытаюсь создать его через телефонную связь. Шаги, которые я предпринимаю, следующие:

$sudo grunt build

Это строит все нормально, и ответ:

Done, without errors.

Execution Time (2014-09-14 19:07:13 UTC)
concurrent:dist    3m 31.6s  _________________________________ 35%
autoprefixer:dist   2m 9.1s  ____________________ 22%
concat:generated   2m 26.4s  _______________________ 24%
ngmin:dist         1m 24.3s  _____________ 14%
cdnify:dist             14s  ___ 2%
uglify:generated       8.8s  __ 1%
Total 10m 0.4s

Далее я запускаю:

$ phonegap remote build android

[phonegap] compressing the app...
[phonegap] uploading the app...
[phonegap] building the app...
[phonegap] Android build complete

Оттуда я загружаю .apk и открываю его на своем телефоне Android.

Проблема в том, что phonegap где-то не инициализирован, а window.phonegap не определено.

Вот код для отслеживания window.phonegap в app.js:

var PhoneGapInit = function () {
  this.boot = function () {
    angular.bootstrap(document, ['mobileAppApp']);
  };
  if (window.phonegap !== undefined) {
    document.addEventListener('deviceready', function() {
     this.boot();
    });
  } else {
    alert('PhoneGap not found, booting Angular manually');
    this.boot();
  }
};

angular.element(document).ready(function() {
  new PhoneGapInit();
});

Насколько я знаю, в index.html я инициализировал его с помощью

<!-- build:js(.) scripts/vendor.js -->
<script src="phonegap.js"></script>

Какую важную информацию я упускаю? Я могу включить соответствующие файлы config.xml и Gruntfile.js, если их попросят. Заранее спасибо!


person robert    schedule 14.09.2014    source источник


Ответы (1)


Сегодня я столкнулся с похожей проблемой. В моем проекте было две проблемы.

1) Прежде всего: мне пришлось переместить phonegap.js за пределы блока <!-- build:js(.) scripts/vendor.js -->, иначе задача сборки grunt объединит все эти файлы и заменит их ссылкой на vendor.js. Но phonegap.js будет добавлен только в процессе сборки Phonegap, но тогда в вашем HTML не будет никаких ссылок.

2) Вы, вероятно, используете недавнюю (> 3.0) версию phonegap. Прицел был переименован в кордову. Измените свой код на

if (window.cordova !== undefined) {
document.addEventListener('deviceready', function() {
 this.boot();
});

3) НЕОБЯЗАТЕЛЬНО: вы можете изменить ссылку с phonegap.js на cordova.js. PhoneGap Build вставляет в файлы (phonegap.js и cordova.js), а phonegap.js можно считать устаревшим и удалить в будущей версии, но оба файла содержат один и тот же код.

Это решило проблему для меня.

person madmuffin    schedule 04.11.2014
comment
Вы джентльмен и ученый, сэр! У нас было приложение, созданное в течение 2 месяцев без инициализации телефонной связи :). Это сработало отлично. - person robert; 10.11.2014