para - iOS no puede encontrar complementos, Android está bien
remix os linux (4)
A iOS le faltaban los archivos del complemento (archivos .m y .h), que deben copiarse llamando a cordova prepare
o phonegap prepare
. No muy bien documentado, parece.
Estoy construyendo una aplicación en Phonegap / Cordova. La aplicación es bastante simple en este momento, pero requiere que el estado de la red y los complementos de geolocalización funcionen.
Hasta ahora he desarrollado la aplicación (está compuesta de solo unas pocas páginas HTML básicas y un poco de JS en este momento) en Android y ha funcionado bien.
Esta mañana decidí asegurarme de que todo estaba bien con iOS. Para nada sorprendente, no lo es.
Entonces ... parece ser un problema con los complementos. XCode escupe lo siguiente:
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
]
]
Supongo que esto significa que no puede cargar el plugin Geolocation. Obtengo algo similar para el complemento de conexión de red.
A continuación se muestra mi config.xml truncado del proyecto 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>
También intenté usar las ID como el nombre de la función (por ejemplo, org.apache.cordova.geolocation), pero tengo el mismo problema. El mismo error exacto de hecho.
Todo funciona perfectamente en Android; en el simulador, en Chrome en mi mac y en un dispositivo.
Estoy usando las siguientes versiones:
- Phonegap 3.1.0-0.15.0
- XCode 5.0
- OSX 10.8.5
- iOS 6.1.3 (iPod Touch)
- Simulador de iOS para iOS 7
Los archivos correctos están en la carpeta / www / plugins / en el proyecto:
- org.apache.cordova.geolocation
- www
- Coordinates.js
- Position.js
- PositionError.js
- geolocation.js
- www
- org.apache.cordova.network-information
- www
- Connection.js
- network.js
- www
Un abrazo eufórico para cualquiera que pueda ayudar con esto. He analizado las otras preguntas pero sin suerte.
En mi caso, tampoco pude encontrar el archivo Plugin_name.m en el directorio de complementos, así que agregué manualmente el archivo Plugin_name.m en las fases de compilación (puede encontrar el archivo Plugin_name.m en la carpeta plugin-> src-> ios) y luego copie el nombre de la función del complemento del archivo ios.json (que está presente en la carpeta cordova-builds) y agréguelo al archivo config.xml (eliminar barras diagonales inversas). El complemento funcionará bien.
Nota: - Puede que tenga que agregar todos los archivos en las fases de compilación que se incluyen en el archivo plugin_name.m.
La solución de Mark funciona pero es innecesaria y hará que pierda personalizaciones en su proyecto XCode.
Lo que lo solucionó fue:
En XCode, vaya a Crear Fases -> abra el menú desplegable Fuentes compiladas. Haga clic en + y agregue el archivo .m del complemento faltante que debería estar en su directorio de complementos (pero falta en las fuentes compiladas).
Para buscadores futuros: la solución que funcionó para mí provino de otra respuesta de desbordamiento de pila, aquí: https://.com/a/19501579/1245276
En resumen: 1. borre ./plugins/ios.json, 2. luego elimine ./platforms/ios, 3. luego ejecute cordova platform add ios
4. luego cordova build
. Eliminar ios.json ayuda a obligarlo a recompilar los complementos, al menos eso es lo que entiendo y funcionó para mí.