Ayer (10/3/14), cuando se lanzó iOS 7.1, también actualicé a Xcode 5.1 y descubrí que mi proyecto PhoneGap / Cordova ya no se compilaría en mi iPhone 5s. También actualicé Cordova a la versión más reciente: v 3.4.0-0.1.3.
He leído muchas soluciones diferentes sobre SO que se relacionan tanto con el cambio de arquitecturas activas y la construcción de solo arquitecturas activas, y ninguna de ellas funciona. Así que esto es lo que he intentado y los errores que obtengo. Inicialmente recibí el error:
missing required architecture arm64 in file <long file path omitted> libCordova.a
Undefined symbols for architecture arm64
Así que intenté lo siguiente. Seleccioné el subproyecto CordovaLib en mi proyecto, y tanto en el proyecto como en el destino, fui a Build Settings en Architectures y me aseguré de que arm64
no estuviera incluido en ninguna de las arquitecturas Debug o Release. En este momento, Build Active Architecture Only está configurado en "Sí". Eso resultó en el siguiente error:
file was built for archive which is not the architecture being linked (armv7):
<long file path omitted> libCordova.a
Undefined symbols for architecture armv7
Al configurar Build Active Architecture Only en "No", el error vuelve a ser:
missing required architecture arm64 in file <long file path omitted> libCordova.a
Undefined symbols for architecture arm64
No estoy seguro de qué más probar. La configuración de la arquitectura del proyecto solo incluye la clave "Base SDK" que está configurada para iOS 7.1. El destino del proyecto no tiene configuraciones de arquitecturas. De todos modos, estoy bastante seguro de que el problema radica en el subproyecto incrustado CordovaLib. ¿Qué puedo hacer para que esto se compile correctamente en mi dispositivo?
Actualización: el mismo problema en Jira de Apache: https://issues.apache.org/jira/browse/CB-6223
Respuestas:
@Shazron publicó la solución en Apache JIRA; señala que la solución se lanzará como parte de Cordova 3.5:
Aquí hay un enlace a la descripción completa de Shazron sobre este problema: http://shazronatadobe.wordpress.com/2014/03/12/xcode-5-1-and-cordova-ios/
Ahora está disponible y la versión corta de qué hacer es:
Cordova CLI 3.4.1-0.1.0 está disponible, que incluye Cordova iOS 3.4.1, que incorpora todas las correcciones mencionadas en esta publicación de blog. Actualice su CLI de Cordova y, si tiene un proyecto existente, realice una "actualización de la plataforma cordova ios".
fuente
Otro enfoque que funciona:
fuente
Downgrade Xcode 5.1 a 5.0.2 funcionó para mí, no podía esperar a una versión oficial de Cordova 3.5 con la solución.
Puede obtener una copia de la versión anterior aquí: https://developer.apple.com/downloads/index.action
fuente
Acaban de lanzar una nueva versión 3.4.1 que aborda estos problemas.
Por lo tanto, actualizo un solo archivo para apuntar a la ETIQUETA 3.4.1:
/usr/local/lib/node_modules/cordova/platforms.js
línea 24 desde:
version: '3.4.0'
a:
version: '3.4.1'
Luego eliminas la carpeta de iOS en tu proyecto y ejecutas:
cordova platform add ios
Esto descargará la nueva plantilla basada en 3.4.1 con todos los parches.
fuente
Siga las instrucciones de este video: https://www.youtube.com/watch?v=EIkJAKcz8DE
Simplemente agregue arm64 en sus proyectos arquitecturas válidas y elimine toda la arquitectura condicional del proyecto de Cordova.
fuente
Pude hacer que mi aplicación se compilara en XCode 5.1 compilando primero el proyecto CordovaLib por separado desde XCode y luego compilando mi proyecto.
fuente
Solo tiene que agregar la arquitectura arm64 en cada declaración y configuración de edificio, es decir, en su proyecto actual y en el proyecto cordova.
En tu proyecto:
en Córdoba:
Y LO MAS IMPORTANTE
-Arquitecturas válidas en cordova build settings
Esta configuración genera muchas advertencias, pero solo cambia "% d" por "% ld" en todas las líneas que dice la advertencia.
fuente
¡Toma el ícono de xcode y arrástralo a la papelera!
Vaya aquí https://developer.apple.com/downloads/index.action?name=Xcode y descargue 5.0.2 e instálelo.
Después de la instalación, ejecute xcode, luego pruebe el emulador desde la terminal.
¡Funcionó para mí, aunque molesto!
fuente