Cordova iOS Plugins fallan después de la construcción, a less que elimine la plataforma y el complemento JSON primero

Tengo un proyecto Cordova 3.2.0, y estoy probando con el emulador XCode y un iPhone 4S por USB.

Cuando ejecuto lo siguiente, la aplicación se ejecuta sin error:

rm -rf platforms/ios rm plugins/ios.json cordova platforms add ios cordova build ios 

Si luego hago cualquier tipo de cambio a mi código y vuelvo a ejecutar:

 cordova build ios 

Recibo los siguientes errores al iniciar la aplicación en XCode:

ERROR: el complemento 'StatusBar' no se encuentra o no es un CDVPlugin. Comtesting tu asignación de complementos en config.xml. 2013-12-02 10: 50: 26.136 treemedia [774: 60b] – [CDVCommandQueue executePending] [Línea 127] FAILED pluginJSON = ["INVALID", "StatusBar", "_ready", []]

ERROR: el 'Dispositivo' de complemento no se encuentra o no es un CDVPlugin. Comtesting tu asignación de complementos en config.xml. 2013-12-02 10: 50: 26.140 treemedia [774: 60b] – [CDVCommandQueue executePending] [Línea 127] FAILED pluginJSON = ["Device1738472658", "Device", "getDeviceInfo", []]

ERROR: El complemento 'NetworkStatus' no se encuentra o no es un CDVPlugin. Comtesting tu asignación de complementos en config.xml. 2013-12-02 10: 50: 26.143 treemedia [774: 60b] – [CDVCommandQueue executePending] [Línea 127] FAILED pluginJSON = ["NetworkStatus1738472659", "NetworkStatus", "getConnectionInfo", []]

Para ejecutar la aplicación sin errores, debo eliminar la plataforma y el file json del complemento, luego volver a agregar la plataforma ios y rebuild. Si omito esos pasos y simplemente reconstruyo, estos errores ocurren cada vez.

Esto solo ha comenzado desde que se actualizó Phonegap / Cordova a 3.2.0 desde una versión ligeramente anterior.

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

Parece que he resuelto esto modificando el file config.xml que existe en el subdirectory "www" del proyecto.

Con una compilation limpia desde cero, Cordova parece generar el file config.xml en "plataforms / ios" con las tags de function de complemento (tal vez infiriendo su uso a partir de la presencia de los propios files de complemento), pero en la reconstrucción, se pierden.

Al tenerlos explícitamente definidos en la ruta www / config.xml, las reconstrucciones funcionan bien.

Una solución muy sencilla que funcionó para mí: la versión CLI de Cordova para versiones anteriores a la versión anterior que no borra ios.json durante la compilation.

Mi caso: la versión CLI fue 5.4.1, se actualizó a 6.3.1 – falló. Reducido a 6.2.0 – OK

Una desventaja es que debe probar manualmente las versiones de CLI.