¿Es posible orientar las versiones anteriores de iOS al usar Xcode 4.2 y iOS 5 SDK?

Recientemente descargué el paquete Xcode 4.2 con iOS 5 SDK e inmediatamente noté que no puedo usar mi iPhone 3G con iOS 4.2.1 para la depuración. Solo puedo depurar y probar en mi iPhone 4 con iOS 5 instalado.

Para cualquiera de mis dispositivos que ejecutan cualquier iOS de menos de 5.0, Xcode solo dice “terminó de ejecutarse para iPhone3GS” y no lo ejecuta. Tengo mi objective de implementación configurado en 3.0 porque no estoy usando ninguna característica en mi aplicación por encima de 3.0 y quiero poder orientarme a todas las versiones 3.0 o superior. Tengo todos mis perfiles de aprovisionamiento instalados y actualizados.

He cerrado y reiniciado xcode, he limpiado la comstackción varias veces. He intentado agregar armv6 en la configuración de construcción de archtecture, pero nada me permitirá construir y ejecutar mi aplicación en mi teléfono anterior con ios 4.2.1.

Mi pregunta es, ¿es posible hacer que las aplicaciones con el nuevo SDK funcionen para versiones de iOS inferiores a 5? ¿Cómo puedo estar seguro de que mi aplicación seguirá ejecutándose en versiones inferiores de iOS si no puedo instalarlas en mi teléfono anterior?

Editar: OK, parece que el SDK 5 de iOS dejó de ser compatible con armv6 de manera predeterminada. Lo que tiene que hacer es agregar armv6 en el campo Arquitecturas en Configuraciones de comstackción para su objective y su proyecto. Luego, su aplicación podrá ejecutarse en dispositivos iPhone 3G. La respuesta se puede encontrar aquí Cómo construir para las architectures armv6 y armv7 con iOS 5

Estaba teniendo el mismo problema al intentar ejecutar un proyecto Xcode 4.2 recién creado en un iPhone 3G 4.2.1. Aquí es cómo pude hacer que funcione.

1) Cambie las “Configuraciones de comstackción” del Destino ==> “Arquitectura” de “Estándar (armv7)” a “otra”. Agrega armv6 y armv7.

2) Cambie la “Configuración de comstackción” del objective ==> “Arquitectura válida” a armv6 y armv7.

3) Cambia la “Configuración de comstackción” del objective ==> “Objetivo de implementación de iOS” a iOS 4.2.

enter image description here

4) Abra los proyectos * -Info.plist, elimine la configuración “Capacidades requeridas del dispositivo” (tenga en cuenta que se requiere armv7) enter image description here

Por cierto, me di cuenta de esto cuando traté de agregar manualmente la aplicación a través del organizador y me informó:

No se puede instalar la aplicación

El Info.plist para la aplicación en /Users/…/TestsDebug.app especifica los requisitos de capacidad del dispositivo, que Dev iPhone 3G no cumple.

Todos deberían funcionar después de eso. Habla sobre un PITA.

Vaya a Xcode> Preferencias> Descargas e instale el soporte de depuración para versiones anteriores de iOS.

mmorris me ayudó a resolver el problema … En Info.plist, tuve que configurar las capacidades del dispositivo requerido en armv6, no en armv7. Espero que esto ayude a otros a salir también.

Necesita conectar el teléfono y luego ir al organizador. Xcode debería solicitar automáticamente la versión anterior.

Vea la página del desarrollador para más información. Fue descrito en las notas para la versión 4.2 beta

Me encontré con un problema similar al intentar ejecutar mi aplicación en un viejo iPod Touch. Actualicé a Xcode 4.3.3 y la aplicación ya no se ejecutaría en el depurador en un hardware antiguo.

Creo que los otros comentarios aquí sobre “Arquitecturas” y “Capacidades requeridas del dispositivo” son detalles importantes para especificar correctamente. Desafortunadamente, no fueron suficientes para solucionar mi problema.

En mi caso, encontré que el esquema de comstackción era el culpable. Xcode 4.3.3 me impulsó a pasar del depurador GDB a LLDB cuando actualizó mi proyecto. Cuando cambié la acción Ejecutar de mi esquema a GDB , pude volver a ejecutar la aplicación en mi viejo hardware de Xcode.

Descubrí que tenía que agregar armv6 a las architectures, pero todavía no funcionaba. Y ahora he eliminado armv7 de las capacidades requeridas, ¡y eso fue todo! ¡Funcionó!

Esto funcionó para mí y debería funcionar para usted si tuviera una versión anterior de Xcode. De lo contrario, debe seguir los consejos de otros para obtener el SDK de una versión anterior de SDK:

sudo cp -a /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk

Este comando es solo un poco diferente al mostrado por otros, pero esos comandos soltaron los archivos en la carpeta SDK para mí, queremos que se cree un subdirectorio con el nombre apropiado.

En mi caso, había una línea redundante en las capacidades del dispositivo requerido enter image description here

Lo eliminé …

enter image description here

Con suerte, ayudará a alguien más.