Home » Análisis » Análisis, Google lanza Android O para desarrolladores

Análisis, Google lanza Android O para desarrolladores

Sí. Apple Coding. Desarrollo en entornos Apple. Y es de todos sabidos que Apple es la plataforma escogida por infinidad de desarrolladores Android para realizar sus proyectos. Así que no podíamos pasar por alto el nuevo lanzamiento que hoy ha publicado Google: lo que por ahora se llamará Android O, hasta que encuentre un dulce que le de nombre (y que empiece por O). Mi apuesta ya es clara, como puede verse por la portada.

Android O Logo

Android O o Android 8, si nos parece mejor llamarlo así, es la nueva major version de los de Mountain View, una versión que promete afinar aun más la experiencia de usuario, mejorar la seguridad y realizar un cambio esencial: controlar mejor los procesos del sistema para conseguir un mejor rendimiento de batería. Es de todos conocido que iOS, como plataforma de desarrollo, desde que incorporó multitarea lo que ha hecho ha sido limitarla. Solo podemos acceder a ella a través de determinados servicios, justificados por la usabilidad de la app. Entre ellos: localización para GPS o aplicaciones de fitness, música para aplicaciones que deben reproducir sonido en segundo plano, llamadas de vídeo en segundo plano… Esto tiene un motivo principal: las funciones más normales están soportadas y al ser servicios del sistema, controlan el consumo de recursos y el uso de batería, optimizándolo.

Pero Android es (era) otro mundo: en este sistema la limitación de procesos en segundo plano y la comunicación entre apps es mucho más abierta. Hasta el punto que algo tan inseguro como que una app lea el contenido de un SMS para rellenar un dato por ti, está soportado. Esto ha sido siempre un caballo de batalla importante en la lucha entre iOS y Android: mientras el primero limita por conservar batería y recursos, el segundo da más libertad aunque castigue precisamente ese uso de recursos y ese uso de batería.

Pero Google se ha dado cuenta que ahí tiene un problema, por lo que uno de los focos de la nueva versión va a estar en limitar el uso en segundo plano de las apps. No al nivel de iOS, pero sí de una forma importante. De esta forma, siguen la senda de algunos cambios que ya hicieron en la anterior versión 7 (Nougat). El foco estará en tres elementos esenciales: comunicaciones implícitas, servicios en segundo plano y actualizaciones en la localización. De esta forma, las apps tendrán un efecto menor en el uso de la batería y la autonomía del sistema mejorará. Android O pondrá el foco en restringir qué puede hacer una app cuando el usuario no la tiene activa en ese momento.

Android O Notificaciones

Limitaciones en los servicios en segundo plano

Mientras una app está inactiva, habrá límites en el uso de servicios en segundo plano que no aplicarán a aquellos servicios en primer plano de los que el usuario sea plenamente consciente (como una carga o descarga de Dropbox mientras la app no está activa). No obstante, estas limitaciones solo aplicarán a las apps cuyo target sea Android O y las que usen el nivel 25 de API o inferior no se verán afectadas. Será el sistema quien decida qué es un servicio o no en segundo plano. Si la app tiene una actividad visible, pide información por teclado, es un servicio de fondos de escritorio, un listener de notificaciones o un servicio de voz o texto, no se considerarán en segundo plano. Pero todo lo demás sí. En el momento que una app no tenga ninguna ventana de actividad visible se considerará en estado idle y entrará en segundo plano, parando cualquier servicio que tuviera en ese momento activo. Existirá la posibilidad de incluir la app en una “lista blanca” que permita que siga ejecutándose sin problema durante unos minutos sin limitaciones, pero solo por unos momentos. Esto tiene una consecuencia directa muy importante: se acabó que las apps de mensajería o fotos tengan servicios en segundo plano permanentemente pendientes de actualizaciones.

En el caso de un Whatsapp (o cualquier otra app de mensajería) o incluso una app de fotografía (o un Twitter), los desarrolladores deberán cambiar el actual uso de un proceso en background que está permanentemente oyendo cualquier actualización de información. Ahora, deberán integrar un trabajo programado que periódicamente pregunte al servidor si hay cambios, y en caso de no haberlos esta tarea se eliminará. Por lo tanto, incluso un servicio de correo push no funcionará en tiempo real, a no ser que dependa de un servicio de notificaciones externo y no de una alerta generada por la propia app o servicio en segundo plano.

También habrá limitaciones a este respecto en las comunicaciones de forma que las apps para Android O ya no podrán registrar receptores de comunicaciones de forma implícita en los manifiestos de la app, solo podrán hacerlo con los explícitos. Si una app tiene registrado hacer un determinado proceso cuando suceda un evento de sistema, ahora no podrá y tendrá que registrar un trabajo que pregunte por estados de forma periódica. Esa es la esencia básica: sustituir permanentes procesos en segundo plano por jobs que se lanzan periódicamente para preguntar por estados o cambios.

Limitaciones en localización

Lo primero y principal es que cualquier proceso en segundo plano solo tendrá permiso para refrescar la localización (a nivel de sistema) unas pocas veces por hora. El número se definirá en la versión final mientras trabajan con los desarrolladores para conocer sus necesidades de uso de esta. En todos los demás casos, el uso de la localización estará prohibida salvo que tu aplicación se ponga en primer plano o pongas el servicio que ejecuta la app en primer plano (en modo foreground) como haría una navegador GPS o un reproductor de música. En el momento que se acceda a la localización siempre se mostrará el icono en el sistema y cuando ya no necesitemos estos datos tendremos que parar el proceso en primer plano.

También se permitirá si hacemos uso de elementos de la API de geolocalización, aunque la app deberá mostrar una notificación de este hecho en la zona de notificaciones o si hacemos uso de un listener de localización pasivo pero siempre desde una app que esté corriendo en primer plano.

Incorporaciones funcionales

Como funciones dentro del sistema, Android 8 incorpora novedades interesantes en el campo de las notificaciones que entendemos iOS pondrá tarde o temprano. Algo tan simple como la agrupación de las notificaciones de una misma app o un conjunto de estas por categorías. Las apps tendrán la posibilidad de categorizar las notificaciones y permitir al usuario verlas según el tipo de las mismas (por ejemplo, diferentes categorías de noticias en una app de un medio digital). Además, permite nuevas formas de agrupar y ver estas más fácilmente.

Otra interesante incorporación es una API de autorelleno, que permitirá a las apps que suplan este tipo de contenidos (como un gestor de claves) el tener una librería a través del sistema para recibir estos datos de forma segura. Los usuarios podrán elegir qué apps quieren usar para esta función de la misma forma que ahora pueden cambiar, por ejemplo, de tipo de teclado.

Máscaras de iconos

Además de estas funciones, Android 8 traerá otras novedades como el PIP (Picture in Picture) a la gama móvil (y también tablets) de forma que podamos ver una ventana flotante de vídeo en segundo plano mientras hacemos otra cosa. En cuanto a presentación, la nueva versión es capaz de incluir tipografías en layouts XML, tanto de tipo Truetype como Openfont y además tiene un curioso formato de iconos adaptativos que eligen diferentes formas en los mismos así como animaciones que alerten al usuario de interacciones con el mismo.

Android ahora tiene soporte para gamut de color amplio (el estándar DCI-P3 que soportan los iPad Pro) y soporta codecs de audio de alta calidad LDAC, además de integración con APIs AAudio para sonido profesional (especialmente indicado para apps que consuman muchos recursos de sonido y requieran una latencia muy baja). Tiene importantes mejoras en las views de navegador que permiten gestionar los errores y estados de la app activando un modo multihilo que mejora la eficiencia y además, podemos usar los filtros de Google Safe Browsing para evitar que la app vaya a sitios no verificados.

Incluye optimizaciones en el motor de tiempo de ejecución que aumentan el rendimiento en casi dos veces con respecto a sistemas anteriores y nuevas APIs de Java 8 como java.time que mejoran las posibilidades a la hora de realizar los desarrollos. Por último, algo muy curioso: el soporte de teclado en la navegación. Ya no solo podremos manejar Android a nivel táctil si no que se han incluido comandos que permiten moverse por los diferentes menús a través del uso de teclado.

Conclusiones

Es la primera versión, aun no hay fechas claras de lanzamiento pero se entiende que para otoño será cuando se lanzará la versión final. Lo único de lo que no se habla en ningún sitio es del control de versiones: Android sigue teniendo el mismo problema que va empeorando con cada nueva versión, la fragmentación. La única forma (salvo excepciones) de actualizar un terminal es comprar uno nuevo y el hecho que muchas de estas funciones y mejoras no sean obligatorias a no ser que se desarrolle específicamente para esta versión O (u 8) dilata aun más en el tiempo la posibilidad (u obligación) para que los desarrolladores mejoren sus desarrollos.

Hemos de partir de la base que hoy día hay clientes que siguen pidiendo soporte de versiones 4.x y que se entiende un mínimo razonable, desarrollar como target para la versión 5 (una versión de hace más de 2 años). No sé dónde acabará esta política por parte de Google, porque es una pena que un sistema que incorpora interesantes novedades como las que hemos contado, y que se va puliendo cada día más, no luzca debido a que habremos de esperar al menos 2 o 3 años para ver un porcentaje lo suficientemente importante de dispositivos con esta versión 8 instalada como para tener presente sus cambios y verlos implementados. Momento en que ya habrá una versión 11… algo incomprensible que demuestra que Google se equivocó absolutamente en su política de actualización del sistema, y los mayores perjudicados como siempre, son los usuarios.

Quitando estos hechos, personalmente creo que Android 8 no hace sino mejorar aun más un sistema cada más maduro, más pulido y con interesantes y necesarias incorporaciones. Una pena que sea trabajo en balde (por ahora). Por cierto, también se ha lanzado la r14 de la NDK de Android. Un saludo y Good Apple Coding.

Android O para desarrolladores | Descargar
Android NDK r14 | Descargar

Acerca de Julio César Fernández

Analista, consultor y periodista tecnológico, desarrollador, empresario, productor audiovisual, actor de doblaje e ingeniero de vídeo y audio.

Otras recomendaciones

Diseñando para el iPhone X

iPhone X (léase 10). El nuevo y más deseado dispositivo de Apple, no carente de …