En iOS5, Apple elimina la arquitectura armv6 de ARCHS_STANDARD_32_BIT .
Para mantener el soporte para iPhone3G , todavía quiero compilar en armv6 incluso en iOS5.
¿Alguien encontró una solución para esto?
Hoy acabo de construir algo que especifica un objetivo de implementación de iOS 4.0. Con solo armv7 especificado en Arquitecturas, Xcode me advirtió que para admitir cualquier cosa por debajo de iOS4.2 tenía que incluir armv6 en Arquitecturas. Simplemente edite ese campo, haga clic en el botón "+" cuando aparezca el cuadro de diálogo e ingrese el literal "armv6".
En mi caso, queremos que nuestra aplicación funcione con iOS4 e iOS5. Tuvimos que hacer algunas modificaciones para que funcionara correctamente en iOS5, pero todos esos cambios se realizaron con cambios de código compatibles con iOS4.
También agregamos algunas capacidades específicas de iOS5 de una manera que permite que la aplicación se ejecute sin fallar en iOS4. Específicamente, probamos las capacidades de iOS5 antes de intentar usarlas, y vinculamos bibliotecas exclusivas de iOS5 como Opcionales.
Por lo tanto, admitir iPhone3G en un mundo con iOS5 podría significar fácilmente "queremos que nuestra aplicación se ejecute en iOS4 y superior (independientemente del uso de funciones de iOS5)" en lugar de "queremos asegurarnos de que nuestra aplicación se ejecute en un dispositivo más antiguo con iOS5 ". Aquí hay una diferencia; Piénsalo. :-)
De todos modos, volver a agregar el soporte armv6 es muy fácil. Y supongo que el punto es este: en algún momento, cuando no haya más dispositivos armv6 de los que preocuparse (por el motivo que sea), no tendrás que construir para ello. La opinión de Apple es que todos deberían actualizarse al hardware más reciente lo antes posible. Entonces, en ese mundo, no hay necesidad de que las herramientas usen por defecto nada más que lo último y lo mejor también. :-) Afortunadamente (o no), los desarrolladores vivimos en el mundo real y reconocemos que tienes que soportar cosas más antiguas por un tiempo. Y supongo que el equipo de desarrollo de Xcode también lo sabe, por lo que puede volver a agregar el soporte armv6 de manera bastante simple.
La respuesta simple es que tiene que cambiar la configuración actual de "Estándar (armv7) - $ (ARCHS_STANDARD_32_BIT)" para que sea simplemente "armv6" y "armv7". Vea la imagen a continuación. Tienes que eliminar la línea con la configuración anterior para que funcione.
fuente
también asegúrese de configurar esto en Proyecto Y Objetivos ... me costó una hora averiguarlo. lo había establecido para uno pero no para el otro. espero que esto ayude. GLTA
fuente
Creo que hay una razón por la que Apple eliminó armv6 de la configuración estándar.
He compilado armv7 / armv6 con iOS5 SDK, sin embargo, el compilador armv6 produjo un código incorrecto en el modo de lanzamiento. Después de horas de encontrar una solución alternativa (probando llvm o gcc con diferentes niveles de optimización) me rindo.
Por lo tanto, volveré a iOS SDK 4.x siempre que sea compatible con dispositivos armv6 más antiguos.
Ejemplo de código:
Tal vez tenga algo de corrupción de memoria, sin embargo, en el compilador armv7 y en iOSSDK <5.0 se comporta como se esperaba.
Atentamente
fuente
No estoy seguro de si esto es realmente una solución todavía, pero he descubierto que reemplazar la cadena definida en "arquitecturas", que era $ (ARCHS_STANDARD_32_BIT), con "armv6 armv7" me permitió compilar con iOS5 como base e iOS4 como implementación. objetivo y pasar la validación.
No estoy usando bibliotecas o llamadas exclusivas de IOS5, pero tengo la intención de hacerlo en mi próxima versión.
fuente
No necesitaba reemplazar $ (ARCHS_STANDARD_32_BIT) con solo armv7 para que la aplicación se compilara y se cargara en la App Store.
Como sugirió MarkGranoff, simplemente agregué armv6 como texto sin formato, presionando más y simplemente escribiéndolo en la línea dos.
fuente