2011-11-30 9 views
14

Tengo una aplicación de iPhone que se debe ejecutar tanto en armv7 como en armv6. Para la depuración, la aplicación también debe ejecutarse en el simulador.

el estándar en Xcode 4.2 es la siguiente:

ARMv7 ($(ARCHS_STANDARD_32_BIT))

No está claro para mí lo que $(ARCHS_STANDARD_32_BIT) representa y si debería usar los dos:

  1. $ (ARCHS_STANDARD_32_BIT)
  2. ARMv6

o las tres cosas como esta

  1. ARMv6
  2. ARMv7
  3. i386

¿Cuál es la mejor opción para esto en mi caso? ¿Y cómo funciona Architectures con Valid Architectures

+0

Ahora puedo compilarlo para armv6 cuando uso 'armv6' y' armv7' como 'arquitectura' (sin' i386'). Por lo tanto, actualmente no estoy usando el '$ (ARCHS_STANDARD_32_BIT)' – Besi

+4

$ (ARCHS_STANDARD_32_BIT) se define en la plantilla predeterminada de Xcode, que no puede modificar, aunque puede anularla haciendo su propia configuración.Solía ​​definirse como "armv6 arv7" pero lo cambiaron en 4.2 a solo "armv7". Pude restablecer el comportamiento anterior simplemente usando su primera técnica, pero solo en objetivos que usan el SDK de iOS (debe hacer clic en el pequeño botón "(+)" en la configuración de compilación para agregar líneas para el simulador SDK iOS vs. y solo cambiarlo para iOS). –

+0

¿Alguien sabe qué dispositivos iOS requieren armv6? ¿Es principalmente solo el iPod Touch 3G como se menciona en el comentario a continuación? – mpontillo

Respuesta

16

Para ejecutar en el simulador no tiene que hacer nada.

se puede dejar el ajuste de Valid Architectures en armv6 armv7, ya que, según los documentos:

Durante la construcción, esta lista se cruzó con el valor de ARCHS la estructura Ajuste

Para apoyar armv6 y armv7, establezca las arquitecturas en $(ARCHS_STANDARD_32_BIT) armv6, $ (ARCHS_STANDARD_32_BIT) actualmente se expande a armv7.

También compruebe si hay un "Requerimientos de capacidades del dispositivo" = UIRequiredDeviceCapabilities configurando en su archivo plist, ya que Xcode agregará armv7 para nuevos proyectos allí.

+0

que tiene sentido completo. Por algún motivo, aún desconocido, Xcode comenzó a quejarse con [BEROR] Sin arquitecturas para compilar (ARCHS = armv6, VALID_ARCHS = i386). Eso fue solo para la construcción del simulador. Agregar i386 a la lista de arquitecturas válidas causó un error diferente "gcc exit code 255". Entonces, tu respuesta es genial. Puse $ (ARCHS_STANDARD_32_BIT) que cubre el simulador y armv7, y agregué otra línea de armv6 específicamente para iPod Touch 3G de 8GB. –

+0

Tuve exactamente el mismo problema que @MaxMacLeod y esto lo solucionó: ARCHS se configuró en $ (ARCHS_STANDARD_32_BIT) pero VALID_ARCHS en armv7. Cambiar ambos a $ (ARCHS_STANDARD_32_BIT) funciona, aunque realmente no entiendo cómo i386 es un objetivo válido cuando no está en la lista. –

+0

@ k1th buena respuesta ... una referencia no estaría mal ... me gustaría saber dónde descubrió qué significa ARCHS_STANDARD_32_BIT (le dio un +1 de todos modos :) – abbood

8

de actualización con Xcode 4.5: Apple ha añadido la nueva arquitectura armv7s, que agrega optimizaciones para el nuevo hardware del iPhone 5.

Como no podía probar nuestra aplicación en el nuevo iPhone5, quité esta arquitectura desde nuestra aplicación cambiando la arquitectura admitida de $(ARCHS_STANDARD_32_BIT) (que significa armv7 + armv7s) a solo armv7.

Si quiere o tiene que admitir el iPhone 3G anterior, también necesita agregar armv6.

Necesita hacer esto para Arquitecturas y Arquitecturas válidas.

Cuestiones relacionadas