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

Phonegap 3.0 Плагины IOS не найдены

Я получаю эту ошибку в XCode:

2013-08-23 14:36:18.284 Tell The DJ[14955:c07] ERROR: Plugin 'Device' not found, or is not a CDVPlugin. Check your plugin mapping in config.xml.
2013-08-23 14:36:18.284 Tell The DJ[14955:c07] -[CDVCommandQueue executePending] [Line 116] FAILED pluginJSON = [
  "Device1096677259",
  "Device",
  "getDeviceInfo",
  [

  ]
]
2013-08-23 14:36:18.285 Tell The DJ[14955:c07] CDVPlugin class CDVConnection (pluginName: NetworkStatus) does not exist.
2013-08-23 14:36:18.285 Tell The DJ[14955:c07] ERROR: Plugin 'NetworkStatus' not found, or is not a CDVPlugin. Check your plugin mapping in config.xml.
2013-08-23 14:36:18.285 Tell The DJ[14955:c07] -[CDVCommandQueue executePending] [Line 116] FAILED pluginJSON = [
  "NetworkStatus1096677260",
  "NetworkStatus",
  "getConnectionInfo",
  [

  ]
]

Я установил Phonegap 3.0 с интерфейсом командной строки и вставлю свои www файлы в папки проекта. Приложение работает нормально, но когда я прихожу к нативным функциям, таким как идентификатор устройства, камера, сетевые подключения, они не работают и получают мне эту ошибку. Но я думаю, что мой config.xml прав?

<?xml version='1.0' encoding='utf-8'?>
<widget id="io.cordova.helloCordova" version="2.0.0" xmlns="http://www.w3.org/ns/widgets">
    <name>Hello Cordova</name>
    <description>
        A sample Apache Cordova application that responds to the deviceready event.
    </description>
    <author email="[email protected]" href="#" onclick="location.href='http://cordova.io'; return false;">
        Apache Cordova Team
    </author>
    <content src="index.html" />
    <feature name="LocalStorage">
        <param name="ios-package" value="CDVLocalStorage" />
    </feature>
    <access origin="http://dev.tellthedj.de" />
    <preference name="KeyboardDisplayRequiresUserAction" value="true" />
    <preference name="SuppressesIncrementalRendering" value="false" />
    <preference name="UIWebViewBounce" value="true" />
    <preference name="TopActivityIndicator" value="gray" />
    <preference name="EnableLocation" value="false" />
    <preference name="EnableViewportScale" value="false" />
    <preference name="AutoHideSplashScreen" value="true" />
    <preference name="ShowSplashScreenSpinner" value="true" />
    <preference name="MediaPlaybackRequiresUserAction" value="false" />
    <preference name="AllowInlineMediaPlayback" value="false" />
    <preference name="OpenAllWhitelistURLsInWebView" value="false" />
    <preference name="BackupWebStorage" value="cloud" />
    <preference name="orientation" value="portrait" />
    <preference name="webviewbounce" value="false" />
    <preference name="prerendered-icon" value="true" />
    <preference name="phonegap-version" value="3.0.0" />
    <preference name="fullscreen" value="false" />
    <preference name="stay-in-webview" value="false" />
    <preference name="android-minSdkVersion" value="7" />
    <preference name="android-installLocation" value="internalOnly" />
    <preference name="target-device" value="universal" />
    <preference name="autohide-splashscreen" value="true" />
    <preference name="load-url-timeout" value="60000" />
    <preference name="show-splashscreen-spinner" value="true" />
    <preference name="show-splash-screen-spinner" value="true" />
    <preference name="allow-inline-media-playback" value="false" />
    <preference name="launch-mode" value="standard" />
    <feature name="Media">
        <param name="ios-package" value="CDVSound" />
    </feature>
    <feature name="Camera">
        <param name="ios-package" value="CDVCamera" />
    </feature>
    <feature name="Console">
        <param name="ios-package" value="CDVLogger" />
    </feature>
    <feature name="Device">
        <param name="ios-package" value="CDVDevice" />
    </feature>
    <feature name="Notification">
        <param name="ios-package" value="CDVNotification" />
    </feature>
    <feature name="File">
        <param name="ios-package" value="CDVFile" />
    </feature>
    <feature name="FileTransfer">
        <param name="ios-package" value="CDVFileTransfer" />
    </feature>
    <feature name="Geolocation">
        <param name="ios-package" value="CDVLocation" />
    </feature>
    <feature name="Capture">
        <param name="ios-package" value="CDVCapture" />
    </feature>
    <feature name="NetworkStatus">
        <param name="ios-package" value="CDVConnection" />
    </feature>
    <feature name="SplashScreen">
        <param name="ios-package" value="CDVSplashScreen" />
    </feature>
    <plugins>
        <plugin name="Device" value="CDVDevice" />
    </plugins>
</widget>
4b9b3361

Ответ 1

Я использовал PhoneGap 3.0/3.1 и удалял локальную папку сборки перед перестройкой (так как мне пришлось копировать значки и прочее во вторичной сборке script). Это сломало мои плагины и произвело это же сообщение об ошибке.

В конце концов я обнаружил, что мне пришлось удалить ./plugins/ios.json при удалении ./platforms/ios, чтобы убедиться, что плагины были перестроены.

Ответ 2

Удаление папки platform/ios не является решением для меня, поскольку все ручные настройки для проекта xcode будут потеряны.

Но есть простой способ:

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

Это решение появилось из другого ответа на переполнение стека, здесь: fooobar.com/questions/181735/...

Другая альтернатива:

В xcode убедитесь, что в исходных файлах плагина установлены настройки "целевого членства": в "Файл-проводник" перейдите в "Плагины" > "CDVDevice.m" и проверьте, есть ли рядом с вашим именем приложения тик рядом с "целевым членством", в правой части окна xcode. Это фактически делает то же самое, что и другое решение, но немного более удобно.

Отсюда: fooobar.com/questions/181739/...

Ответ 3

Я столкнулся с той же проблемой. Я следовал за решением Джеффри Ван Альстина. Это мой script для создания и тестирования приложения iOS, разработанного с помощью Phonegap 3.0/3.1.

#!/bin/bash
echo "Killing xcode..."
kill $(ps aux | grep 'Xcode' | awk '{print $2}')
rm -r platforms/ios
rm plugins/ios.json
phonegap build ios
open platforms/ios/*.xcodeproj

Сохраните его как файл bash, например ios.sh, в ваш рабочий каталог (каталог, содержащий папку www) и запустите ./ios.sh

Ответ 4

Это, кажется, известная проблема для версий 3. *

https://issues.apache.org/jira/browse/CB-4971

вы можете решить эту проблему, обновив Phonegap для выпуска 3.4.

Ответ 6

Я использую Cordova 3.7, и я решил проблему с решением Kobkrit Viriyayudhakorn, НО, конечно, вам нужно использовать

cordova build ios    

вместо

phonegap build ios    

Ответ 7

Я думаю, вам нужно использовать правильный файл config.xml для меня это целевая папка проекта Xcode config.xml, а не платформа www folder

Ответ 8

Я нашел решение, которое сработало для меня. Я использовал с плагином Compass и после добавления плагина я заметил, что файл config.xml(плагин) говорит, что он должен иметь

    <feature name="Compass">
    <param name="ios-package" value="**CDVLocation**" />
</feature>

в то время как ios.json в плагине добавил

        "config.xml": {
        "/*": {
            "<feature name=\"Compass\"><param name=\"ios-package\" value=\"**CDVCompass**\" /></feature>": 1,
            "<feature name=\"Device\"><param name=\"ios-package\" value=\"CDVDevice\" /></feature>": 1
        }

Один из них относится к CDVCompass, а другой CDVLocation... изменение xml на CDVCompass сделал трюк, и теперь приложение работает.

Ответ 9

Я так устал от удаления и повторного добавления платформ для проблем с плагинами! Кажется, что это еще проблема (2014/10), где, если вы добавляете плагины в приложение после добавления платформ, плагин когда-то не распространяется до соответствующих папок платформы и т.д. Обратите внимание, что это, в основном, влияет на iOS - не на Android.

Я думаю, что мое решение - это просто обновленный способ делать то же самое, что и bjunix, опубликованное ранее, но в XCode 6 для исправления такого рода вещей без удаления/повторного добавления моей платформы I:

  • Разверните папку "Мои приложения/Плагины" в левой панели навигатора проекта.
  • Нажмите на каждый файл плагина в списке, который в настоящее время находится в красном тексте (по одному)
  • Перейдите в панель "Утилиты" справа и щелкните значок папки в разделе "Идентификация и тип", чтобы связать его с фактическим файлом (см. снимок экрана ниже).

После выполнения вышеописанного проекта, наконец, создается.

enter image description here

Ответ 10

Когда это происходит, кажется, что пакет xpm npm, ответственный за внесение изменений в файл pbxproj, иногда оставляет ссылки на файлы плагинов, которые были удалены. Я не отслеживал, в каких именно обстоятельствах это происходит, но, похоже, это происходит из частых операций удаления/добавления плагинов (например, для обновления плагина).

Я подозреваю, что, когда плагин удаляется и пакет xpm npm завершается с ошибкой при его задании, он может удалять ссылки на файлы плагина из секции PBXBuildFile, но не имеет других разделов, оставляя pbxproj в разбитом состоянии.

Когда пакет xpm npm пытается снова добавить ссылки на файл плагина, он сначала проверяет, находятся ли ссылки уже в pbxproj. Он просматривается в разделе PBXFileReference, и поскольку он находит ссылки на плагин там, прерывает дальнейшую обработку, не получая нас нигде.

Мое решение, хотя и рушится, когда дело доходит до него, заключается в том, чтобы заставить пакет xpm code npm вместо этого проверить секцию PBXBuildFile. В этом разделе будут отсутствовать ссылки и, в свою очередь, плагин будет правильно установлен.

Измените pbxFileReferenceSection на pbxBuildFileSection в этой строке: https://github.com/alunny/node-xcode/blob/master/lib/pbxProject.js#L620

Переустановите свои плагины, и вам должно быть хорошо идти.

Ответ 11

В моем случае После установки плагина Paypal я столкнулся с проблемой.

Я разрешил его добавить "PayPalMobileCordovaPlugin.m" в источник компиляции.

Так что вам просто нужно добавить файл .m в файл компиляции, добавьте его для меня.

Проверить снимок экрана Снимок экрана после добавления файла .m

Надеемся на его работу для вас

Ответ 12

Это также может произойти, если у вас есть плагин, на который ссылаются, но не установлен. Если вы пробовали вышеуказанные решения и не можете найти файл с плагином .M, он может быть, что плагин на самом деле не установлен.

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

Ответ 13

Я решил эту проблему, изменив запись "plugin" на запись "feature" в файле config.xml. (используя PhoneGap 3.1/iOS). Вот как выглядело это исправление:

<feature name="DGGeofencing">
    <param name="ios-package" value="DGGeofencing"/>
</feature>

Ответ 14

Я решил эту проблему с полной переустановкой Node.js и Phonegap с помощью инструмента CLI