2009-08-31 10 views
25

Sé que se formularon partes de esta pregunta en varias variaciones, pero quiero asegurarme de que lo hice bien.Objetivo de base versus activo frente a implementación

Aquí están mis suposiciones y entendimientos que quiero saber si son correctos antes de enviarlos.

Mi aplicación asume las funciones compatibles con todos los sistemas operativos, y por lo que debe:

  1. Establecer el SDK activo a ser la más reciente (actualmente SDK 3.0).
  2. Establezca el destino de implementación para que sea el más bajo en el que quiero ser compatible: ¿iPhone 2.0 y superior?
  3. ¿Para qué sirve exactamente el SDK base? ¿Debería ignorarlo si selecciono Active SDK para que sea diferente y dónde veo el SDK activo en la configuración de Proyectos?

Una última pregunta: ¿Apple permite elegir iPhone OS 2.0 como objetivo de despliegue?

Gracias de antemano,

BTW - uno de mi razón principal para esta pregunta es porque cuando se compila con los SDK anteriores manzana parece tener un problema de la liberación de la memoria para la matriz de animación UIImageView cuando esta animación fue salvado por el tiempo múltiple uso. Este es un problema conocido que se solucionó con SDK 3.0 (simplemente configurando el conjunto de animación UIImageView en cero)

Respuesta

28

La diferencia entre Base y SDK activo es que el primero es el SDK predeterminado establecido para el proyecto y el segundo es el SDK que está construyendo actualmente. Por lo tanto, es posible que Active SDK sea el SDK base, momento en el que XCode utilizará el SDK que especificó para el proyecto.

Con el fin de construir su aplicación para el conjunto más amplio de dispositivos posibles, estás en lo correcto:

  • Configurar el SDK Base para el SDK lastest posible (3.0, 3.0.1)
  • Ajuste el despliegue apuntar a la mayor brevedad SDK posible (2,0)

Apple no permite especificar iPhone 2.0 como el destino de despliegue, pero tenga en cuenta cualquier API o un marco de libertad después de iPhone 2.0 que no tendrá a su disposición para su uso por defecto. Hay techniques to use features from later SDKs, sin embargo, no son triviales.

+6

no quiero decir que ser muy riguroso, pero OP preguntó sobre "SDK Base" y "Destino de despliegue " ¿Estás utilizando "SDK activo" para significar "Objetivo de despliegue"? Apple usa los términos "Base SDK" y "Destino de implementación", que entiendo significa: MAX SDK = "Base SDK" y MIN SDK = "Objetivo de implementación". – jww

8

Debe establecer la configuración de compilación SDK base en el SDK más reciente que contiene todas las características que pretende usar (generalmente, el último SDK disponible) y establecer la configuración de compilación "Destino de implementación iPhone" a la versión más antigua del sistema operativo en el que desea ejecutar.

Luego debe asegurarse de comprobar, en tiempo de ejecución, las características que pueden no existir en los sistemas operativos anteriores.

+0

respuesta clara y simple –

3

"Base SDK" es el SDK máximo que su aplicación puede admitir. Aquí hay un límite estricto: no puede seleccionar un SDK futuro y no publicado.

"Destino de implementación" es el SDK mínimo que está dispuesto a admitir. Es cuán atrás en el tiempo estás dispuesto a ir.

Parece que Xcode crea una dependencia espuria en "Objetivo de despliegue". Por ejemplo, no puedo desarrollar en mi iPod iOS 5.1.1 con Xcode 4.5.2 (Xcode 4.5.2 está emparejado con iOS 6.0), aunque las API y Simuladores 4.3, 5.0 y 5.1 están instalados en esta instalación. Necesito usar el simulador o el conector en mi iPhone con iOS 6.0.

Los juegos que Apple está jugando también parecen estar causando problemas con las aplicaciones. Mi copia comprada de Elements no se sincronizará a través de iTunes con el iPod porque Elements necesita una versión más nueva de iOS para ejecutar (se sincroniza y funciona bien en mi iPhone con iOS 6.0).

Tengo dos iPads y uno es 4.3. Me estremezco al pensar qué lío causará.

1

En general;

Configure BASE SDK con el último SDK que esté dispuesto a admitir y probar.

Establezca el destino de implementación en la versión más baja de iOS que esté dispuesto a admitir y probar.

Si utiliza las funciones de Base SDK no disponibles en el SDK de destino de la implementación, la aplicación se bloqueará en el tiempo de ejecución en dispositivos más antiguos, por lo que las pruebas son vitales.

Un proceso alternativo/complementario sería utilizar Deploymate http://www.deploymateapp.com/ que realiza un análisis de código estático para identificar problemas.

Si eres del mundo de Android las analogías son tales;

TargetSDK -> Base SDK

MinSDK -> Destino de despliegue

Lint -> Deploymate

Cuestiones relacionadas