trabaja tiene tengo telefono son saber que procesador cuantos como celular arquitectura armeabi cordova static-libraries cpu-architecture ios7 xcode5

cordova - tiene - Después de la actualización a Xcode 5-ld: símbolo(s) no encontrados para la arquitectura armv7 o el error del enlazador armv7s



procesador armeabi (7)

Acabo de actualizar mi software iPhone 4S para iOS 7 Beta 2 mientras estaba en el medio de dar los últimos toques a una nueva aplicación (Phonegap) ... ¡no es una buena idea!

Después de hacerlo, Xcode no detectó mi iPhone, así que instalé Xcode 5 beta. Después de retocarlo, finalmente logré detectar mi teléfono. El único problema ahora es que hay un error con la arquitectura utilizada.

Aquí están los errores que se producen:

ld: warning: ignoring file /Users/-----------/Library/Developer/Xcode/DerivedData/testtest-bmnbmujiosugcmgeiceofgcfmsec/Build/Products/Debug-iphoneos/libCordova.a, file was built for archive which is not the architecture being linked (armv7s): /Users/--------/Library/Developer/Xcode/DerivedData/testtest-bmnbmujiosugcmgeiceofgcfmsec/Build/Products/Debug-iphoneos/libCordova.a Undefined symbols for architecture armv7s: "_OBJC_METACLASS_$_CDVCommandDelegateImpl", referenced from: _OBJC_METACLASS_$_MainCommandDelegate in MainViewController.o "_CDVLocalNotification", referenced from: -[AppDelegate application:didReceiveLocalNotification:] in AppDelegate.o "_OBJC_CLASS_$_CDVCommandDelegateImpl", referenced from: _OBJC_CLASS_$_MainCommandDelegate in MainViewController.o "_OBJC_CLASS_$_CDVCommandQueue", referenced from: _OBJC_CLASS_$_MainCommandQueue in MainViewController.o "_OBJC_METACLASS_$_CDVViewController", referenced from: _OBJC_METACLASS_$_MainViewController in MainViewController.o "_OBJC_METACLASS_$_CDVCommandQueue", referenced from: _OBJC_METACLASS_$_MainCommandQueue in MainViewController.o "_CDVPluginHandleOpenURLNotification", referenced from: -[AppDelegate application:handleOpenURL:] in AppDelegate.o "_OBJC_CLASS_$_CDVViewController", referenced from: _OBJC_CLASS_$_MainViewController in MainViewController.o ld: symbol(s) not found for architecture armv7s clang: error: linker command failed with exit code 1 (use -v to see invocation)

¿Alguna idea sobre a qué se debe cambiar la arquitectura para que funcione en mi teléfono? (Funciona bien en el emulador)


En Configuraciones de compilación ...

Strip Debug Symbols During Copy: Debug: No Release: No


Estoy usando Xcode 5 para iOS SDK 7. La solución que funcionó para mí fue simplemente eliminar la arquitectura arm64.

Seleccione el objetivo del proyecto (NO CordovaLib.xcodeproj) y en la configuración de compilación> Arquitecturas válidas, elimine arm64 si está allí en la lista. Aquí está el mío después de eliminar la arquitectura arm64.


He eliminado armv7s de la sección de valid architectures y funcionó para mí.

Configuración de compilación -> Arquitecturas -> Arquitecturas válidas


Porque mi lib.a es solo para armv7

lo que hice fue

Arquitectura activa solamente = sí

buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; "ARCHS[sdk=iphoneos*]" = ( armv7s, armv7, ); "ARCHS[sdk=iphoneos6.*]" = ( armv7s, armv7, ); "ARCHS[sdk=iphoneos7.*]" = ( armv7, armv7s, );

fue construir y archivar bien

Espero eso ayude


Si su proyecto fue construido usando Cordova 2.x y Xcode 4.x, y está recibiendo el error mencionado por el OP, esta solución funcionó para mí. (Estaba experimentando el error con Cordova 2.5 y Xcode 5).

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

Ve a tu proyecto de Córdoba

Carpeta raíz -> CordovaLib -> Clic derecho CordovaLib.xcodeproj -> Mostrar contenido del paquete -> Abrir project.pbxproj

Reemplazar todas las apariciones de (tuve 4)

buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO;//in 2 out of 4 occurrences "ARCHS[sdk=iphoneos*]" = armv7; "ARCHS[sdk=iphoneos6.*]" = ( armv7, armv7s, ); /* other settings here */ };

Con este

buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO;//in 2 out of 4 occurrences "ARCHS[sdk=iphoneos*]" = armv7; "ARCHS[sdk=iphoneos7.*]" = ( armv7, armv7s, ); "ARCHS[sdk=iphoneos6.*]" = ( armv7, armv7s, ); /* other settings here */ };

¡Ahora su proyecto será perfecto!


njtman tenía una respuesta correcta. No tengo el representante para comentar, así que estoy agregando más detalles.

Necesita un iOS 7 SDK para usar las arquitecturas estándar (armv7, armv7s).

Mi proyecto estaba predeterminado en (armv7), sin incluir armv7s.

Para solucionarlo, abra CordovaLib.xcodeproj, en Configuración de compilación (uno de los menús en la fila superior, alineación centrada) En Arquitecturas, Arquitecturas, Depuración y Versión, AGREGUE iOS 7.0 utilizando arquitecturas estándar.


Respuesta corta:

  • Quite Build Build Active Architecture Only (la clave del parámetro de configuración de compilación es ''ONLY_ACTIVE_ARCH'') de todas las configuraciones de compilación de proyectos de sus bibliotecas estáticas o sobreescriba con ''NO'' como en la siguiente captura de pantalla:

Respuesta detallada:

El problema es que su biblioteca estática ''libCordova.a'' que está vinculando en su aplicación principal solo se compila para una arquitectura (armv7, pero no armv7s).

Probablemente haya dejado que Xcode realice todos los cambios recomendados para su proyecto de bibliotecas estáticas sin leer cuáles son realmente estos cambios. Hablando por mi cuenta, nunca me molesté en echar un vistazo más de cerca al diálogo de información (captura de pantalla a continuación), cuando cambié a una nueva versión de Xcode, hasta ahora.

El problema es que la realización de estos cambios activa para las compilaciones de depuración una nueva característica llamada Build Active Architecture Only (la clave del parámetro de configuración de compilación es ''ONLY_ACTIVE_ARCH''). En principio, esta es una mejora muy buena de Xcode, ya que al establecer esto en YES se aceleran los tiempos de construcción, ya que Xcode solo compila la arquitectura del dispositivo conectado que ha seleccionado en la parte superior cuando presiona el botón Ejecutar.

Sin embargo, al aceptar ciegamente este nuevo parámetro en una biblioteca estática, puede encontrarse con este error. El error ocurre cuando construiste la versión de depuración de una biblioteca estática mientras habías conectado un dispositivo armv7, y luego, cuando estás depurando tu aplicación principal, has conectado un dispositivo armv7s (o viceversa). Posteriormente obtendrá el error anterior (o uno similar).

Así que mi recomendación es eliminar por completo el valor a nivel de proyecto para Build Active Architecture Only de todas las configuraciones de compilación de proyectos de tus bibliotecas estáticas. Porque si echas un vistazo al predeterminado de iOS, es NO. Por supuesto, también puede sobrescribir la configuración a ''NO'' para asegurarse de que la configuración sea correcta incluso si en el futuro cambiará el valor predeterminado (consulte la primera captura de pantalla).