AndroidX, Jetifier y Jetify: ¿Qué es todo esto?

AndroidX, Jetifier y Jetify: ¿Qué es todo esto?

AndroidX, Jetifier y Jetify: ¿Qué es todo esto?

En 2017, Google anunció AndroidX, una nueva biblioteca de Android que proporciona una API consistente y actualizada para los desarrolladores. AndroidX es una evolución de la antigua biblioteca de Android, que se llamaba Android Support Library.

La migración a AndroidX es importante para los desarrolladores porque proporciona una serie de ventajas, entre ellas:

  • Una API más consistente y actualizada
  • Mejor rendimiento
  • Soporte para nuevas características de Android

En React Native, Jetifier se utiliza para migrar las bibliotecas de React Native que dependen de las bibliotecas de Android de la API antigua. Esto se hace automáticamente cuando se compila una aplicación React Native (ya te lo explicaré más adelante).

Jetifier: una herramienta para migrar bibliotecas de Android a AndroidX

Jetifier se utiliza para migrar las bibliotecas de Android de la API antigua a la API de AndroidX. Jetifier funciona analizando el código de la biblioteca y reemplazando las referencias a las clases de la API antigua por referencias a las clases equivalentes de AndroidX.

¿Cómo funciona Jetifier en las aplicaciones de React Native?

La migración de Jetifier a las aplicaciones de React Native es automática. Cuando compilas una aplicación React Native, Jetifier se ejecuta automáticamente y analiza el código de tu aplicación para buscar referencias a las clases y paquetes de la API antigua. Si encuentra alguna referencia, Jetifier la reemplaza por una referencia a la clase o paquete equivalente de AndroidX.

El proceso de migración de Jetifier es bastante complejo, pero es capaz de migrar la mayoría de las bibliotecas de React Native sin que tengas que hacer ningún cambio manual en tu código.

Su funcionamiento lo resumiría en los siguientes pasos:

  1. Al compilar una aplicación React Native, Jetifier se ejecuta automáticamente.
  2. Jetifier analiza el código de tu aplicación para buscar referencias a las clases y paquetes de la API antigua.
  3. Si encuentra alguna referencia, Jetifier la reemplaza por una referencia a la clase o paquete equivalente de AndroidX.
  4. Jetifier escribe el código migrado en un nuevo archivo.
  5. La aplicación se compila con el código migrado.

Para ilustrar cómo funciona Jetifier, vamos a utilizar el siguiente ejemplo de código:

import android.widget.TextView;

public class MyActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_my);

        TextView textView = findViewById(R.id.textView);
        textView.setText("Hello, world!");
    }
}

Este código utiliza la clase TextView de la biblioteca de Android de la API antigua. Si queremos migrar este código a AndroidX, podemos utilizar Jetifier para reemplazar la clase TextView por la clase AppCompatTextView de AndroidX.

Para ello, ejecutaríamos el siguiente comando en nuestro terminal:

npx jetify

Después de ejecutar este comando, nuestro código quedaría así:

import androidx.appcompat.widget.AppCompatTextView;

public class MyActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_my);

        AppCompatTextView textView = findViewById(R.id.textView);
        textView.setText("Hello, world!");
    }
}

Como podemos ver, Jetifier ha sustituido la clase TextView por la clase AppCompatTextView. Esto garantizará que nuestra aplicación siga funcionando correctamente en futuras versiones de Android.

Antes de finalizar

Te podrías preguntar, ¿Pero por qué Jetifier no viene pre-instalado en RN si parece ser tan importante?, y la razón es porque es una herramienta relativamente nueva. Fue lanzado por primera vez en 2019, y desde entonces ha sido adoptado poco a poco por la mayoría de los desarrolladores de React Native.

Es probable que Jetifier se incluya en futuras versiones de React Native. Sin embargo, por el momento, los desarrolladores deben instalar Jetifier manualmente si quieren utilizarlo para migrar sus aplicaciones a AndroidX. Yo creo que una razón suficientemente importante es que Jetifier es una herramienta bastante grande e incluirla en React Native aumentaría el tamaño y la complejidad de la biblioteca.

Otra razón es que Jetifier aún está en desarrollo. Es posible que cambie en el futuro, y es posible que estos cambios no sean compatibles con las versiones anteriores de React Native.

Por último, Jetifier no es necesario para todos los desarrolladores de React Native. Si una aplicación no utiliza ninguna biblioteca de React Native que dependa de la API antigua, entonces no necesita migrar a AndroidX.

Y básicamente por esto es importante instalar Jetifier en aplicaciones de React Native.

Happy coding! :D


Photo by Mariko margetson on Unsplash

Jack Fiallos

Jack Fiallos

Te gustó este artículo?