¿Es posible instalar iOS 6 SDK en Xcode 5?

250

Xcode 5 tiene un panel de preferencias que le permite a uno descargar el simulador de iPhone 6.1, sin embargo, no puedo encontrar un lugar donde permita la descarga del SDK de iOS 6, por lo que no es posible configurar el SDK activo a iOS 6 cuando se desarrolla con Xcode 5 ¿Existe alguna solución que permita a Xcode 5 instalar iOS 6 SDK?

EDITAR:

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

ingrese la descripción de la imagen aquí

Tony
fuente
41
Para aprovechar muchas mejoras en Xcode 5, sin dejar de ser capaz de crear aplicaciones para la tienda de aplicaciones de hoy.
Tony
61
Hola Maddy, el punto sobre "adoptar iOS 7 de todos modos" no está totalmente relacionado con el lanzamiento de GA. La decisión y el esfuerzo de rediseñar todo el lenguaje de diseño y la experiencia de usuario de una aplicación para que coincidan con el diseño plano y los componentes rediseñados de la interfaz de usuario de iOS7 no son pequeños, ni pueden venir fácilmente desde una perspectiva comercial y de tiempo. Construir contra SDK 6.1 hará que iOS7 use el lenguaje de diseño de IU de iOS 6 y versiones anteriores (para fines de soporte hacia atrás). Por lo tanto, puede estar muy bien garantizado que queremos desarrollar en Xcode 5 contra el SDK 6.1 para algún buen momento.
Marchy
2
hmmm tal vez porque espera que el SDK se separe del IDE, en lugar de una pila monolítica de código?
phreakhead
1
Actualmente estoy trabajando con un cliente que no está listo para aceptar los cambios en la interfaz de usuario de IOS7, pero puede beneficiarse de las mejoras de migración de Core Data en XCode 5. Entonces, en este caso, esto es exactamente lo que quiero también.
Droid Chris
Uno podría pensar que Xcode, si no incluye SDK 6.1, al menos lo integraría sin problemas. Pero luego está este problema .
JohnK

Respuestas:

203

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


Si, esta bien. Todavía construyo con iOS 4.3 para un proyecto (ha pasado un tiempo desde que actualizamos, pero todavía lo aceptaron después de que salió iOS 6), y actualmente construyo aplicaciones 10.5 con Xcode 5.

Consulte Cómo apuntar Xcode a un SDK antiguo para que pueda usarse como un "SDK base". para obtener detalles sobre cómo configurarlo. Puede usar mi script fix-xcode para vincular todo por usted cada vez que actualice.

El único truco es obtener los viejos SDK. Si no los tiene, generalmente necesita descargar versiones antiguas de Xcode (aún disponibles en developer.apple.com ), abrir el paquete del instalador y buscar el SDK que necesita.

Los SDK se pueden encontrar dentro del paquete del instalador en:

Xcode.app/Contents/Developer/Platforms/

Rob Napier
fuente
¿necesita eliminar el SDK de iOS 7 al archivar para asegurarse de que se compila con el SDK de iOS 6?
ohayon
66
Hola. Esto está cerca, pero no del todo para mí. los botones se parecen a iOS 6 pero el contenido del controlador de vista todavía se encuentra detrás de la barra de navegación cuando se usa un UINavigationController. ¿Alguna idea sobre cómo obtener el comportamiento de iOS 6 para eso también?
Matt Bezark
2
No; solo verá esto en el dispositivo. No hay modo de compatibilidad con iOS 6 en el simulador de iOS 7. Si quieres ver cómo se ve en el simulador, prueba en el simulador de iOS 6.
Rob Napier
1
¿Puedo enviar la aplicación que está construida con Xcode 5 y iOS 6 SDK a App Store?
hujunfeng
1
Mientras el iPad 1 todavía sea compatible, siempre puede suponer que Apple aceptará 5.X iOS. No se puede actualizar.
ahwulf
60

También estaba ejecutando el mismo problema cuando actualicé a xcode 5, eliminó el sdk anterior. Pero tomé la copia del SDK anterior de otra computadora y la misma que puede descargar desde el siguiente enlace.

http://www.4shared.com/zip/NlPgsxz6/iPhoneOS61sdk.html
(www.4shared.com cuenta de prueba [email protected]/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 desee y vaya a /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs y cree un enlace simbólico aquí, para que el SDK permanezca igual incluso si Actualizas el Xcode.

Otro cambio que hice, Configuración de compilación> Arquitecturas> estándar (no 64), así que enumere todas las versiones de Destino de implementación

No es necesario descargar el zip si solo desea cambiar el objetivo de implementación.

Aquí hay algunas capturas de pantalla. ingrese la descripción de la imagen aquí ingrese la descripción de la imagen aquí

AvtarSingh Suchariya
fuente
2
¿Cómo y dónde descargaste este SDK iOS6.1? Estoy buscando iOS 5 sdk para ejecutar contra mi Xcode 5. ¿Puede cargar eso o señalarme dónde puedo descargarlo yo mismo? Gracias
Sam B
En realidad, estoy teniendo el viejo sistema también. así que tomé esto de xcode más antiguo. Lo mismo probé para ios sdk 5, pero como no era muy necesario, no traté de sacar eso. Además, si esta respuesta parece buena, valoro sus comentarios en términos de + o -. Gracias.
AvtarSingh Suchariya
1
Hola Avtar, descargué tu zip ios6, lo descomprimí bajo la ruta de ubicación que había enumerado, cerré xcode 5 por completo, lo relancé nuevamente y aún veo solo 7.0 como objetivo desplegable en la opción desplegable. ¿Suponiendo que faltan pasos y hay más?
Sam B
Lo mismo está funcionando para mí. Solo una pregunta, ¿agregó esto en la aplicación xcode o creó un enlace simbólico?
AvtarSingh Suchariya
directamente al directorio de la aplicación.
Sam B
34

Sí, acabo de resolver el problema hoy.

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

ingrese la descripción de la imagen aquí

Entonces puede elegir el SDK como a continuación:

ingrese la descripción de la imagen aquí

Espero que esto te ayude.

Jason Lee
fuente
2
Hice lo mismo, pero mi GUI de la aplicación cambia y parece que la GUI de iOS 7. Elegí el simulador de iPhone Retina (4 pulgadas y 64 bits) para ejecutar la aplicación. Me falta algo más después de hacer esto.
pitón
20

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

Copié 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, dé el parámetro comoiPhoneOS6.1 lugar deiPhoneOS7.0

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

Vaya al directorio SDK de Xcode5. Generalmente se encuentra en:

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

Agregue un enlace simbólico al SDK anterior como este:

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 de 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
karim
fuente
Podemos usar esta opción para probar nuestra aplicación, pero probablemente después de febrero de 2014, ¡ninguna aplicación creada con SDK de iOS 7 anterior no será aceptada en la tienda de aplicaciones!
karim
11

Puede descargar el SDK anterior e instalarlo en

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

carpeta. Cerrar sesión + Iniciar sesión solo para asegurarse de que los cambios surtan efecto y debería ver el SDK anterior en su nuevo XCode

charlatanería
fuente
He hecho esto (usando el enlace de descarga en una respuesta anterior), y la opción sdk de iOS 6.1 aparece en xcode 5 en Configuración de compilación> Arquitecturas> SDK base. Sin embargo, cuando construyo y ejecuto en el simulador de iOS 7 (o dispositivo iOS 7) todavía está usando botones UIKit de iOS 7 (no versiones de iOS 6). Si alguien tiene alguna sugerencia de por qué, estaría agradecido ...
Bill Patterson
Si tiene instalado TimeMachine, puede abrir la ruta anterior (en el tipo de terminal: abra "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/") y restaure el SDK iOS6.1 desde allí .
avance
11

Solo para agregar, en realidad puede descargar versiones antiguas del simulador con Xcode 5 en sí mismo; solo vaya a las preferencias y las encontrará en Descargas:

ingrese la descripción de la imagen aquí

Smikey
fuente
Esto debe haber sucedido desde que xcode 5 salió de beta y ahora es una versión general. Es bueno saberlo, gracias Smikey
Tony
55
@Manni Esto no es lo mismo que compilar contra la antigua API. Está compilando utilizando la nueva API para iOS 6.
oligofren
Estas opciones no aparecen de forma predeterminada en Xcode 6, incluso si ha configurado una plataforma de destino más antigua.
GilesDMiddleton
10
  • Descargue Xcode 4.6.x desde el Centro de desarrollo de Apple: https://developer.apple.com/downloads/index.action
  • Cree una carpeta llamada Xcode4 dentro de la carpeta Aplicaciones y arrastre y suelte el dmg descargado allí.
  • Abrir 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 está dentro de una carpeta del sistema

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

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

  1. Localice un SDK anterior como, por ejemplo, "iPhoneOS6.1 sdk" en una versión anterior de xcode, por ejemplo. Si no lo ha hecho, puede descargarlo desde el servidor de Apple Developer en esta dirección: https://developer.apple.com/downloads/index.action?name=Xcode Cuando abra el xcode.dmg, puede encontrarlo abriendo Xcode.app (haga clic derecho y "mostrar contenido") y vaya a Contenido / Desarrollador / Plataformas / iPhoneOS.platform / Developer / SDKs / iPhoneOS6.1 sdk ingrese la descripción de la imagen aquí
  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 Aplicaciones.
    • Vaya a Contenido / Desarrollador / Plataformas / iPhoneOS.platform / Developer / SDKs /
    • Solo pegue aquí.

ingrese la descripción de la imagen aquí

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

Para probar una aplicación en iOS 6 en su simulador: - Simplemente elija iOS 6.0 en su sheme activo. ingrese la descripción de la imagen aquí

Para construir su aplicación en iOS 6, el diseño de su aplicación será el diseño más antiguo en un iPhone con iOS 7 también: - Elija iOS6.1 en objetivos - SDK base

ingrese la descripción de la imagen aquí

Solo tenga en cuenta: ¡Cuando cambie el SDK base en sus objetivos, iOS 7.0 ya no estará disponible para construir en el simulador!

Daniel C.
fuente
9

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 tengo estos en mi carpeta de instalación

ingrese la descripción de la imagen aquí

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

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

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

ingrese la descripción de la imagen aquí

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

Por qué no es necesario

Remitiendo la documentación de Apple

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

  1. Elija un objetivo de implementación .

    Esto identifica la primera versión del sistema operativo en la que se puede ejecutar su software.

  2. Elija un SDK base

    Su software puede utilizar las funciones disponibles en las versiones del sistema operativo hasta la correspondiente al SDK base. De forma predeterminada, Xcode establece esto en el sistema operativo más nuevo compatible con Xcode.

La regla es usar la versión más reciente como SDK base y establecer el objetivo de implementación en la versión mínima que se supone que debe ejecutar la aplicación

Por ejemplo, puede usar iOS 7 como SDK base y establecer iOS 6 como objetivo de implementación. Ejecute en el simulador de iOS 6 para probar cómo funciona en iOS 6. Instale el simulador si no está disponible con la lista de simuladores.

ingrese la descripción de la imagen aquí

Además, puede utilizar incondicionalmente funciones hasta iOS 6. Y, condicionalmente, puede admitir nuevas funciones de iOS 7 para nuevos dispositivos actualizados mientras admite versiones anteriores.

Esto se puede hacer usando las clases débilmente enlazados , débilmente enlazados Métodos , Funciones y Símbolos

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

Vinculación débil

Suponga que en Xcode establece el objetivo de implementación (versión mínima requerida) en iOS6 y el SDK de destino (versión máxima permitida) en iOS7. Durante la compilación, el compilador vincularía débilmente las interfaces que se introdujeron en iOS7 mientras vincula las interfaces anteriores. Esto permitiría que su aplicación continúe ejecutándose en iOS6 pero aún así aproveche las funciones más nuevas cuando estén disponibles.

MadNik
fuente
4

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

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

Luego, en la terminal, copie los archivos SDK sobre:

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.

nioq
fuente
3

Mi aplicación se cambió a Xcode 5 sin problemas porque todavía se puede construir con el Objetivo de implementación de iOS original que configuró en el proyecto (5.1 en mi caso). Si el nuevo SDK no causa algún problema insuperable, ¿por qué no compilarlo? Seguramente hay muchas mejoras debajo del 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 un hilo completo de la CPU.

Steven Lu
fuente
Razones para no hacerlo: Xcode 5 es bastante inestable en este momento. Chocando cada hora para mí. También algunos problemas de posición extraños y problemas de color en algunas vistas (aunque no hay mucho trabajo para solucionar)
Nick H247
2

Vincular el SDK 6.1 en Xcode 5 como se describe en las otras respuestas es un paso. Sin embargo, esto todavía no resuelve el problema de que se ejecutan en iOS 7 nuevos elementos de la interfaz de usuario, 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 al modo heredado en iOS 7:

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

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

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

Sin embargo, dado que Xcode 4.6.3 se bloquea en Mavericks (al menos para mí, consulte rdar: // 15318883 ), esta es al menos una solución para continuar usando Xcode 5 para la depuración.

Ortwin Gentz
fuente
1

Descargué XCode 4 y llevé iOS 6.1 SDK al XCode 5 como se describe en otras respuestas. Luego también instalé iOS 6.1 Simulator (estaba disponible en las 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 compilación en iOS 7 Simulator.

OneSman7
fuente
1

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 compila para iOS6 o inferior, Apple rechazará su aplicación. Si compila para iOS7 Y baja todo está bien, esto significa:

  1. debes usar xcode5
  2. debe implementar en iOS7 al menos.

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

"Asegúrese de que sus aplicaciones funcionen a la perfección con las tecnologías innovadoras en iOS 7. A partir del 1 de febrero, las nuevas aplicaciones y actualizaciones de aplicaciones enviadas a la App Store deben crearse con Xcode 5 y iOS 7 SDK".

Andrea
fuente
Sí, pero iOS 6 SDK también funciona bien con iOS 7. Algunas aplicaciones son realmente difíciles de cambiar.
Aniruddh Joshi
Creo que eres incorrecto. Apple requiere (a) Construido por el último Xcode 5, y (b) optimizado para iOS 7. Vea mi comentario sobre la respuesta de Rob Napier para enlaces.
Basil Bourque
Algunos de nosotros desarrollamos para la distribución Enterprise y necesitamos apuntar a SDK (y dispositivos) más antiguos. Las aplicaciones empresariales no pasan por el proceso de revisión de Apple y / o App Store, y esta discusión es bastante útil, sigue siendo relevante y continuará siendo relevante en el futuro. Entiendo tu perspectiva, pero no es la única.
Kevin OMara
¡¡¡Tienes toda la razón!!! No pensé en la distribución empresarial. Pero no olvide que aún puede implementar en iOS6 con el nuevo Xcode simplemente configurando el objetivo de implementación, sin preocuparse por el proceso de optimización y revisión de ios7.
Andrea
0

Actualmente tengo Xcode 4.6.3 y 5.0 instalado. Utilicé 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 necesita proporcionarle la ruta al .app:

./xcode.sh /Applications/Xcode-463.app
Wayne
fuente
Tenga en cuenta que la actualización a 5.1 eliminó mi SDK 7.0.x y lo reemplazó con el SDK 7.1. Tengo una instalación anterior de la Xcode5-DP6que pude recuperar 7.0.x, pero este es un buen recordatorio para hacer una copia de seguridad de los directorios del SDK (o cambiar el nombre de la aplicación por completo) antes de actualizar o instalar la última versión de Xcode.
Wayne