2010-05-26 16 views
7

Tengo un proyecto que apenas está utilizando Android 1.5 para la programación, pero con la proliferación de otros teléfonos y algunas características interesantes en Android 2.2, nos gustaría apoyar las funciones sin perder el apoyo a 1,5 o bifurcar un nuevo código base. ¿Es posible hacerlo con Android SDK?¿Hay alguna manera de usar las características en Android 2.1/2.2 mientras mantiene una versión de minSDK en 3?

Tengo un sentido de la forma "fea" de hacerlo, como mantener la misma base de código pero tener un sistema de compilación que construye diferentes versiones para las plataformas y mantener diferentes archivos Java que se agregan en nuestro de la compilación según la versión seleccionada. Espero que alguien más haya resuelto el problema basándose en las muchas versiones de aplicaciones en el mercado que se ejecutan en múltiples versiones de Android.

+0

duplicado de http://stackoverflow.com/questions/4968988/what-if-i-want-to-release-an-update-with-higher-minsdk-than-the-one-on-the- market/4969477 # 4969477 – rds

Respuesta

6

nos gustaría apoyar las características sin perder el apoyo a 1,5 o se bifurcan un nuevo código base. ¿Es posible hacer con Android SDK?

Sure. Las técnicas han existido por alrededor de una década más o menos.

Opción # 1: utilizar la reflexión para acceder a nuevas clases (o nuevos métodos de las clases existentes) en tiempo de ejecución. See here for an example.

Opción n.º 2: utilice la carga de clases condicional, creando una interfaz más dos implementaciones (una para una API anterior, una para una API más nueva) y cargando la implementación correcta en tiempo de ejecución. Dado que la implementación más nueva no se cargará en un dispositivo más antiguo, el hecho de que la implementación más nueva use clases o métodos que el dispositivo antiguo no tenga no representará un problema. See here for an example.

+2

También tenga en cuenta que para los atributos XML puede usarlos libremente y las versiones anteriores de la plataforma los ignorarán. Por ejemplo, puedes compilar contra el SDK 2.2 para usar el nuevo atributo para decir que puedes instalarlo en la tarjeta SD, y tu aplicación continuará ejecutándose en plataformas más antiguas sin hacer nada más. – hackbod

+0

Commonsware, su otro ejemplo, PickDemo.java es más útil para mostrar contactos en API 4 y API posteriores. – Yar

+0

@Yar: No creo que el 'PickDemo' existía en marzo de 2010. :-) Aquí hay un enlace a él de todos modos: https://github.com/commonsguy/cw-omnibus/tree/master/Contacts/Pick – CommonsWare

Cuestiones relacionadas