kits - Instale xCode 3.2.3 con iPhone SDK 4, obtenga "Base SDK faltante", no puede ver otros SDK
xcode beta (4)
Creé esta wiki de la comunidad para unir varias otras Q / A que he visto aquí en SO. Si estás aquí, probablemente hayas instalado la versión final de Xcode 3.2.3 con el iPhone SDK 4 ( enlace de descarga , reg reqd), y luego hayas encontrado uno o ambos problemas:
En su proyecto de xCode iPhone que trabajaba anteriormente, obtiene "Base SDK Missing" en algún lugar. Algo como esto:
En una observación relacionada pero más general, ninguna de las opciones de SDK del dispositivo o simulador previamente disponibles (ej. 3.0, 3.1, 3.1.3, ...) está disponible donde solía verlas.
Visión de conjunto
Voy a explicar por qué sucede esto, y luego cómo solucionar el problema específico de "falta del SDK base". Puede saltar al final solo por la solución, aunque recomiendo leer todo esto. También recomiendo la excelente opinión de John Muchow sobre este tema.
Si está interesado específicamente en la actualización de Xcode 3.2.4, que tiene un problema muy relacionado, le recomendamos consultar here .
Un SDK para gobernarlos a todos
Este es el trato: 4.0 es ahora la única versión de SDK permitida para enviar aplicaciones nuevas o actualizadas solo para iPhone. Esto es directo de la Lista de Verificación de Preparación de iOS 4 de Apple (reg reqd):
Todas las aplicaciones y actualizaciones nuevas de las aplicaciones existentes deben compilarse con iPhone SDK 4. Tenga en cuenta que App Store ya no admitirá aplicaciones que tengan como destino iOS 2.x.
Es de suponer, supongo, que las aplicaciones universales y para iPad deberían usar el 3.2 SDK. Es por eso que 4.0 y 3.2 son sus únicas opciones para SDK.
Esa es también la razón por la cual su proyecto ahora está roto, ya que el SDK al que se había asignado anteriormente está en desuso , gones-ville.
(Pero) 3 es un número mágico
Relajarse. Todavía puede orientar los dispositivos que ejecutan iPhone OS 3.0 (pero no más bajo). El SDK que utiliza para compilar no limita, hacia abajo , la versión de iOS que puede programar o admitir. Una vez que haya corregido las cosas en su proyecto, etc. (consulte la siguiente sección) puede establecer "Objetivo de implementación del iPhone OS" en una versión de iOS inferior. Para una vista rápida de cómo hacer esto, cf. paso 7 en la siguiente sección.
Tenga en cuenta que ahora está ingresando a algún terreno complicado. Su compilador habitual de Xcode 3.2.3 ya no exigirá el cumplimiento de las llamadas de solo 3.0, ni tiene un simulador para ellas. Y si desea admitir las características 4.0, tendrá que hacer un código condicional para evitar bloqueos en dispositivos 3.0. Divertido.
Todavía puede descargar (desde Apple!) E instalar una versión anterior de Xcode o SDK (consulte here ). Sí, puede instalar múltiples versiones de Xcode, en diferentes directorios, es decir, poner solo una versión en / Desarrollador. Puedes usar el antiguo Xcode para probar el cumplimiento de tu aplicación con un SDK 3.x, trasladando el trabajo duro a un compilador sofisticado y simulador. Pero ya no puede usar los productos de los SDK anteriores para enviarlos a la tienda de aplicaciones.
FWIW, planeo hacer solo esta comprobación antes de enviar.
En qué condición está mi condición
Matt Gallagher tiene una publicación de Cocoa with Love en el código condicional de la versión titulada "Consejos y trucos para iOS3.2 condicional, y el código de iOS4.2" . Si está planeando utilizar de forma condicional las características 4.0, esta es una buena recomendación para verificarlo.
Reparar "Base SDK faltante"
- Carga tu proyecto
- En el menú, selecciona Proyecto> Editar configuración del proyecto ...
- En Arquitectura> Base SDK, elija una de las opciones disponibles del dispositivo: iPhone 3.2 o iPhone 4.0. Si solo tienes iPhone, 4.0 es el camino a seguir.
- Cierra esa ventana
- En el menú, selecciona Proyecto> Editar destino activo "YourTarget"
- En Arquitectura> Base SDK, elija una de las opciones disponibles de dispositivo o simulador: iPhone 3.2 o iPhone 4.0.
- Si desea orientar sus anuncios a versiones anteriores de iOS, en la misma ventana, en Despliegue> Destino de implementación de iPhone OS, seleccione la versión más baja que desee. Tenga en cuenta que el soporte para versiones 2.x a través de la tienda de aplicaciones está en desuso. Vea la cita "Lista de verificación de preparación" arriba.
Ubicación del SDK base para Xcode 4 y superior
Siga los pasos anteriores, pero para el Paso 2, haga clic en lo siguiente:
- Seleccione el navegador del proyecto utilizando el icono de la carpeta a la izquierda de la barra lateral del navegador
- Seleccione el Proyecto, que estará en la parte superior de esa vista.
- La configuración del proyecto aparecerá en el panel del editor principal; seleccione "Configuración de compilación" en la parte superior e inferior será la sección ''Arquitectura''.
(Esta respuesta es una versión ligeramente adaptada de la answer de Sherman Lo )
Apéndice
También se puede encontrar información más detallada sobre este tema en la primera respuesta a esta question . También hay información útil here .
Los enlaces proporcionados por Clay Bridges para descargar versiones anteriores de los SDK de Xcode e iPhone OS no funcionan. Sin embargo, editar estos enlaces para reemplazar la primera instancia de ''iphone'' con ''ios'' funciona, al menos para el enlace de Snow Leopard (descargando ahora).
Los enlaces correctos, además de información sobre la instalación de iOS SDK anteriores en instalaciones más nuevas de Xcode, provienen de esta entrada del blog de Chris Fletcher: here Muy recomendable!
Si arregla su configuración y todavía ve "Base SDK faltante" y no puede compilar, vuelva a cargar su proyecto. Salí de Xcode, pero el cierre y la reapertura probablemente también funcionarían.
Tuve este mismo problema también. También tuve un problema al usar objetivos múltiples al volver a un objetivo anterior. Xcode se olvidaría de cambiar algunas cosas, como pasar de un objetivo de iOS a un objetivo de MacOS.
opción / alt haciendo clic en el menú desplegable
reveló algunas opciones adicionales que fueron muy útiles.