Error de .NET para Android ADB0020

Mensajes de ejemplo

error ADB0020: The package does not support the CPU architecture of this device.

Cuestión

ADB0020 significa que el APK de Android compilado no contenía una arquitectura android coincidente para el emulador o el dispositivo en el que se implementó.

Este mensaje indica que adb (Android Debug Bridge) ha notificado un error INSTALL_FAILED_CPU_ABI_INCOMPATIBLE o INSTALL_FAILED_NO_MATCHING_ABIS. adb forma parte del SDK de Android y lo usa internamente .NET para Android para comunicarse con dispositivos y emuladores de Android. Obtenga más información sobre adb en la documentación de Android.

Solución

Establezca la propiedad MSBuild RuntimeIdentifier o RuntimeIdentifiers para incluir un RID de .NET cuya ABI de Android coincida con el dispositivo:

  • android-arm empaqueta la ABI armeabi-v7a.
  • android-arm64 empaqueta la ABI arm64-v8a.
  • android-x64 empaqueta la ABI x86_64.

Por ejemplo, la siguiente configuración de .NET 11 incluye todas las arquitecturas de CoreCLR admitidas:

<PropertyGroup>
  <RuntimeIdentifiers>android-arm;android-arm64;android-x64</RuntimeIdentifiers>
</PropertyGroup>

Android NativeAOT es experimental y admite los mismos tres RID.

Notas de implementación

Tenga en cuenta que nada del repositorio de código abierto https://github.com/dotnet/android emite ADB0020, ya que las características como la depuración y la "implementación rápida" se implementan en las adiciones de .NET propietarias para Android.