¿Es posible instalar iOS 6 SDK en Xcode 5?

Xcode 5 tiene un panel de preferencias que permite descargar el simulador de iPhone 6.1. Sin embargo, no puedo encontrar un lugar donde se pueda descargar iOS 6 SDK, por lo que no es posible configurar el SDK activo en iOS 6 cuando se desarrolla con Xcode 5 ¿Hay alguna solución que permita a Xcode 5 instalar iOS 6 SDK?

EDITAR:

Las soluciones ya no deberían ser necesarias ahora que Xcode 5 está generalmente disponible y le permite descargar versiones anteriores del SDK.

enter image description here

EDITAR: a partir del 1 de febrero de 2014, Apple ya no aceptará aplicaciones anteriores a iOS7 para enviarlas a la tienda de aplicaciones. Entonces, aunque esta técnica todavía funciona, no será útil para la mayoría de los lectores.


Sí, esto está bien. Todavía construyo con iOS 4.3 para un proyecto (ha pasado un tiempo desde que lo actualizamos, pero aún lo aceptaron después de que salió el iOS 6), y actualmente creo 10.5 aplicaciones con Xcode 5.

Consulte ¿Cómo apuntar Xcode a un SDK antiguo para que pueda usarse como un “SDK base”? para detalles sobre cómo configurarlo. Puedes usar mi script fix-xcode para vincular todo por ti cada vez que actualices.

El único truco es obtener los viejos SDK. Si no los tiene, generalmente necesita descargar versiones anteriores de Xcode (todavía disponible en developer.apple.com ), abra el paquete de instalación y busque el SDK que necesita.

Los SDK se pueden encontrar en el paquete de instalador en:

Xcode.app/Contents/Developer/Platforms/

También estaba corriendo el mismo problema cuando actualicé a xcode 5 eliminó sdk anterior. Pero tomé la copia del SDK antiguo de otra computadora y lo mismo puedes descargar del siguiente enlace.

http://www.4shared.com/zip/NlPgsxz6/iPhoneOS61sdk.html
(cuenta de prueba http://www.4shared.com test@yopmail.com/test)

Hay 2 formas de trabajar.

1) Descomprima y pegue esta carpeta en /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs y reinicie el xcode.

Pero esto podría ser eliminado nuevamente por Xcode si actualiza xcode.

2) Otra forma es descomprimir y pegar donde quieras e ir a /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs y crear un enlace simbólico aquí, para que el SDK se mantendrá igual incluso si actualiza el Xcode

Otro cambio que realicé, Configuración de comstackción> Arquitecturas> estándar (no 64), haga una lista de todas las versiones de Destino de despliegue

No es necesario descargar el archivo zip si solo desea cambiar el destino de despliegue.

Aquí hay algunas capturas de pantalla. enter image description hereenter image description here

Sí, acabo de resolver el problema hoy.

  1. Busque el archivo SDK, como iPhoneOS6.1.sdk, en el directorio de Xcode más antiguo o de su amigo.
  2. Copie y colóquelo en el directorio Xcode 5: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs.

enter image description here

A continuación, puede elegir el SDK como a continuación:

enter image description here

Espero que esto te ayude.

Encuentra y descarga el viejo SDK. Los SDK más antiguos se encuentran aquí .

He copiado el directorio xcode.app como Xcode_4.6.3.app.

Ahora puede probar y depurar en ambas versiones de xcode. Debe ejecutarlos desde las carpetas correspondientes o crear accesos directos en su escritorio. Al construir desde la línea de comando, proporcione el parámetro como iPhoneOS6.1 lugar de iPhoneOS7.0

Esto funcionó muy bien para mí en Xcode5 e iOS.

Vaya a dir de SDK de Xcode5. Generalmente se encuentra en:

 /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs 

Agregue un enlace simbólico al antiguo SDK de esta manera:

 sudo ln -s /Applications/Xcode_4.6.3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk iPhoneOS6.1.sdk 

O más exactamente desde cualquier lugar en la línea de comando,

 sudo ln -s /Applications/Xcode_4.6.3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk 

Puede descargar el SDK anterior e instalarlo en

Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/

carpeta. Logout + Login solo para asegurarse de que los cambios surtan efecto y debería ver el SDK anterior en su nuevo XCode

Solo para agregar, puedes descargar versiones anteriores del simulador con Xcode 5 en sí, solo ve a las preferencias y las encontrarás en Descargas:

enter image description here

  • Descargue Xcode 4.6.x del Apple Dev Center: https://developer.apple.com/downloads/index.action
  • Cree una carpeta llamada Xcode4 dentro de la carpeta de Aplicaciones y arrastre y suelte el dmg descargado allí.
  • Abra una ventana de terminal

     $sudo cp -R /Applications/Xcode4/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/ 
  • Se le pedirá que ingrese una contraseña, ya que se encuentra dentro de una carpeta del sistema

  • Abra Xcode 5 y ahora debería ver ambos SDK

Solo para mí la solución más fácil:

  1. Busque un SDK anterior como, por ejemplo, “iPhoneOS6.1 sdk” en una versión anterior de xcode, por ejemplo. Si no lo has hecho, puedes descargarlo del servidor de desarrolladores de Apple en esta dirección: https://developer.apple.com/downloads/index.action?name=Xcode Cuando abras el archivo xcode.dmg puedes encontrarlo abriendo el Xcode.app (clic derecho y “mostrar contenido”) y vaya a Contenido / Desarrollador / Plataformas / iPhoneOS.plataforma / Desarrollador / SDKs / iPhoneOS6.1 sdk enter image description here
  2. Simple Copie la carpeta iPhoneOS6.X sdk y péguelo en su xcode.app
    • Haga clic derecho en su xcode.app en la carpeta de aplicaciones.
    • Ir a Contenidos / Desarrollador / Plataformas / iPhoneOS.plataforma / Desarrollador / SDKs /
    • Solo pega aquí

enter image description here

  1. Cierre su aplicación xcode y vuelva a abrirla de nuevo.

Para probar una aplicación en iOS 6 en su simulador: – Simplemente elija iOS 6.0 en su sheme activo. enter image description here

Para crear su aplicación en iOS 6, el diseño de su aplicación será el diseño anterior en un iPhone con iOS 7 también: – Elija iOS6.1 en Objetivos – Base SDK

enter image description here

Apenas tenga en cuenta: ¡Cuando cambia el SDK base en sus Objetivos, iOS 7.0 ya no estará disponible para construir en el simulador!

Puede hacer esto , pero no es realmente necesario

Como hacer esto

Jason Lee obtuvo la respuesta. Al instalar xCode, preferí mantener las instalaciones anteriores en lugar de reemplazarlas. Así que los tengo en mi carpeta de instalación

enter image description here

Así que /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs Contiene diferentes SDK. (Reemplace Xcode.app con el número correcto) copie los sdks anteriores a

/Applications/Xcode 3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs

Aquí está mi carpeta después de que copié una.

enter image description here

Ahora reinicie xCode y puede establecer versiones anteriores de sdks como base sdk.

Por qué no es necesario

Refiriéndose a la documentación de Apple

Para usar un SDK particular para un proyecto Xcode, realice dos selecciones en la configuración de comstackción de su proyecto.

  1. Elija un destino de despliegue .

    Esto identifica la versión más antigua del sistema operativo en la que se puede ejecutar su software.

  2. Elija un SDK base

    Su software puede usar características disponibles en las versiones del sistema operativo hasta e incluyendo la que corresponde al SDK base. De forma predeterminada, Xcode establece esto en el sistema operativo más nuevo compatible con Xcode.

La regla es Usar lo último como SDK base y establecer el destino de implementación a la aplicación de versión mínima que se supone que se ejecuta

Por ejemplo, puede usar iOS 7 como base sdk y configurar iOS 6 como destino de despliegue. Ejecute en el simulador iOS 6 para probar cómo funciona en iOS 6. Instale el simulador si no está disponible con la lista de simuladores.

enter image description here

Additionaly Puede usar funciones de manera incondicional hasta iOS 6. Y condicionalmente, puede admitir nuevas características de iOS 7 para nuevos dispositivos actualizados mientras admite versiones anteriores.

Esto se puede hacer utilizando clases débilmente vinculadas , métodos , funciones y símbolos débilmente vinculados

https://developer.apple.com/library/ios/documentation/developertools/conceptual/cross_development/Using/using.html#//apple_ref/doc/uid/20002000-SW3

Vinculación Débil

Supongamos que en Xcode establece el destino de despliegue (versión mínima requerida) para iOS6 y el SDK de destino (versión máxima permitida) para iOS7. Durante la comstackción, el comstackdor vincularía débilmente las interfaces que se introdujeron en iOS7 al tiempo que enlazaba fuertemente las interfaces anteriores. Esto permitiría que su aplicación continúe ejecutándose en iOS6, pero aún así aprovechará las funciones más nuevas cuando estén disponibles.

Las otras respuestas aquí también son correctas, pero considero que los siguientes pasos son los más fáciles:

Simplemente descargue Xcode 4.6.3 del enlace del centro de desarrollo que dice “¿Está buscando una versión anterior de Xcode?” (actualmente apunta aquí ) y monte el dmg.

Luego, en la terminal, copie los archivos SDK a través de:

 cp -R /Volumes/Xcode/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/ 

Finalmente, reinicie Xcode y listo.

Mi aplicación fue trasladada a Xcode 5 a la perfección porque todavía puede comstackrse con el destino de implementación iOS original que configuró en el proyecto (5.1 en mi caso). Si el nuevo SDK no causa un problema insuperable, ¿por qué no construir usando? Seguramente hay muchas mejoras bajo el capó.

Por ejemplo, preferiría usar Xcode 5 en lugar de Xcode 4.6.3. ¿Por qué? Obtendré mucha más duración de la batería porque el desplazamiento de la interfaz de usuario de las áreas de texto / código en Xcode 5 ya no mastica todo un hilo de la CPU.

Vincular el SDK 6.1 a Xcode 5 como se describe en las otras respuestas es un paso. Sin embargo, esto aún no resuelve el problema de que se ejecutan en iOS 7 nuevos elementos de la IU, los controladores de vista se hacen a tamaño completo, etc.

Como se describe en esta respuesta , también es necesario cambiar la interfaz de usuario en modo heredado en iOS 7:

 [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"UIUseLegacyUI"]; [[NSUserDefaults standardUserDefaults] synchronize]; 

Cuidado: esta es una clave no documentada y no se recomienda para las comstackciones de App Store.

Además, en mi experiencia mientras probaba en el dispositivo, descubrí que solo funciona la segunda vez que ejecuto la aplicación aunque estoy ejecutando el código bastante temprano en el lanzamiento de la aplicación, en +[AppDelegate initialize] . También hay diferencias sutiles a una versión creada con Xcode 4.6. Por ejemplo, las barras de navegación transparentes se comportan de manera diferente (lo que hace que la vista sea de tamaño completo).

Sin embargo, como Xcode 4.6.3 falla en Mavericks (al menos para mí, vea rdar: // 15318883 ), esta es al menos una solución para continuar usando Xcode 5 para la depuración.

Descargué XCode 4 y tomé iOS 6.1 SDK de él a XCode 5 como se describe en otras respuestas. Luego también instalé iOS 6.1 Simulator (estaba disponible en preferencias). También cambié Base SDK a iOS 6.1 en la configuración del proyecto.

Después de todas estas manipulaciones, el proyecto con 6.1 base sdk se ejecuta en modo de competencia en iOS 7 Simulator.

A partir del 1 de febrero, Apple rechazará la aplicación creada solo para iOS6 o inferior. Aquí también está la comunicación oficial de Apple. Mejor comenzar a construir para iOS7.

Para aclarar mi afirmación: si comstack para iOS6 o versiones anteriores, Apple rechazará su aplicación. Si comstack para iOS7 Y todo lo demás está bien, esto significa:

  1. debes usar xcode5
  2. deberías implementar en iOS7 al menos.

El contenido del correo electrónico de Apple es bastante claro para mí

“Asegúrate de que tus aplicaciones funcionen perfectamente con las tecnologías innovadoras en iOS 7. A partir del 1 de febrero, las nuevas aplicaciones y actualizaciones de aplicaciones enviadas a App Store deben estar integradas con Xcode 5 y iOS 7 SDK”.

Actualmente tengo instalados Xcode 4.6.3 y 5.0. Usé el siguiente script bash para vincular 5.0 a los SDK en la versión anterior:

 platforms_path="$1/Contents/Developer/Platforms"; if [ -d $platforms_path ]; then for platform in `ls $platforms_path` do sudo ln -sf $platforms_path/$platform/Developer/SDKs/* $(xcode-select --print-path)/Platforms/$platform/Developer/SDKs; done; fi; 

Solo tiene que proporcionarle la ruta a la .app:

 ./xcode.sh /Applications/Xcode-463.app