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

IOS не может найти плагины, Android отлично

Я создаю приложение в Phonegap/Cordova. На данный момент приложение довольно простое, но для работы требуется статус сетевого и плагинов геолокации.

Я разработал приложение до сих пор (он состоял всего из нескольких базовых HTML-страниц и немного JS на данный момент) на Android, и он отлично работает.

Сегодня утром я решил убедиться, что все в порядке с iOS. Совершенно не удивительно, что это не так.

Итак... похоже, проблема с плагинами. XCode выплевывает следующее:

CDVPlugin class CDVLocation (pluginName: Geolocation) does not exist.
2013-10-18 11:24:29.437 Eye Cab[589:907] ERROR: Plugin 'Geolocation' not found, or is not a CDVPlugin. Check your plugin mapping in config.xml.
2013-10-18 11:24:29.438 Eye Cab[589:907] -[CDVCommandQueue executePending] [Line 117] FAILED pluginJSON = [
  "Geolocation1841912763",
  "Geolocation",
  "getLocation",
  [
    false,
    0
  ]
]

Я предполагаю, что это означает, что он не может загрузить плагин Geolocation. Я получаю подобное для плагина сетевого подключения.

Ниже мой усеченный config.xml из проекта Phonegap:

<feature name="http://api.phonegap.com/1.0/device" />
<feature name="Geolocation">
    <param name="ios-package" value="CDVLocation" />
</feature>
<feature name="NetworkStatus">
    <param name="ios-package" value="CDVConnection" />
</feature>

Я также попытался использовать идентификаторы в качестве имени функции (например, org.apache.cordova.geolocation), но получить ту же проблему. Точно такая же ошибка.

Все отлично работает в Android; в симуляторе, в Chrome на моем Mac и на устройстве.

Я использую следующие версии:

  • Phonegap 3.1.0-0.15.0
  • XCode 5.0
  • OSX 10.8.5
  • iOS 6.1.3 (iPod Touch)
  • iOS Simulator для iOS 7

Правильные файлы находятся в папке/www/plugins/в проекте:

  • org.apache.cordova.geolocation
    • WWW
      • Coordinates.js
      • Position.js
      • PositionError.js
      • geolocation.js
  • org.apache.cordova.network-информация
    • WWW
      • Connection.js
      • network.js

Приподнятое объятие для тех, кто может помочь с этим. Я прошел через другие вопросы, но не повезло.

4b9b3361

Ответ 1

В iOS отсутствовали файлы самих плагинов (файлы .m и .h), которые необходимо скопировать, вызывая cordova prepare или phonegap prepare. Не очень хорошо документировано, что кажется.

Ответ 2

Решение Mark работает, но не является необходимым и приведет к потере настроек для вашего проекта XCode.

Для меня это было исправлено:

В XCode, перейдите в "Фазы построения" → откройте раскрывающееся меню "Скомпилированные источники". Нажмите + и добавьте отсутствующий файл плагина .m, который должен находиться в вашем каталоге плагинов (но отсутствует в скомпилированных источниках).

Ответ 3

Для будущих поисковиков решение, которое сработало для меня, произошло из другого ответа, здесь: fooobar.com/questions/181732/...

Вкратце: 1. delete./plugins/ios.json, 2. затем удалите. /platforms/ios, 3. затем запустите cordova platform add ios 4. тогда cordova build. Удаление ios.json помогает заставить его перекомпилировать плагины, по крайней мере, это то, что я понимаю, и это сработало для меня.

Ответ 4

В моем случае я также не смог найти файл Plugin_name.m в каталоге плагинов, поэтому я вручную добавил файл Plugin_name.m в фазах сборки (вы можете найти файл Plugin_name.m в плагине- > src- > ios), а затем скопируйте имя функции плагина из файла ios.json(который находится в папке cordova-builds) и добавьте его в файл config.xml(удалите обратные слэши). Плагин будет работать нормально.

Примечание. - Возможно, вам придется добавить все файлы в фазах сборки, которые включены в файл plugin_name.m.