Ответ 1
В iOS отсутствовали файлы самих плагинов (файлы .m и .h), которые необходимо скопировать, вызывая cordova prepare
или phonegap prepare
. Не очень хорошо документировано, что кажется.
Я создаю приложение в 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 и на устройстве.
Я использую следующие версии:
Правильные файлы находятся в папке/www/plugins/в проекте:
Приподнятое объятие для тех, кто может помочь с этим. Я прошел через другие вопросы, но не повезло.
В iOS отсутствовали файлы самих плагинов (файлы .m и .h), которые необходимо скопировать, вызывая cordova prepare
или phonegap prepare
. Не очень хорошо документировано, что кажется.
Решение Mark работает, но не является необходимым и приведет к потере настроек для вашего проекта XCode.
Для меня это было исправлено:
В XCode, перейдите в "Фазы построения" → откройте раскрывающееся меню "Скомпилированные источники". Нажмите + и добавьте отсутствующий файл плагина .m, который должен находиться в вашем каталоге плагинов (но отсутствует в скомпилированных источниках).
Для будущих поисковиков решение, которое сработало для меня, произошло из другого ответа, здесь: fooobar.com/questions/181732/...
Вкратце:
1. delete./plugins/ios.json,
2. затем удалите. /platforms/ios,
3. затем запустите cordova platform add ios
4. тогда cordova build
.
Удаление ios.json помогает заставить его перекомпилировать плагины, по крайней мере, это то, что я понимаю, и это сработало для меня.
В моем случае я также не смог найти файл Plugin_name.m в каталоге плагинов, поэтому я вручную добавил файл Plugin_name.m в фазах сборки (вы можете найти файл Plugin_name.m в плагине- > src- > ios), а затем скопируйте имя функции плагина из файла ios.json(который находится в папке cordova-builds) и добавьте его в файл config.xml(удалите обратные слэши). Плагин будет работать нормально.
Примечание. - Возможно, вам придется добавить все файлы в фазах сборки, которые включены в файл plugin_name.m.