2010-11-16 16 views
325

Ha pasado un tiempo desde que tuve que ajustar la configuración de compilación del proyecto. Después de actualizar a un SDK reciente, tengo problemas para crear mi configuración de distribución ad hoc."Advertencia: las aplicaciones de iPhone deben incluir una arquitectura armv6" incluso con el conjunto de configuración de compilación

Construir genera esta advertencia y error:

warning: iPhone apps should include an armv6 architecture (current ARCHS = "armv7")

iPhone/iPod Touch: application executable is missing a required architecture. At least one of the following architecture(s) must be present: armv6 (-19033)

Sin embargo, en mi proyecto pensé que había puesto las cosas correctamente:

  • Arquitecturas es: Estándar (ARMv7 ARMv6) SDK
  • Base: Último iOS (actualmente configurado para iOS 4.2)
  • Arquitecturas válidas: armv6 armv7

alt text

He limpiado todos los objetivos.

Agradezco cualquier consejo.

+0

¡La mina era una aplicación antigua que recibió una actualización y arroja el mismo error para iOS Deployment Target <4.3 también! Así que mi solución fue eliminar todas las referencias a armv6 y establecer esto en> = 4.3. Funcionó. –

+0

Y hace un momento probé lo mismo con otra aplicación anterior que obtuvo una nueva versión y no funcionó ... Problema de XCode 5, parece que daña la Configuración de compilación. –

Respuesta

417

Si usando Xcode 4.2 o superior, pruebe lo siguiente:

  1. Haga clic en el nombre del proyecto (en la columna izquierda), seguido por el de destino:

    enter image description here

  2. Haga clic en la 'Configuración de creación' pestaña (en la columna de la derecha):

    enter image description here

  3. Haga clic en la 'liberación' o fila 'Distribución' bajo 'Arquitecturas', y seleccione 'Otro ...':

    enter image description here

  4. Haga doble clic en la fila resaltada llamada '$ (ARCHS_STANDARD_32_BIT)' en el popover que aparece y reemplácela escribiendo 'armv6'.A continuación, añadir una nueva fila con el botón más en la parte inferior izquierda de la popover, y el tipo 'ARMv7', a continuación, haga clic en Hecho:

    enter image description here

Actualización: se debe añadir armv7s para apuntar el iPhone 5 también. (Y soltar armv6 si compila con Xcode 4.5 o superior, que ya no es compatible con armv6).

Eso es todo. Ahora debería poder construir/archivar sin generar errores.

Si todavía no funciona, consulte this answer from justinxreese, que sugiere agregar entradas para armv6 y armv7 bajo "Capacidades requeridas del dispositivo" en su archivo info.plist.

+3

Sí, parece que Apple se está alejando de ARM6, por lo que este parece ser un paso necesario para Xcode 4.2. Es extraño que el proceso de envío aún requiera una compilación ARM6, a pesar de que 4.2 ahora es público ... – Jasarien

+7

No tengo una fila de distribución en arquitectura, en su lugar tengo una fila de "Liberar". no sé cómo hacerlo – OMGPOP

+2

@ Let'sSpotIt Solo agregue armv6 y armv7 a su fila Release. El proyecto en mis capturas de pantalla se importó de una versión anterior de Xcode, de ahí los diferentes nombres de Arquitectura. – Nick

62

Si desmarca "Crear arquitectura activa solamente", construirá todas las arquitecturas válidas.

Actualización: Esto ya no es aplicable a partir de Xcode 4 - siga las instrucciones de Nick para Xcode 4 y posterior.

+11

Puede acelerar sus tiempos de compilación estableciendo en SÍ para compilaciones de depuración y compilaciones de No en versión. –

+0

esto no funcionó para mí, pero la publicación de Nick hizo –

59

he tenido este problema incluso después de seguir la respuesta aceptada y se encontró lo siguiente para trabajar:

En su Info.plist, añada una entrada para las capacidades del dispositivo necesario. Esto debería ser una matriz y tendrá dos entradas.

  • artículo 0: ARMv6
  • Punto 1: ARMv7

Se parece a esto:

Required device capabilities entry

+0

Esta solución corrigió mis otras advertencias de arquitectura, pero sigo recibiendo la inicial, y también tengo "Build Active Architecture Only" establecido en "No" –

+3

No funciona para mí, o bien – Aluminum

+0

me lo arregló, ya que la solución anterior no se aplicaba. Por alguna razón, armv6 ya no se muestra en la configuración de mi arquitectura de compilación: S – seeafish

26

Además de la respuesta de Nick sobre Xcode 4.2, es posible que también necesite revisar su archivo info.plist. Parece como si los nuevos proyectos comenzaran en Xcode 4.2 por defecto, especifique 'armv7' en 'Capacidades requeridas del dispositivo'. Tendrá que eliminar esto si desea admitir dispositivos que ejecuten armv6 (por ejemplo, el iPhone 3G).

enter image description here

Eliminar ARMv7 de las capacidades de los dispositivos obligatorios '' en YourProjectName-Info.plist

3

para mí que no funciona con cada respuesta. pero pruebo TARGETS> Architectures> Debug y agrego una nueva fila con el botón más, y escribo 'armv6' (sin out), luego hago clic en Done.

y finalmente CMD + B y haga clic derecho en PrjectName.app (en la carpeta de productos)> Abrir en Finder> Comprimir "PROJECT_NAME.APP" (en debug-iPhoneOS)> Cargar en AppStore

enter image description here

es mi configuración de pantalla. enter image description here

si tiene incluir proyecto, configúrelo todo. Espero tu ayuda.

+1

Además tuve que configurar armv6 en Release Architecture antes de que funcionara. – mikeh

3

Después de probar una combinación de estas respuestas, finalmente tropecé con hacerlo funcionar. Estoy tan enojado con Apple en este momento. Solo una hora más, me hicieron perder. Aquí está mi configuración.

enter image description here

0

El uso de Xcode 4.2 en Snow Leopard, he utilizado la siguiente configuración para construir una aplicación que trabajó en ambos ARMv6 (Iphone 3G e inferior) Y ARMv7 (todo lo más nuevo que 3G 3GS incluidos).

architectures: armv6 and armv7 (removed $(ARCHS_STANDARD_32_BIT))
build active architecture only: no
required device capabilities: armv6

no coloque armv7 en las capacidades del dispositivo requerido si desea que la aplicación se ejecute en 3G y también inferior.

+0

Esto es completamente incorrecto. – Till

+1

es lo único que funcionó para mí. probando en iphone4, iphone3g, ipad1, ipad2. leí que tenía que poner armv6 Y armv7 en las capacidades requeridas del dispositivo, pero tan pronto como puse en armv7, la aplicación no cargaría/ejecutaría en el iphone3g – noromamai

+0

Al dejar la entrada armv7 en "Capabilidades requeridas del dispositivo", Xcode me prohibió corriendo en iPhone 3G. – tinsukE

2

Intenté todas las respuestas anteriores, ninguna resolvió mi pregunta. Así que creo un nuevo proyecto y diferencio las configuraciones de construcción una a una. Solo "Archivos de permisos alternativos" es diferente. La compilación del proyecto no tiene un valor armv7. Eliminarlo y luego limpiar-> compilar-> archivar. ¡Tener éxito! Espero que pueda resolver su pregunta

0

También es un doloroso problema para mí. Acabo de pasar una hora tratando de construir y reconstruir, no hay alegría.Al final he tenido que hacer esto:

  1. actualizar el SDK de base hasta el último (en mi caso iOS 5)
  2. Reiniciar xCode
  3. Limpio & Build
  4. funcionó!

supongo que es un montón de jerga sobre ARM6, ARM7 ya que parecía que mi proyecto era válido para los dos, al menos la configuración parecían decir algo así), yo creo que es esta es una manera cínica de engañarnos con los tecnicismos, que no entendemos, así que simplemente tomamos la opción fácil y apuntemos a los últimos iOS (bueno para Apple con más personas actualizadas) ...

2

Wow, actualizo/enviar aplicaciones cada 6 meses Cada vez que hago esto tengo que aprender la forma "nueva" para hacerlo ...

mismos problemas que el descrito anteriormente cuando se ejecuta iOS 5.1, y Xcode 4.3.2

Gracias por los mensajes! Pasé un tiempo actualizando todas las configuraciones del proyecto a armv6, armv7, pero sin alegría. Cuando configuré "construir arquitectura activa solamente" en No, obtuve un error de compilación sobre poner ambos objetos en el mismo directorio.

Afortunadamente, noté que ustedes estaban modificando la configuración de compilación de destino. Esto es lo que finalmente funcionó (armv6, armv7 y establecer "construir arquitectura activa solamente" en No en la configuración de creación de destino). Como descargo de responsabilidad, ya había configurado todas las arquitecturas en armv6, armv7 en la configuración del proyecto también.

De todos modos, gracias por la ayuda, Brent

0

Aquí está la documentación de Apple:

Technical Q&A QA1760

Se dice que hay dos cosas que usted debe hacerlo bien:

  1. Agregar armv6 a la configuración de compilación de Arquitectura
  2. Establezca Build Active Architecture Only en No.

Si esto aún no lo ayuda, compruebe que realmente está cambiando la configuración de compilación de la arquitectura para la configuración de compilación correcta - Perdí media hora jugando con la incorrecta y preguntándome por qué no funcionó ...

Seleccione Edit Scheme... en el menú Producto, haga clic en el esquema "Archivar" en la lista de la izquierda y verifique la Configuración de compilación. Cambie el valor si no fue lo que esperaba.

2

Tenía que asegurarme de cambiar estas configuraciones tanto en la configuración de Objetivo como en la de Proyecto en xCode 4.3.2 después de hacer eso y configurarlo para armar tanto para armv6 como para armv7 en todos los lugares donde pude enviar mi aplicación.

Para una medida segura también salí de xCode entre hacer los cambios y hacer un ciclo de compilación limpio y de archivo.

0

Intente cambiar su destino de despliegue a algo más alto que un procesador armv6. La configuración de xCode hace referencia al nivel del sistema operativo, por ejemplo: iOS versión # {3.1, 3.2, 4.0, 4.1, 4.2, 4.3, 5.0, 5.1}

(i) Puede configurarlo en la pestaña de configuración de compilación o en la pestaña de resumen. Comience en la parte superior izquierda de la ventana en Project Navigator, con todos los archivos enumerados en él. Haga clic en el más alto que tiene un icono azul.

(ii) Si planea utilizar el circuito de sombreado programable, al que se accede y controla a través de OpenGL ES 2.0 API, debe configurar su "Versión de implementación" en 4.3, que creo que solo está disponible en dispositivos como el 3GS o más nuevo. xCode informa que iOS 4.2.5 o superior es necesario ejecutar código armv7. Y una vez más, este procesador, creo, comenzó con el 3GS. * IOS 4.3 parece ser la opción para mí, por ahora.

http://theiphonewiki.com/wiki/index.php?title=Armv7

http://en.wikipedia.org/wiki/List_of_iOS_devices

0

Nota; Tenía que realizar estos pasos tanto para mi proyecto base como para el archivo PhoneGap .xcodeproj incorporado en mi aplicación.

Sí, incrustó PhoneGap; se actualizan con mucha frecuencia, y tengo menos de dos meses para saber que una característica se ha depreciado.

21

un IOS 6 actualización

Cambios en Xcode 4.5.x para ios 6

  1. 4.5.x Xcode (y más tarde) no admite la generación de binarios ARMv6.
  2. Ahora incluye compatibilidad con iPhone 5/armv7s.
  3. El mínimo objetivo de implementación compatible con Xcode 4.5.xo posterior es iOS 4.3.
6

Tuve este problema también. Acabo de configurar mi objetivo de implementación en 4.3 y dejé solo la arquitectura de armv7 y funcionó. En el punto, casi todos tienen 5, así que 4.3 está bien.

0

Si xCode sigue quejándose de armv7, asegúrese de desconectar cualquier dispositivo de conexión (especialmente iPhone 5 !!) y vuelva a intentarlo. Me tomó horas encontrar esa pequeña información.

Cuestiones relacionadas