Así que hemos visto la vista previa de SDK y las cosas nuevas como ActionBar y Fragments. Hacer muchas llamadas de método será inevitable para hacer uso de esto, entonces, ¿qué estrategias hay para mantener una versión de la aplicación, que me permitirá usar todas las cosas nuevas y elegantes, pero también funcionar en dispositivos con 2.3 o menos? Mi aplicación apunta a 1.5 - 2.3 en este momento.Estrategias para Honeycomb y compatibilidad con versiones anteriores
Respuesta
Las mismas API de fragmentos están ahora disponibles como static library para su uso con versiones anteriores de Android; es compatible de nuevo con Android 1.6.
Hay algunos trucos que puede utilizar para ver si las diversas nuevas API están disponibles para su aplicación. En términos generales, es probable que desee crear dos conjuntos de actividades alternativos, uno que use las nuevas y sofisticadas API (ActionBar, Animators, etc.) y otro conjunto que no lo haga.
El siguiente código muestra cómo puede usar la captura de reflexión y excepciones para determinar la disponibilidad de las API de fragmentos y la verificación de versiones para confirmar si las otras API de Honeycomb están disponibles.
private static boolean shinyNewAPIsSupported = android.os.Build.VERSION.SDK_INT > 10;
private static boolean fragmentsSupported = false;
private static void checkFragmentsSupported() throws NoClassDefFoundError {
fragmentsSupported = android.app.Fragment.class != null;
}
static {
try {
checkFragmentsSupported();
} catch (NoClassDefFoundError e) {
fragmentsSupported = false;
}
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent startActivityIntent = null;
if (!shinyNewAPIsSupported)
startActivityIntent = new Intent(this, MainNonActionBarActivity.class);
else
startActivityIntent = new Intent(this, MainActionActivity.class);
startActivity(startActivityIntent);
finish();
}
En general, puede utilizar las mismas definiciones de disposición. Donde estén disponibles los Fragmentos, inflarás cada diseño dentro de un Fragmento diferente, donde no es probable que desees usar las etiquetas <include>
para incrustar varias de ellas en un diseño de la Actividad más complejo.
Un trabajo más detallado a través de la forma de escribir el código para apoyar la compatibilidad hacia atrás en el panal se puede encontrar aquí: http://blog.radioactiveyak.com/2011/02/strategies-for-honeycomb-and-backwards.html
Puede ser útil el Reto Meier's article on backwards-compatibility, específicamente la sección titulada "Manejo de clases faltantes".
Todavía tengo que mirar el SDK de Honeycomb pero, como usted, espero que sea bastante fácil y sin complicaciones usar las nuevas funciones sin poner en peligro la compatibilidad con dispositivos más antiguos.
También puedes ver este post, que da más ejemplos de cómo trabajar con múltiples versiones de plataforma: http://android-developers.blogspot.com/2010/07/how-to-have-your-cupcake-and-eat-it-too.html – adamp
He leído ambos, pero parece que Honeycomb estará más involucrado, especialmente con cosas como Fragments y ActionBar. ¿Crees que usar estas técnicas será suficiente? –
Convenientemente, Google's Dianne Hackborne ha publicado a blog entry que cubre este tema exacto. Google dice que proporcionarán bibliotecas estáticas para que las versiones anteriores de Android también puedan usar fragmentos.
Bueno Google acaba de anunciar nido de abeja será única tableta: http://www.pcmag.com/article2/0,2817,2379271,00.asp
lo tanto, si el dispositivo está destinado a móvil sólo esto puede incluso no ser un problema.
oficial del androide que le ayudará a lograr ActionBar from 1.6 to 4.x
- 1. Compatibilidad con versiones anteriores y servicios web
- 2. Deserialización compatibilidad con versiones anteriores
- 3. ISerializable y compatibilidad con versiones anteriores
- 4. .lib y .dll Compatibilidad con versiones anteriores
- 5. Versiones de clase para admitir la compatibilidad con versiones anteriores
- 6. MS Office PIAs "compatibilidad con versiones anteriores"
- 7. Compatibilidad con versiones anteriores de Java 6 Source y SQL
- 8. iOS 6 API y compatibilidad con versiones anteriores
- 9. Mejores prácticas para la compatibilidad con versiones anteriores de API
- 10. Compatibilidad con versiones anteriores en .NET con BinaryFormatter
- 11. Temas de Android Holo con compatibilidad con versiones anteriores
- 12. Renombrado de funciones con preservación de compatibilidad con versiones anteriores
- 13. Compatibilidad con versiones anteriores de SQL Server en Entity Framework?
- 14. WCF Service - Problema de compatibilidad con versiones anteriores
- 15. Integración de Kiosco sin romper la compatibilidad con versiones anteriores
- 16. Windows API Codepack Compatibilidad con versiones anteriores en Windows XP
- 17. ¿Cuán importante es la compatibilidad con versiones anteriores?
- 18. Compatibilidad con versiones anteriores del repositorio de Git
- 19. ¿Compatibilidad con versiones anteriores o posteriores en Android?
- 20. ¿Cómo mantener la compatibilidad con versiones anteriores mientras utilizas Android API Level 15?
- 21. ¿Cómo se puede separar limpiamente el código de compatibilidad con versiones anteriores del código principal?
- 22. ¿Cuánto tiempo y esfuerzo debe gastar un proyecto en compatibilidad con versiones anteriores?
- 23. ¿Cómo puedo evitar los métodos en desuso y mantener la compatibilidad con versiones anteriores?
- 24. ¿Qué tan bueno es el soporte de jQuery para compatibilidad con versiones anteriores?
- 25. Compatibilidad con versiones anteriores de .NET compact framework 3.5 y 2.0
- 26. Haciendo servicios WCF compatibles con versiones anteriores
- 27. Compatibilidad con versiones anteriores de la serialización de vector (de) con Boost.serialization
- 28. ¿Puede eliminar la finalización de una definición de clase romper la compatibilidad con versiones anteriores?
- 29. Uso de las características de iOS 5 sin romper la compatibilidad con versiones anteriores
- 30. Capistrano: limpiar versiones anteriores
Además, si la única API adicional que necesita es la barra de acciones, eche un vistazo a la biblioteca que he escrito, que es una extensión de la biblioteca de compatibilidad, que solo agrega eso. Proporciona una única API para la barra de acciones y también permite el uso de un único tema. Puede encontrar más información en http://actionbarsherlock.com. –