Compartir vía


Migración a AndroidX en Xamarin.Forms

AndroidX reemplaza a la biblioteca de compatibilidad de Android. En este artículo se explica por qué existe AndroidX, cómo afecta a Xamarin.Forms y cómo migrar una aplicación para usar las bibliotecas de AndroidX.

Importante

Si va a migrar una aplicación a Xamarin.Forms 5.0, consulte ¿Cómo puedo migrar mi aplicación a Xamarin.Forms 5.0?.

Historia de AndroidX

La biblioteca de compatibilidad de Android se creó para proporcionar características más recientes en versiones anteriores de Android. Es una capa de compatibilidad que permite a los desarrolladores usar una funcionalidad que puede no existir en todas las versiones del sistema operativo Android y tener un respaldo agradable para versiones anteriores. La biblioteca de compatibilidad también incluye clases prácticas y auxiliares, herramientas de depuración y utilidad, y clases sofisticadas que dependen de otras clases de la biblioteca de compatibilidad para funcionar.

Aunque la biblioteca de compatibilidad era originalmente un único binario, ha crecido y evolucionado en un conjunto de bibliotecas, que son casi esenciales para el desarrollo de aplicaciones modernas. Estas son algunas características de la biblioteca de compatibilidad usadas habitualmente:

  • Clase de compatibilidad Fragment.
  • RecyclerView, que se usa para administrar listas largas.
  • Compatibilidad con multidex para aplicaciones con más de 65 536 métodos.
  • La clase ActivityCompat.

AndroidX es un reemplazo de la biblioteca de compatibilidad, que ya no se mantiene; todo el desarrollo de biblioteca nuevo se producirá en la biblioteca AndroidX. AndroidX es una biblioteca rediseñada que usa el control de versiones semántico, nombres de paquetes más claros y una mejor compatibilidad con patrones comunes de arquitectura de aplicaciones. La versión 1.0.0 de AndroidX es el binario equivalente a la versión 28.0.0 de la biblioteca de compatibilidad. Para obtener una lista completa de las asignaciones de clases de la biblioteca de compatibilidad a AndroidX, consulte Asignaciones de clases de la biblioteca de compatibilidad en developer.android.com.

Google creó un proceso de migración denominado Jetifier con AndroidX. Jetifier inspecciona el código de bytes jar durante el proceso de compilación y vuelve a asignar las referencias a la biblioteca de compatibilidad, tanto en el código de la aplicación como en las dependencias, a su equivalente de AndroidX.

En una aplicación Xamarin.Forms, al igual que en una aplicación de Java para Android, las dependencias jar deben migrarse a AndroidX. Sin embargo, los enlaces de Xamarin también deben migrarse para que apunten a los archivos jar correctos subyacentes. Xamarin.Forms ha agregado compatibilidad con la migración automática de AndroidX en la versión 4.5.

Para obtener más información sobre AndroidX, consulte Introducción a AndroidX en developer.android.com.

Migración automática en Xamarin.Forms

Para migrar automáticamente a AndroidX, un proyecto de plataforma Android Xamarin.Forms debe:

  • Tener como destino la API de Android, versión 29 o posterior.
  • Usar Xamarin.Forms versión 4.5 o posterior.
  • Tener dependencias directas o transitivas en las bibliotecas de compatibilidad de Android.

Una vez que haya confirmado esta configuración en el proyecto, compile la aplicación Android en Visual Studio 2019. Durante el proceso de compilación, se inspecciona el lenguaje intermedio (IL) y las dependencias, y los enlaces de la biblioteca de compatibilidad se intercambian con las dependencias de AndroidX. Si la aplicación tiene todas las dependencias de AndroidX necesarias para compilarse, no observará ninguna diferencia en el proceso de compilación.

Importante

La migración manual a AndroidX dará como resultado el proceso de compilación más rápido para la aplicación y es el enfoque recomendado para la migración a AndroidX. Esto implica reemplazar las dependencias de biblioteca de compatibilidad con las dependencias de AndroidX y actualizar el código para consumir tipos de AndroidX. Para obtener más información, consulte Uso de tipos de AndroidX.

Si se detectan dependencias de AndroidX que no forman parte del proyecto, se notifica un error de compilación que indica qué paquetes de AndroidX faltan. A continuación se muestra un error de compilación de ejemplo:

Could not find 37 AndroidX assemblies, make sure to install the following NuGet packages:
- Xamarin.AndroidX.Lifecycle.LiveData
- Xamarin.AndroidX.Browser
- Xamarin.Google.Android.Material
- Xamarin.AndroidX.Legacy.Supportv4
You can also copy and paste the following snippit into your .csproj file:
 <PackageReference Include="Xamarin.AndroidX.Lifecycle.LiveData" Version="2.1.0-rc1" />
 <PackageReference Include="Xamarin.AndroidX.Browser" Version="1.0.0-rc1" />
 <PackageReference Include="Xamarin.Google.Android.Material" Version="1.0.0-rc1" />
 <PackageReference Include="Xamarin.AndroidX.Legacy.Support.V4" Version="1.0.0-rc1" />

Los paquetes NuGet que faltan se pueden instalar a través del Administrador de paquetes NuGet en Visual Studio o se pueden instalar editando el archivo .csproj de Android para incluir los elementos XML PackageReference enumerados en el error.

Una vez resueltos los paquetes que faltan, la recompilación del proyecto carga los paquetes que faltan y el proyecto se compila mediante dependencias de AndroidX en lugar de dependencias de la biblioteca de compatibilidad.

Nota:

Si el proyecto y las dependencias del proyecto no hacen referencia a las bibliotecas de compatibilidad de Android, el proceso de migración no hace nada y no se ejecuta.