Complementos Phonegap 3.0 IOS no encontrados

Recibo este error en 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", [ ] ] 

Instalé Phonegap 3.0 con la interfaz de command-line y pegué mis files www en las carpetas del proyecto. La aplicación funciona bien, pero cuando llego a funciones nativas como ID de dispositivo, camera, conexiones de networking, falla y me da este error. Pero creo que mi config.xml está en lo cierto?

 <?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="dev@cordova.apache.org" href="http://cordova.io"> 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="prerendenetworking-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> 

Estaba usando PhoneGap 3.0 / 3.1 y estaba eliminando la carpeta de construcción local antes de rebuild (ya que tuve que copyr íconos y cosas en un script de compilation secundario). Esto rompió mis complementos y produjo este mismo post de error.

Al final, descubrí que tenía que eliminar ./plugins/ios.json al quitar ./platforms/ios para asegurarme de que los complementos se reconstruyeran.

Eliminar la carpeta de plataforms / ios no es una solución para mí, ya que se perderán todas las personalizaciones manuales del proyecto xcode.

Pero hay una forma simple:

En XCode, goto Build Phases -> abrir el menu desplegable Compiled Sources. Haga clic en + y agregue el file .m del complemento faltante que debería estar en su directory de complementos (pero falta en las fonts comstackdas).

Esta solución provino de otra respuesta de desbordamiento de stack, aquí: https://stackoverflow.com/a/21148428/80254

Otra alternativa:

En xcode, asegúrese de que los files fuente del complemento tengan la configuration de 'membresía de destino': En File-Explorer, vaya a Complementos> CDVDevice.m y compruebe si hay una marca al lado del nombre de su aplicación en "membrecía de destino" a la derecha lado de la window xcode. Esto realmente hace lo mismo que la otra solución, pero es un poco más conveniente.

Desde aquí: https://stackoverflow.com/a/20576744/80254

Me encontré con el mismo problema. He seguido la solución dada por Jeffrey Van Alstine. Esta es mi secuencia de commands para crear y probar una aplicación de iOS desarrollada con 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 

ios.sh como un file bash, por ejemplo, ios.sh en su directory de trabajo (directory que contiene la carpeta www ) y ejecute ./ios.sh

Esto parece ser un problema conocido para las versiones 3. *

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

puede resolver esto actualizando Phonegap a la versión 3.4.

Intenta volver a instalar el complemento:

complemento local de phonegap agregar https://git-wip-us.apache.org/repos/asf/cordova-plugin-device.git

Uso Cordova 3.7 y resolví el problema con la solución de Kobkrit Viriyayudhakorn, PERO, por supuesto, debes usar

 cordova build ios 

en lugar de

 phonegap build ios 

Creo que necesitas usar el config.xml correcto para mí, es la carpeta de destino del proyecto Xcode config.xml y no la carpeta de la plataforma www

Encontré una solución que funcionó para mí. Estaba usando el complemento Compass y, después de agregar el complemento, he notado que config.xml (plugin docs) dice que debería tener

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

mientras que el ios.json en el complemento ha agregado

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

Uno de ellos se refiere a CDVCompass mientras que el otro CDVLocation … cambiando el xml a CDVCompass hizo el truco y ahora la aplicación está funcionando.

¡Estoy tan cansado de eliminar y volver a agregar plataforms para problemas de complementos! Parece que sigue siendo un problema, incluso ahora (2014/10), donde si agrega complementos a una aplicación después de agregar plataforms, el complemento alguna vez no se propaga a las carpetas de la plataforma correspondiente / etc. Tenga en count que esto parece afectar principalmente a iOS, no a Android.

Creo que mi solución es solo un método actualizado para hacer lo mismo que bjunix publicó anteriormente, pero en XCode 6 para arreglar este tipo de cosas sin quitar / volver a agregar mi plataforma, yo:

  • Expande mi carpeta App / Plugins en el panel del browser del proyecto izquierdo
  • Haga clic en cada file de complemento en la list que está actualmente en rojo (de una en uno)
  • Salta al panel derecho (Utilidades) y haz clic en el ícono de la carpeta en la sección Identidad y Tipo para volver a vincularlo al file real (ver la captura de pantalla a continuación).

Después de hacer lo anterior, mi proyecto finalmente se construye.

introduzca la descripción de la imagen aquí

Cuando esto sucede, parece que el package xcode npm responsable de realizar cambios en el file pbxproj a veces deja references a files de complementos que se han eliminado. No he rastreado en qué circunstancias exactas esto ocurre, pero parece suceder a partir de las operaciones frecuentes para eliminar / agregar complementos (para actualizar un complemento, por ejemplo).

Sospecho que cuando se quita un plugin y el package xcode npm falla en su trabajo, solo puede eliminar las references de file de plugin de la sección PBXBuildFile pero no otras secciones, dejando el pbxproj en estado roto.

Cuando el package xcode npm intenta agregar nuevamente las references del file del complemento, primero comtesting si las references ya están en pbxproj. Aparece en la sección Referencia de reference de PBX y, dado que encuentra references al complemento allí, cancela el procesamiento posterior, sin llegar a ninguna parte.

Mi solución, aunque sea un truco cuando se trata de esto, es forzar el package xcode npm para verificar la sección PBXBuildFile en su lugar. A esa sección le faltan las references y, a su vez, el complemento se volverá a instalar correctamente.

Cambie pbxFileReferenceSection a pbxBuildFileSection en esta línea: https://github.com/alunny/node-xcode/blob/master/lib/pbxProject.js#L620

Vuelva a instalar sus complementos y debería estar listo para hacerlo.

Yo, mi caso Después de instalar el complemento de Paypal, me enfrento a un problema.

Resolví agregar "PayPalMobileCordovaPlugin.m" en Compile Source.

Por lo tanto, solo tiene que agregar el file .m en Compile source add que funciona para mí.

Compruebe la captura de pantalla. Captura de pantalla después de agregar archivo .m

Espero que sea tu trabajo para ti

Esto también puede suceder si tiene un complemento al que se hace reference pero no está instalado. Si ha probado las soluciones anteriores y no puede encontrar el file .m del complemento mencionado, podría ser que el complemento no esté realmente instalado.

Revisaría su directory de complementos para asegurarse de que hay files en él. De lo contrario, vuelva a instalar el complemento. Me encontré con esto cuando tuve un error tipográfico en el git repo al restaurar complementos desde config.xml.

Resolví este problema cambiando la input de "complemento" a una input de "característica" en config.xml. (usando PhoneGap 3.1 / iOS). Esto es lo que parecía la solución:

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

Resolví este problema con la reinstallation completa de Node.js y Phonegap a través de la herramienta CLI