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
iOS
versiones. 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:
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.
4) Abra los proyectos * -Info.plist, elimine la configuración "Capacidades requeridas del dispositivo" (tenga en cuenta que requiere armv7)
Por cierto, me di cuenta de esto cuando intenté agregar manualmente la aplicación a través del organizador e informó:
Todo debería funcionar después de eso. Habla de un PITA.
fuente
Vaya a Xcode> Preferencias> Descargas e instale el soporte de depuración para versiones anteriores de iOS.
fuente
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.
fuente
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.
fuente
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.
fuente
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ó!
fuente
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.
fuente
En mi caso, había una línea redundante en las capacidades requeridas del dispositivo
Lo acabo de quitar ...
Con suerte, ayudará a alguien más.
fuente