Qué es y qué no es Android Jetpack

Carlo Huamán
OrbisMobile
Published in
9 min readJun 27, 2018

El Google I/O de este año trajo consigo muchas sorpresas para todos los productos de la gran G, sea para Google Assistant, Google Maps, Android Things, etc; pero de entre todas las novedades, más aún en el mundo Android, Google nos trajo Android Jetpack de quien les vengo a hablar hoy.

Recuerdo que estaba siguiendo por streaming el Google I/O, cuando comenzaron a hablar de las novedades en Android. Me paré unos segundos a la cocina a tomar un vaso con agua cuando escuche hablar Android Jetpack, así que volví a mi asiento rápidamente para ver de qué trataba y la primera imagen con la que me topé fue esta:

Fuente: Android Developers Blog

Y por alguna razón lo primero que pensé fue:

Y comenzaron comentarios en la oficina como: ¡Ey mira el nuevo Storyboard de Android!, ¡Ahora Android tendrá su Storyboard como iOS!, etc.

Pero la verdad es que Android Jetpack no es el nuevo “Storyboard” de la plataforma Android. Entonces, ¿Qué es Android Jetpack?.

Android Jetpack ayuda a acelerar el desarrollo de Android con componentes, herramientas y guías que eliminan las tareas repetitivas, permitiendo crear de forma más rápida y sencilla aplicaciones de alta calidad y testeables. | Android Developer Page

Hasta esta parte entendemos que Android Jetpack no es ningún Storyboard, no es ningún plugin para Android Studio que te haga aparecer mágicamente un Storyboard, ni nada que incluya la palabra Storyboard. Es mucho más, es una guía arquitectural apoyada por nuevas librerías, herramientas como Android Studio y conceptos que nos ayudan a mejorar el desarrollo en Android. Entonces podemos afirmar que Android Jetpack es:

Es una guía arquitectónica, soportada por un conjunto de librerías y herramientas en cuatro áreas clave del Desarrollo de Android.

Las cuatro áreas clave que soportan a Android Jetpack son: Arquitectura, Interfaz de Usuario, Fundamento y Comportamiento.

Áreas de Android Jetpack

Cada área tiene sus propias características, componentes, librerías y definiciones. Algunos ya existentes desde mucho antes en el mundo de Android, como las Notificaciones, Fragmentos, AppCompat, Permisos, Media, etc. Android Jetpack sólo los ha organizado y separado por áreas, ayudándonos a tener un mejor panorama de todo el mundo Android, al mismo tiempo que en algunos casos, se ha agregado herramientas y librerías que ayudan su implementación que en años anteriores suponía el uso de mucho código boilerplate.

Esta “colección de librerías”, son individualmente adoptables y construidas para trabajar juntas mientras aprovechan todas la potencia de Kotlin, lo hace aún más productivo.

En este post hablaremos de los nuevos componentes que Android Jetpack trae a cada área (las cuatro mencionadas anteriormente) para potenciarlas y/o mejorarlas. Dado que si hablamos de cada componente existente como tal quizás necesite al menos unos 100 posts más para poder terminar 😆.

Arquitectura (Architecture)

Google nos había dado un adelanto de esto en el anterior Google I/O 2017, donde presentó la Arquitectura de Componentes. Tal como su nombre menciona, una arquitectura base para todas nuestras aplicaciones Android bajo un patrón MVVM.

Hace unas semanas, mi amigo Carlos Leonardo Camilo Vargas Huamán dio un meetup acerca de esta arquitectura donde la explica al detalle.

Y como mencioné antes, Android Jetpack está dando mejoras a cada área de Android y una de ellas es a su arquitectura, sumando tres nuevos componentes: Navigation, Pagging y Workmanager.

Navigation

Este nuevo componente nos permite estructurar fácilmente nuestra interfaz de usuario, creando flujos más limpios al momento de hacer nuestra aplicación. Al mismo tiempo de tener compatibilidad con los Fragmentos, facilita enormemente la tarea de los clásicos FragmentTransactions y el control que este conlleva como el attach/detach de estos. Sumado a que Android Studio nos dará una herramienta visual que ayudará a ver el flujo que estamos construyendo y todos los eventos necesarios para estos.

Ahora si esta imagen tiene sentido.

Pagging

La Librería de paginación facilita la carga de datos dentro de un RecyclerView, teniendo la data sesgada y progresiva conforme sea requerida. Podemos cargar datos para la paginación desde el almacenamiento local, red o ambos. La librería de Pagging permite el trabajo conjunto con Room, LiveData y RxJava, siendo libre de escoger al momento de su implementación sobre una aplicación que ya tengamos construida.

Workmanager

WorkManager es una nueva y potente librería que proporciona un gran apoyo para trabajos en segundo plano, pero a diferencia de los clásicos Asyntask o Executors; Workmanager se basa en restricciones que necesita una tarea para ser garantizada con éxito al momento de cumplirla. Tomando por ejemplo si deseamos subir una foto al servidor pero deseamos que solamente se realice esta tarea si el celular esta conectado a corriente y conectado a internet. Podemos hacer esto con muchas líneas de código, validaciones y horas de codeo o, crear nuestro Workmanager 😄.

Interfaz de Usuario (UI)

En la interfaz de usuario ha habido cambios interesantes para Wear OS (Android Wear) y Android Auto, al mismo tiempo que APIs como Pallette se siguen actualizando para su compatibilidad con las demás versiones de android.

Entre estas librerías tenemos a EmojiCompat que nos permite tener una compatibilidad de Emojis entre cada plataforma y así evitar los clásicos “☐” cuando tratamos de compartir un emoji.

Teniendo la fuente de traducción para los Emojis como soporte, esta librería nos permite tener la compatibilidad para cada carácter buscado e interpretarlo como el Emoji correcto que le corresponda.

Fundamento (Foundation)

En este caso, la traducción es muy literal, en realidad sería Base o Cimientos, dado que esta área de Jetpack es la encargada de dar “asistencia” a todas las demás áreas de Android Jetpack como tal.

Los componentes de “Foundation” proporcionan capacidades principales del Sistema, “Kotlin extensions”, soporte para Multidex y pruebas automatizadas.

En el caso de las capacidades del sistema, podemos hablar de la librería AppCompat que nos provee distintos paquetes/módulos para poder dar soporte a las distintas versiones de Android. Jetpack sin embargo trajo cambios para este tipo de librerías, y uno de los cambios fue unificar la estructura de paquetes de las librerías de soporte bajo el nombre de AndroidX.

AndroidX

Todos aquellos que somos programadores Android, somos conscientes de todo el lío que es la compatibilidad con versiones anteriores de las librerías de soporte como: v4, v7, v13, v8, etc, etc. ¿Entonces cómo Google está arreglando esto?

Jetpack está implementando una nueva estructura para esclarecer qué paquetes se incluyen con el sistema operativo Android y cuáles con el APK de la aplicación. En el futuro, la jerarquía de paquetes android.* se reservará para los paquetes Android que se envíen con el sistema operativo; lo demás paquetes se publicarán bajo la nueva jerarquía de paquetes androidx.*:

Entre los cambios tenemos:

Refactorización de Paquetes Java a androidx:

androidx.<feature>.ClassName

Nomenglaturas Maven más consistentes:

androidx.<feature>:<feature>-<sub-feature>

Con lo anterior dicho, adiós -v4, -v7- v13, etc etc etc.

Fuente: Medium — Mindorks

Material Design 2.0

Material Design fue presentado en el 2014 junto a Android 5.0 Lollipop y se considera un hito en la historia Android, pues rompía con todo los esquemas de diseño hasta entonces. Para quienes no lo conozcan, Material Design es el nombre que recibe el diseño de Google desarrollado por Matías Duarte. Se basa en superficies planas, con elementos muy coloridos y niveles de capas diferenciados. Google apostó fuerte por Material Design, no solo en Android sino en wearables, televisores, ordenadores y páginas web. Un mismo diseño fácil de identificar y asociar con la compañía.

Sin embargo desde ya hace unos meses, Google ha ido liberando de a pocos las guías de su nueva versión de Material Desing, muchos lo han podido comprobar en la nueva interfaz de Gmail, en su nueva aplicación Tareas, y todas bajo esta nueva línea gráfica de Material 2.0.

Fuente: Medium — Mindorks

Y todos estos nuevos componentes se irán actualizando en nuestra librerías de soporte.

KTX

Desde que se lanzó Kotlin para el desarrollo de Android, Google fue consciente que tenía un par de cosas por resolver con respecto a él. Si bien en sí el lenguaje ya era un revolución para todos aquellos que venían del mundo Java, habían algunas cosas por limar y ordenar.

Es así que el 5 de Febrero de este año Google lanzó Android KTX, un conjunto de extensiones diseñadas para escribir código Kotlin más conciso, idiomático y agradable, aprovechando las características de Kotlin tales como funciones de extensión, lambdas, parámetros nombrados y valores por defecto de los parámetros.

Entonces es así que este conjunto de extensiones Kotlin forma parte de la familia Android Jetpack, optimizando las APIs de las plataformas Jetpack y Android para el uso de Kotlin.

Ojo, Android KTX no añade ninguna característica nueva a las APIs existentes de Android, simplemente hace que Kotlin sea más simple y agradable de lo que ya es 😊.

Fuente: Android Developers Blog
Fuente: Android Developers Blog

Comportamiento (Behavior)

Aquí encontraremos componentes como las Notificaciones (tanto para Móviles como Werables), Permisos (introducidos desde Android 6), el api para compartir (Share) links, textos, etc; Media, Dowload Manager, etc.

Sin embargo el reciente agregado con Android Jetpack es Slices.

Slices

Son plantillas para la UI que pueden mostrar contenido sofisticado, dinámico e interactivo de tu aplicación con la aplicación de búsqueda de Google y, posteriormente desde otros lugares como el Asistente de Google.

Fuente: Google I/O 2018

Dicho de otra forma, si tu aplicación contiene tareas y/o almacenamiento con fotografías/imágenes, interacción con mapas, pide un auto, da recordatorios, compra tickets de cine, etc; podrás hacer que interactúe con la aplicación de búsquedas y el asistente de Google.

Si lo sé, es hermoso :’ ) 😭
Fuente: Medium — Mark Dappollone

Ahora nuestra aplicación también podrá tener estos “accesos directos” con los productos de Google para hacer nuestras aplicaciones aún más interactivas con el ecosistema Google.

La compatibilidad con Slices está integrada en Android Jetpack y puede extenderse hasta Android 4.4, llegando aproximadamente al 95% de todos los usuarios de Android 🎉🎉🎉🎉.

--

--

Carlo Huamán
OrbisMobile

#Jesus is the way, the truth and the life | Dad, Mobile Architect @ BCP, Assistant #GDE | 🚴🥭🍫🍊 | bio.link/tohure