Fragmentación en Android: problemas y soluciones

Según los últimos datos de IDC y Gartner, correspondientes al cuarto trimestre de 2012, la cuota de mercado de Android ronda el 70%. Es el sistema operativo móvil más utilizado, pero sigue arrastrando una incógnita: la fragmentación.

¿Qué es la fragmentación?

La fragmentación es un efecto secundario de una de las señas de identidad de Android: la diversidad. Existen multitud de dispositivos, pero no todas aplicaciones son compatibles. 

Hay varios tipos de fragmentación:

  • El más habitual es por la variedad de versiones disponibles en el mercado. Quieres instalarte una app pero no puedes porque requiere una versión de Android superior a la que tienes en el dispositivo.
  • Existe fragmentación relacionada con las diferentes especificaciones de los dispositivos, como tamaño de la pantalla, resolución, memoria, procesador, etc. La consecuencia es la incertidumbre en el resultado, ya que no puedes estar 100% seguro de que el contenido se va a ver como tú pretendías al desarrollar la app.
  • Los fabricantes de dispositivos también contribuyen en la fragmentación, poniendo capas de personalización a sus versiones de Android, como sucede en el caso de HTC, Samsung o LG, entre otras. Las reticencias a la hora de actualizar modelos antiguos con las versiones más nuevas de Android se debe al coste de adaptar esas capas de personalización. Básicamente, les sale más barato sacar un modelo nuevo con el sistema actualizado, a pesar del rechazo que esta medida pueda generar en los usuarios que han confiado en la marca y que siguen disponiendo de un dispositivo con capacidad para seguir operativo.

Los damnificados: usuarios y desarrolladores

El problema de la fragmentación afecta tanto a los usuarios como a los propios desarrolladores. Para los usuarios, está claro: no pueden usar todas las aplicaciones disponibles para la versión del sistema operativo que tienen instalada, y algunas no se verán con la calidad deseada.

En cuanto a los desarrolladores, la fragmentación también nos supone un problema, puesto que programar teniendo en cuenta la retrocompatibilidad es mucho más complicado que programar directamente para la versión más actual. Hay que invertir más tiempo, en adaptar el contenido, tener en cuenta los diferentes terminales y lidiar con versiones antiguas del sistema operativo.

Es habitual leer reviews en Google Play del tipo “no funciona en mi Samsung Galaxy”. Hacer que una app funcione bien en todos los dispositivos no es imposible, pero cuanto más compleja sea la app, más difícil resulta solucionar el problema. Es por esto que los desarrolladores que trabajamos con Android solemos tener  un montón de dispositivos con diferentes versiones de Android.

Es posible que funcione bien en todos, si haces todo como debe de hacerse, con cuidado, muchísimas pruebas, siempre pensando en que todos los elementos de la interfaz van a ser dinámicos, etc,. Pero insisto en que es extremadamente difícil y requiere de mucho feedback de los usuarios.

Las limitaciones de Google para evitar el problema de la fragmentación

Google lo tiene difícil para reducir el problema de la fragmentación. Desde el principio Android se ha concebido como un sistema abierto a cualquier plataforma. De hecho, ya lo podemos ver instalado en coches, neveras, televisores y otros dispositivos que no son ni teléfonos ni tablets.

Las iniciativas que ha tomado hasta ahora no han tenido todo el efecto deseado, pero algo se notan. Hace un par de años se anunció una “alianza” entre Google y los mayores fabricantes de móviles, para ocuparse del problema, pero no dio el resultado que se esperaba. El año pasado propusieron enviar a los fabricantes más importantes kits de desarrollo de las versiones “venideras” de Android, con la suficiente antelación para que sus móviles, al salir al mercado, vinieran de serie con las versiones más actuales. Se han llegado a lanzar dispositivos nuevos con dos versiones “major” de desfase (por ejemplo con Gingerbread 2.3, cuando ya estaba funcionando Jelly Bean 4.1-4.2).

También es loable el esfuerzo que han puesto en fomentar la retrocompatibilidad, como la librería de soporte de Android (v4) de Google. Gracias a determinados desarrolladores y sus proyectos opensource (ActionBarSherlock, ViewPagerIndicator, HoloEverywhere, NineOldAndroids, etc.) se puede programar aplicaciones con look moderno que funcionen en sistemas Android de 3 y 4 años de vida sin demasiado esfuerzo.

La fragmentación no es sólo problema de Android

Generalmente se habla de Android, pero en sistemas operativos móviles nadie se libra. El problema de la fragmentación también se da en otras plataformas.

Os doy algunos ejemplos:

  • Los usuarios de iPad 1 no pueden correr iOS 6 ni ninguna aplicación que tenga como requisito mínimo dicha versión del sistema operativo. Sin embargo, los usuarios de iPhone 3GS, un dispositivo mucho más antiguo, sí pueden.
  • Las 4 pulgadas y el aspect ratio de 16:9 del iPhone 5, nos obligan a adaptar el diseño de las apps específicamente para este dispositivo.
  • Hay bastantes usuarios de iOS estancados en la versión 4.3 al haber hecho Jailbreak a sus dispositivos. Los desarrolladores dejamos de dar soporte a versiones antiguas, porque incrementa la complejidad del desarrollo y no suele ser rentable la inversión, así que, en consecuencia, estos usuarios no podrán ejecutar un gran número de apps nuevas.
  • Los usuarios de Windows Phone 7 no van a poder actualizar a Windows Phone 8. Un autogol enorme de Microsoft. Me pregunto si se lo perdonarán aquellos que confiaron en WP7.

Soluciones

Fragmentación siempre va a haber. Pero hay que intentar minimizarla siempre que sea posible. En Amazon, se han enfrentado al problema de la fragmentación en los Kindle Fire con una feature llamada “device targeting”. Consiste en sacar apps para dispositivos específicos evitando cubrir todas las combinaciones dispositivo-sistema operativo. Es decir, lo mismo que con iOS aplicado a Android.

Lo ideal es que fabricantes y creadores de sistemas operativos móviles se pusieran de acuerdo para ceñirse lo más posible a la versión “stock”, para que no les costase tantísimo actualizar sus dispositivos, ni tardasen medio año en sacar el sistema actualizado para sus usuarios.

Autor: Nacho López

Anuncios

Un comentario en “Fragmentación en Android: problemas y soluciones

  1. Yo no catalogaría el hecho de no poder descargar nuevas aplicaciones por haber hecho jailbreak como fragmentación… si hackeas el dispositivo es bajo tu responsabilidad y no creo que eso se le pueda achacar a Apple. (si no ha salido chip para hackear la cada vez más próxima Playstation 4, debemos decir que Sony tiene fragmentación en sus consolas? 😉 )

Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s