¿Es posible apuntar a versiones anteriores de iOS cuando se usa Xcode 4.2 y iOS 5 SDK?

103

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

Para cualquiera de mis dispositivos que ejecutan iOS con menos de 5.0, Xcode simplemente dice "Terminó de ejecutarse para iPhone3GS" y no lo ejecuta. Tengo mi objetivo de implementación establecido en 3.0 porque no estoy usando ninguna función en mi aplicación por encima de 3.0 y quiero poder apuntar a todas las versiones 3.0 o superiores. Tengo todos mis perfiles de aprovisionamiento instalados y actualizados.

Salí y reinicié xcode, limpié la compilación varias veces. He intentado agregar armv6 en la configuración de compilación de arquitectura, pero nada me permitirá compilar 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 anteriores a la 5? ¿Cómo puedo estar seguro de que mi aplicación seguirá funcionando en versiones inferiores de iOS si no puedo instalarlas en mi teléfono anterior?

Editar: OK, parece que iOS SDK 5 dejó de ser compatible con armv6 de forma predeterminada. Lo que debe hacer es agregar armv6 en el campo Arquitecturas en Configuración de compilación tanto para su objetivo como para su proyecto. Luego, su aplicación podrá ejecutarse en dispositivos iPhone 3G. La respuesta se puede encontrar aquí Cómo construir para arquitecturas armv6 y armv7 con iOS 5

Greg Ellis
fuente
Tenga en cuenta que su edición tiene que ver con arquitecturas, que es un problema independiente de las iOSversiones. Además, agregue la edición como respuesta para que pueda aceptar la solución que encontró y esta pregunta se puede marcar como respondida.

Respuestas:

153

Estaba teniendo el mismo problema al intentar ejecutar un proyecto Xcode 4.2 recién creado en un iPhone 3G 4.2.1. Así es como pude hacer que se ejecutara.

1) Cambie la "Configuración de construcción" de Target ==> "Arquitectura" de "Estándar (armv7)" a "otro". Agregue armv6 y armv7.

2) Cambie la "Configuración de compilación" de Target ==> "Arquitectura válida" a armv6 y armv7.

3) Cambie la "Configuración de compilación" de Target ==> "Destino de implementación de iOS" a iOS 4.2.

ingrese la descripción de la imagen aquí

4) Abra los proyectos * -Info.plist, elimine la configuración "Capacidades requeridas del dispositivo" (tenga en cuenta que requiere armv7) ingrese la descripción de la imagen aquí

Por cierto, me di cuenta de esto cuando intenté agregar manualmente la aplicación a través del organizador e 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

Todo debería funcionar después de eso. Habla de un PITA.

mmorris
fuente
¡Muchas gracias! ¡Te debo una cerveza! De hecho, esto resolvió mis problemas, PITA de hecho: D
Greg Ellis
4
¡Gracias! Había leído sobre la configuración de la arquitectura en otros lugares, pero nadie más parece mencionar también la configuración de "Capacidades requeridas del dispositivo".
bunnyhero
Debo agregar: ¡tanto los proyectos nuevos como los antiguos se ven afectados por la actualización! Probé mis cosas antiguas antes de buscar en Google, ¡y tampoco funcionaron! ¡Yo también te debo una cerveza! :)
Eduardo Costa
1
Tengo el mismo problema, pero incluso si la configuración del proyecto fuera 'Standard armv7' para arquitecturas, Valid Architectures ya indicaba 'armv6 armv7'. Además, no tenía la propiedad 'Capacidades de dispositivo requeridas' en Info.plist. Intentaré el truco no obstante, ¡espero que funcione!
rchampourlier
las "Capacidades requeridas del dispositivo" también me
atrajeron
12

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

Aleksejs Mjaliks
fuente
Fui a preferencias y descargué e instalé soporte de depuración para sistemas operativos más antiguos, salí de xcode, volví a abrir xcode hice una limpieza y compilación, pero la aplicación aún no se instala en mi dispositivo anterior. Estoy en una pérdida total ahora, ya que cuando vi su respuesta pensé que con seguridad eso solucionaría mi problema :(
Greg Ellis
1
¡Yo también te debo una cerveza! ¡Esto resolvió OTRO problema que tuve después de la actualización de Xcode 4! ¡Ahora puedo depurar mi dispositivo iOS 4.2 (iPod Touch de segunda generación)!
Eduardo Costa
3

mmorris me acercó a resolver el problema ... En Info.plist, tuve que configurar las Capacidades requeridas del dispositivo en armv6, no armv7. Espero que esto ayude a otros también.

flizit
fuente
1

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

Consulte la página del desarrollador para obtener más información. Se describió en las notas de la versión beta 4.2.

Foo Bah
fuente
Hice esto y hice clic en "Usar este dispositivo para el desarrollo" y pareció hacer lo que se suponía que debía hacer, pero todavía no puedo ejecutar una aplicación en mi antiguo dispositivo desde xcode.
Greg Ellis
1

Encontré un problema similar al intentar ejecutar mi aplicación en un iPod Touch antiguo. Actualicé a Xcode 4.3.3 y la aplicación ya no se ejecutaría en el depurador en hardware más antiguo.

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

En mi caso, encontré que el esquema de construcción era el culpable. Xcode 4.3.3 me pidió que cambiara del depurador GDB a LLDB cuando actualizó mi proyecto. Cuando cambié la acción Ejecutar de mi esquema de nuevo a GDB , pude ejecutar la aplicación nuevamente en mi antiguo hardware desde Xcode.

otón
fuente
1

Descubrí que tenía que agregar armv6 a las arquitecturas, pero aún así no funcionó. Y ahora eliminé armv7 de las capacidades requeridas, ¡y eso fue todo! ¡Funcionó!

Greg
fuente
0

Esto funcionó para mí y debería funcionar para usted si anteriormente tenía una versión anterior de Xcode. De lo contrario, debe seguir los consejos dados por otros para obtener el SDK de una versión anterior del 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 del mostrado por otros, pero esos comandos soltaron los archivos en la carpeta SDKs en sí para mí; queremos que se cree un subdirectorio con el nombre apropiado.

Tom Boutell
fuente
0

En mi caso, había una línea redundante en las capacidades requeridas del dispositivo ingrese la descripción de la imagen aquí

Lo acabo de quitar ...

ingrese la descripción de la imagen aquí

Con suerte, ayudará a alguien más.

Arkady
fuente