2008-12-19 8 views
7

El iPhone SDK actual (a partir de diciembre de 2008) me permite elegir entre 3 versiones cuando quiero crear una aplicación: 2.0, 2.1, 2.2. - Ignoraré 2.1 a continuación.¿Qué versión de "Active SDK" de iPhone debería usar?

Mis suposiciones: insectos

  • 2,2 tiene más funciones API disponibles de 2,0,
  • 2.2 ha corregido desde 2.0,
  • 2.2 es compatible con versiones anteriores con 2,0 (tanto para la construcción y funcionamiento),
  • Si compilo con SDK 2.0, mi aplicación funcionará en iPhone 2.2,
  • Si compilo con SDK 2.2, mi aplicación no funcionará en iPhone 2.0.

Creo que sería mejor utilizar la versión más antigua que pueda crear la aplicación, de esta manera se ejecutará en iPhones que ejecuten sistemas operativos anteriores.

¿Pero existe el riesgo de que a mi aplicación le falte algo si la construyo con 2.0? Tal vez algunos elementos de UI más rápidos o más bonitos. Pero tal vez no hay tanta diferencia entre 2.0 y 2.2 para siquiera preocuparse por eso?

Así que mi pregunta es: ¿Qué SDK debo seleccionar?

  1. El SDK earlist que puedo construir, para ampliar mi mercado objetivo.
  2. El último SDK siempre, por lo que mi aplicación se beneficia de las mejoras, a costa de una posible reducción de mi mercado.

(Y si la respuesta es obvia, ¿por qué tengo una elección ?!)

Respuesta

2

me quedaría con la opción # 1 - compilarlo a 2,0. Esto es lo que hacemos para nuestra aplicación. Todavía hay mucha gente corriendo el antiguo 2.0 O/S y si compila a 2.2 su aplicación no se ejecutará en su dispositivo.

Dicho esto, si desarrolla su aplicación y se encuentra con un error y descubre que se ha solucionado en una versión de firmware posterior, es posible que no tenga muchas opciones a menos que haya una solución. También hay nuevas características agregadas a cada nueva versión, aunque no conozco una lista completa de cuáles son esas características (a nivel de API).

+0

Tenga en cuenta que hay cambios en 3.0 que no son compatibles con 2,0 aplicaciones (en la beta al menos). Creo que no es tan fácil como el mínimo denominador de commone, aunque el consejo de Marc es bueno. –

27

Puede usar el iPhone OS 2.2 SDK y aún compilar para iPhone OS 2.0; la forma de hacer esto es el mismo que para Mac OS X. El SDK utiliza determina la más reciente versión del sistema operativo que desea uso API de, mientras que el Destino de despliegue de utiliza determina el menos reciente versión del sistema operativo que desea ejecutarse en. En general, ambos deberían establecerse en el nivel del proyecto en Xcode.

Para que pueda compilar su software contra el iPhone OS 2.2 SDK y, cuando se ejecute en dispositivos con la versión 2.2 o posterior instalada, use las características 2.2. Pero puede establecer su destino de implementación en 2.0 y , no en, use las características 2.2 cuando se ejecuta en un dispositivo con un sistema operativo pre-2.2 instalado y su aplicación debería funcionar bien.

+1

¡Su respuesta debería ser la aceptada aquí, definitivamente es la mejor! Incluso los desarrolladores a largo plazo carecen de ese conocimiento. Y, como dijiste, si dinámicamente decides qué características utilizar (en tiempo de ejecución, no en tiempo de compilación), puedes usar las funciones 2.2 y ejecutarlas en 2.0 (simplemente no intentes usar esas funciones allí). Hacemos lo mismo para usar las características 10.5/10.6 y aún así ejecutar en 10.4. – Mecki

+0

@Mecki: ¿entonces, en esencia, usted construye una sola aplicación con N rutas de código dentro, habilitando/deshabilitando características por revisión del sistema operativo, o implementándolas de manera diferente para diferentes versiones? ¡Yikes ... pero quién dijo que la compatibilidad con versiones anteriores era fácil! – Bogatyr

+0

@Bogatyr: De cualquier manera. Puede decidir que la característica A solo funciona si el sistema operativo es> 10.5. Entonces tienes 10.5/10.6, esta característica funciona, tienes 10.4, no. O puede ofrecer un código alternativo; en 10.5/10.6 la vista cambia con una hermosa animación, en 10.4 simplemente "intercambia" (no hay pérdida de funcionalidad, simplemente se ve menos bella). Por lo general, es solo un solo si, verificando la versión del sistema operativo y luego hacer esto o hacer eso y hacerlo, puede no ser nada o un mensaje "no compatible" o puede ser una alternativa menos elegante, pero funcional equivalente. – Mecki

0

En mi prueba, si utiliza 2.0 no se puede hacer uso de la funcionalidad de la aplicación insignia - que aparece en el punto 2.1 (por lo que puede que tenga que utilizar al menos ese nivel)

Tim

+0

Pude usar la funcionalidad de insignia con una compilación 2.0. La documentación dice que UIApplication.applicationIconBadgeNumber está "Disponible en iPhone OS 2.0 y posterior". ¿O te refieres a algo más? – squelart

Cuestiones relacionadas