"Advertencia: las aplicaciones de iPhone deben incluir una arquitectura armv6" incluso con el conjunto de configuración de compilación

332

Ha pasado un tiempo desde que tuve que ajustar la configuración de construcción del proyecto. Después de actualizar a un SDK reciente, tengo problemas para crear mi configuración de distribución ad hoc.

Build genera esta advertencia y error:

advertencia: las aplicaciones de iPhone deben incluir una arquitectura armv6 (ARCHS actual = "armv7")

iPhone / iPod Touch: a la aplicación ejecutable le falta una arquitectura requerida. Al menos una de las siguientes arquitecturas debe estar presente: armv6 (-19033)

Sin embargo, en mi proyecto pensé que tenía las cosas configuradas correctamente:

  • Arquitecturas es: Estándar (armv6 armv7)
  • Base SDK: iOS más reciente (actualmente configurado en iOS 4.2)
  • Arquitecturas válidas: armv6 armv7

texto alternativo

He limpiado todos los objetivos.

Agradezco cualquier consejo.

Mella
fuente
¡La mía era una aplicación antigua que recibió una actualización, y arroja el mismo error para iOS Deployment Target <4.3 también! Entonces, mi solución fue eliminar todas las referencias a armv6 y establecer esto en> = 4.3. Funcionó.
Henrik Erlandsson
Y justo ahora probé lo mismo para otra aplicación antigua que obtuvo una revisión y no funcionó ... XCode 5, parece que lee mal la Configuración de compilación.
Henrik Erlandsson

Respuestas:

418

Si usa Xcode 4.2 o superior, intente lo siguiente:

  1. Haga clic en el nombre del Proyecto (en la columna izquierda), seguido del Destino:

    ingrese la descripción de la imagen aquí

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

    ingrese la descripción de la imagen aquí

  3. Haga clic en la fila 'Versión' o 'Distribución' en 'Arquitecturas' y elija 'Otro ...':

    ingrese la descripción de la imagen aquí

  4. Haga doble clic en la fila resaltada llamada '$ (ARCHS_STANDARD_32_BIT)' en el popover que aparece, y reemplácela escribiendo 'armv6'. Luego agregue una nueva fila con el botón más en la parte inferior izquierda del menú emergente, escriba 'armv7', luego haga clic en Listo:

    ingrese la descripción de la imagen aquí

Actualización: también debe agregar armv7s para apuntar al iPhone 5. (Y suelte armv6 si está compilando con Xcode 4.5 o superior, que ya no es compatible con armv6).

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

Si todavía no funciona, vea esta respuesta de justinxreese , que sugiere agregar entradas para armv6 y armv7 en "Capacidades requeridas del dispositivo" en su archivo info.plist.

Mella
fuente
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
77
No tengo una fila de distribución en arquitectura, en su lugar tengo la fila "Release". no sé cómo hacerlo
OMGPOP
2
@ Let'sSpotIt Simplemente 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
2
Gracias Nick Además, los nuevos proyectos creados en Xcode 4.2 pueden necesitar cambiar su archivo info.plist para admitir dispositivos armv6. Vea mi respuesta adicional a continuación.
MattyG
1
@ Nick, gracias por el consejo, y para mí tuve que seleccionar el "Proyecto" en lugar de "Destino". seleccionar de la configuración de compilación "Destino" no funcionó para mí. de todos modos gracias de nuevo por la ayuda.
Prasad De Zoysa
62

Si desmarca "Construir solo arquitectura activa", generará 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 versiones posteriores.

Brian
fuente
11
Puede acelerar sus tiempos de compilación configurando SÍ para compilaciones de depuración y No en compilaciones de lanzamiento.
Billy Gray
59

Tuve este problema incluso después de seguir la respuesta aceptada y encontré que lo siguiente funcionaba:

En su Info.plist, agregue una entrada para las Capacidades requeridas del dispositivo. Esto debería ser una matriz y tendrá dos entradas.

  • Artículo 0: armv6
  • Artículo 1: armv7

Se verá así:

Entrada requerida de capacidades del dispositivo

justinxreese
fuente
Esta solución solucionó mis otras advertencias de arquitectura, pero todavía recibo la inicial, y también tengo "Construir arquitectura activa solamente" en "No"
Dan F
lo arregló para mí, ya que la solución anterior no se aplicaba. Por alguna razón, armv6 ya no se muestra en mi configuración de arquitectura de construcción: S
seeafish
Esto junto con la respuesta de Nick anterior lo arregló para mí. +1
Saurabh Wadhwa
Debe eliminar esta opción en las versiones más recientes de xCode, luego se compilará. Cuando coloque ambos, requerirá que ambas arquitecturas sean válidas en su dispositivo, lo que es prácticamente imposible
Artem
Para construir con XCode 4.5+, tendrá que eliminar armv6 de las capacidades requeridas del dispositivo.
Pulkit Goyal
26

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

ingrese la descripción de la imagen aquí

Elimine armv7 de las 'Capacidades requeridas del dispositivo' en suProjectName-Info.plist

MattyG
fuente
21

Una actualización de ios 6

Cambios en Xcode 4.5.x para ios 6

  1. Xcode 4.5.x (y posterior) no admite la generación de binarios armv6.
  2. Ahora incluye soporte para iPhone 5 / armv7s.
  3. El objetivo mínimo de implementación compatible con Xcode 4.5.xo posterior es iOS 4.3.
Animesh
fuente
6

Yo tuve este problema también. Acabo de establecer mi objetivo de implementación en 4.3 y dejé solo la arquitectura armv7 y funcionó. En el punto, casi todos tienen 5, entonces 4.3 está bien.

Tom Kincaid
fuente
3

Para mí no funciona con cada respuesta. pero trato de OBJETIVOS> Arquitecturas> Depurar y agrego una nueva fila con el botón más, y escribo 'armv6' (sin '), luego hago clic en Listo.

y finalmente CMD + B y luego haga clic derecho en PrjectName.app (en la carpeta Productos)> Abrir en Finder> Comprima "PROJECT_NAME.APP" (en Debug-iphoneos)> Cargar en AppStore

ingrese la descripción de la imagen aquí

Es mi configuración de pantalla. ingrese la descripción de la imagen aquí

si tiene un proyecto de inclusión, configúrelo todo. Espero tu ayuda.

mr.octobor
fuente
1
Además, tuve que configurar armv6 en Release Architecture antes de que funcionara.
mph
3

Después de probar una mezcla de estas respuestas, finalmente me topé haciendo que funcionara. Estoy tan enojado con Apple en este momento. Solo una hora más me hicieron perder. Aquí está mi configuración.

ingrese la descripción de la imagen aquí

Louie
fuente
2

Intenté todas las respuestas anteriores, ninguna resolvió mi pregunta. Entonces creo un nuevo proyecto y difundo las configuraciones de compilación una por una. Solo los "Archivos de permisos alternativos" son diferentes. La construcción del proyecto fallida tiene un valor armv7. Eliminarlo y luego limpiar-> construir-> archivo. ¡Tener éxito! La esperanza puede resolver tu pregunta

mbo
fuente
2

Wow, actualizo / envío aplicaciones aproximadamente cada 6 meses. Cada vez que hago esto tengo que aprender la "nueva" forma de hacerlo ...

Los mismos problemas descritos 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 no fue un placer. Cuando configuré "compilar arquitectura activa solamente" en No, recibí un error de compilación al colocar ambos objetos en el mismo directorio.

Afortunadamente, noté que 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 compilació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

Brent
fuente
2

Tenía que asegurarme de cambiar estas configuraciones en las configuraciones de Target y Project en xCode 4.3.2 después de hacer eso y configurarlo para construir 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 limpieza, compilación y archivo.

pwbrewer
fuente
0

Todo un problema doloroso para mí también. Acabo de pasar aproximadamente una hora tratando de construir y reconstruir, no es una alegría. Al final tuve que hacer esto:

  1. Actualice el SDK base a la última versión (en mi caso, iOS 5)
  2. Reiniciar xCode
  3. Limpiar y construir
  4. ¡Funcionó!

Supongo que es un montón de jerga sobre arm6, arm7, ya que parecía que mi proyecto era válido para ambos, al menos la configuración parecía decirlo), supongo que esta es una forma cínica de engañarnos con los tecnicismos, que no tenemos No lo entiendo, así que solo tomamos la opción fácil y apuntamos al último iOS (bueno para Apple con más personas actualizadas) ...

dijipiji
fuente
0

Aquí está la documentación de Apple:

Preguntas y respuestas técnicas QA1760

Dice que hay dos cosas que debes hacer bien:

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

Si esto aún no lo ayuda, verifique 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 "Archivo" en la lista de la izquierda y verifique la Configuración de compilación. Cambie el valor si no fue lo que esperaba.

Rolf Staflin
fuente
0

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

Sí, inserto PhoneGap; se actualizan con mucha frecuencia, y tengo menos de dos meses para saber que una característica se deprecia.

James Perih
fuente
0

Intente cambiar su objetivo de implementación 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 configurar esto 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 el Navegador de proyectos, con todos los archivos enumerados en ella. Haga clic en el que está más arriba que tiene un icono azul

(ii) Si planea utilizar el circuito de línea de sombreador programable, al que se accede y se controla a través de la API de OpenGL ES 2.0, debe configurar su "Versión de implementación" en aproximadamente 4.3, que creo que solo está disponible en dispositivos como el 3GS o más reciente. xCode informa que se necesita iOS 4.2.5 o superior ejecute el 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

Marc Clint Dion
fuente
0

Si xCode sigue quejándose de armv7, asegúrese de desconectar cualquier dispositivo conectado (¡especialmente el iPhone 5!) E intente nuevamente. Me tomó horas descubrir esa pequeña información.

refaelio
fuente
0

Usando Xcode 4.2 en Snow Leopard, utilicé las siguientes configuraciones para crear una aplicación que funcionó tanto en armv6 (Iphone 3G y versiones anteriores) como en armv7 (todo más nuevo que 3G, incluido 3GS).

arquitecturas: armv6 y armv7 (eliminado $ (ARCHS_STANDARD_32_BIT)) solo
construyen arquitectura activa: no se
requieren capacidades de dispositivo: armv6

no ponga armv7 en las capacidades requeridas del dispositivo si desea que la aplicación se ejecute en 3G y versiones inferiores también.

noromamai
fuente
1
Es lo único que funcionó para mí. pruebas 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 armv7, la aplicación no se cargó / ejecutó en el iphone3g
noromamai
Al dejar la entrada armv7 en "Capacidades de dispositivo requeridas", Xcode me prohibió ejecutar en iPhone 3G.
tinsukE