Trabajando en un nuevo proyecto realizado con Ionic versión 3 «Gestor de atletas«, me he encontrado con un problema complejo. Digo complejo ya que he estado buscando información en muchos sitios y en cada uno de ellos se indicaba una solución diferente. Es por ello, que he decidido crear esta entrada y agrupar todas las soluciones que han ido ayudando a otros desarrolladores. Seguro que este artículo a más de uno le viene genial.
Índice
Información.
Ionic:
ionic (Ionic CLI) : 4.5.0 (/usr/local/lib/node_modules/ionic)
Ionic Framework : ionic-angular 3.9.2
@ionic/app-scripts : 3.2.1Cordova:
cordova (Cordova CLI) : 8.1.2 (cordova-lib@8.1.1)
Cordova Platforms : android 7.1.4, ios 4.5.5
Cordova Plugins : cordova-plugin-ionic-keyboard 2.1.3, cordova-plugin-ionic-webview 2.3.1, (and 12 other plugins)System:
NodeJS : v11.2.0 (/usr/local/bin/node)
npm : 6.4.1
OS : macOS High Sierra
Si nos encontramos con el mensaje en consola: [ERROR] An error occurred while running subprocess cordova, es recomendable realizar las siguientes comprobaciones respetando su orden:
Actualizar la plataforma iOS o Android.
ionic platform update ios
ionic platform update android
Simular con run o build la aplicación.
ionic cordova build ios --release
ionic cordova run ios --release
ionic cordova build android --release
ionic cordova build android --release
Si llegados a este punto nos seguimos encontrando con el mensaje en consola [ERROR] An error occurred while running subprocess cordova por favor, sigue leyendo.
Eliminando y creando de nuevo los directorios de plataforma.
ionic cordova rm android
ionic cordova add android --nofetch
ionic cordova rm ios
ionic cordova add ios --nofetch
Reinstalando Cordova.
npmuninstall -g cordova
npm install -g cordova
En mi caso y volviendo al principio, el error parecía estar claro. Necesitaba xCode para poder simular la aplicación.
Instalando xCode.
Poco que decir aquí, vamos a la app store, buscamos y descargamos xCode para desarrolladores. El icono tiene este aspecto.
Comprobando xcode en el sistema operativo.
Si volvemos a nuestra ventana de comandos y ejecutamos de nuevo «ionic info», vemos que en esta ocasión xCode ya forma parte de nuestro sistema operativo.
Una vez comprobado esto, volvemos a lanzar el siguiente comando…
ionic cordova run ios
En mi caso, ahora no me lanza ningún error, pero veo algo que no me convence, se trata de esta línea:
/Users/mac/WWW/Desarrollos/Ionic v3/gestor-de-atletas/platforms/ios/build/emulator/MyApp.app/Info.plist file not found.
Analizando proyectos Ionic v3 con –verbose
Si queremos que por consola se nos detalle al máximo cual es el problema que tenemos, debemos añadir en la línea a ejecutar –verbose. Quedando algo como esto:
ionic cordova run ios --verbose
Resumiendo mucho, este ha sido el resultado…
Ejecutemos entonces esas 3 líneas, todo sigue igual. Leyendo en por stackoverflow, algunos desarrolladores tuvieron que actualizar su versión de cordova a versiones anteriores para solucionar el problema, pero realmente, no creo que esto sea la mejor de las prácticas. Sigamos…
Error: Cannot find module ios/cordova/Api.js’.
Nos encontramos en un momento que parece estar cerca de la solución a la incidencia. Ahora cuando lanzamos la aplicación, en consola se pinta Error: Cannot find module ios/cordova/Api.js’
Al parecer, esto está relacionado con la herramienta cocoapods, ya que es necesaria para que todo funcione correctamente.
Instalando cocoapods phonegap-plugin-push.
Para instalar cocoapods, primero necesitamos desinstalar el plugin the push, vamos a ello…
ionic cordova plugin remove phonegap-plugin-push
Ahora procedemos con la instalación de cocoapods.
sudo gem install cocoapods
El siguiente paso es realizar la sincronización.
pod setup
Y finalmente, volvemos a instalar el plugin de pushh.
ionic plugin add phonegap-plugin-push --variable SENDER_ID="XXXXXXX"
Ahora, podemos lanzar la aplicación con una de estas 2 líneas.
Solución :: ionic cordova emulate ios -l — –buildFlag=»-UseModernBuildSystem=0″
Solución ::
ionic cordova run ios –target=»iPhone-8″ — –buildFlag=»-UseModernBuildSystem=0″
