A medida que Android avanza podemos ver cómo los ingenieros de Google trabajan duro para actualizar y mejorar el sistema tanto para los usuarios como los desarrolladores. Es por eso que nos han vuelto a escuchar y han creado Jetpack.

Jetpack es el inicio de una nueva era, pues nos facilita la forma de trabajar de varios modos que veremos a continuación.

Este capítulo, es algo distinto a los demás puesto que lleva mucha teoría, pero es importante entenderlo porque a partir de ahora los próximos capítulos del blog estarán migrados a AndroidX.

¿Qué es Jetpack?

Pensemos en cualquiera de las apps que hemos ido desarrollando a lo largo del curso. Todas ellas son un conjunto de componentes (por ejemplo el RecyclerView o la base de datos Room). Para añadirlas siempre hemos tenido que ir al fichero Gradle y añadir una dependencia, que básicamente es código hecho por terceros (Google) y nos quitan toda la carga que hay por detrás del desarrollo de una simple lista (o cualquier otro componente o utilidad). Las librerías actuales que hemos usado comúnmente, han sufrido una evolución, dicha evolución se llama Jetpack. Jetpack es un conjunto de librerías y herramientas que nos ayudará a crear aplicaciones de una forma más sencilla, para ello Google ha rehecho los componentes para evitar escribir tanto código innecesario y simplificar tareas complejas. Todos estos componentes estarán formados por los paquetes de androidx.*. Esto quiere decir que si por ejemplo queremos añadir un textView, anteriormente añadiríamos

<android.support.v7.widget.AppCompatTextView
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

Pues ahora añadiríamos

<androidx.appcompat.widget.AppCompatTextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

¿Porqué debemos pasarnos a AndroidX?

Muy sencillo, básicamente no tendremos opción, puesto que a partir de la versión 28.0.0 la anterior librería android.support dejará de actualizarse.

Es por ello que debemos aprender y entender los cambios y necesidades que se nos pedirán de ahora en adelante.

Ahora tenemos tres posibles situaciones.

  • Queremos empezar un proyecto directamente con Android X.
  • Tenemos un proyecto hecho y debemos migrarlo a Android X.

Empezar proyecto con Android X

Para poder empezar un proyecto con Android X debemos tener en cuenta la versión de nuestro Android Studio, pues dependiendo de ello, nuestro helper para crear un nuevo proyecto varía.

Tutorial Android X

Última versión

En la imagen anterior veremos como se ve la vista de crear un proyecto en las últimas versiones (yo estoy usando la 3.6.3), y si nos fijamos en la última opción nos permite seleccionar una versión legacy de la support libraries, es decir, que por defecto ya empezaremos con Android X.

tutorial android x

versión anterior

En esta imagen la última opción es distinta, pues nos permite seleccionar si añadimos Android X o no. Pero si os fijáis viene marcada y no se puede desmarcar. Esto es porque en versiones aún anteriores, sí podías seleccionar.

Con esto quiero mostrar que es muy importante ir actualizando Android Studio (aunque con cierta coherencia y solo versiones estables).

¿Que versión de Android Studio tengo instalada?

Para comprobarlo es muy sencillo, basta con ir a al menú superior Android Studio>About Android Studio nos aparecerá una imagen con la versión actual.

android studio

Información sobre Android Studio.

Si tenemos una versión antigua o queremos comprobar que tenemos la última versión, basta con ir al mismo menú superior Android Studio>Check for updates, si podemos actualizar nos saldrá una imagen similar.

Notificación para actualiza Android Studio.

Migrar un proyecto a Android X

Cuando vayamos a migrar un proyecto es muy importante no estar a medias con otra feature o desarrollo de la app, porque podría ocasionar mas fallos al realizar una migración.

Otra cosa importante que tenemos que tener en cuenta es que antes de empezar la migración debemos tener al menos la versión 28 del sdk, es decir, debemos ir build.gradle (app) y comprobar que las opciones compileSdkVersion y targetSdkVersion tienen al menos la versión 28.

Una vez comprobado, empezaremos la migración. Vamos a ir al menú superior, Refactor>Migrate to AndroidX… 

Aviso migración AndroidX

Nos saldrá este aviso diciendo que la migración quizás no se complete del todo y tengamos que solucionarlo nosotros, nada de que asustarnos. También nos da la opción de hacer una copia de seguridad del proyecto antes de empezar, por si nos fuera imposible completar la migración con éxito.

Pulsamos en Migrate, dependiendo de la complejidad del proyecto tardará más o menos. Una vez terminado nos saldrá una lista de campos refactorizados y tendremos que hacer clic en Do Refactor para terminar la migración.

Ahora comprobaremos si todo ha salido bien, la forma más sencilla será ir a Build>Make Project o haciendo clic en el icono del martillo. Si la build es finalizada correctamente la migración se habrá llevado a cabo.

La migración ha modificado los layouts del proyecto y ha añadido dos atributos al proyecto que debemos reconocer.

  • android.useAndroidX=true este atributo le dice al proyecto que debe usar AndroidX en lugar de AppCompact
  • android.enableJetifier=true migra las librerías del proyecto a AndroidX

Recordad que a partir del próximo capítulo usaremos siempre AndroidX en todos los proyectos.