Errore di .NET per Android ADB0020

Messaggi di esempio

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

Problema

ADB0020 significa che l'APK Android compilato non contiene un'architettura Android corrispondente per l'emulatore o il dispositivo in cui è stato distribuito.

Questo messaggio indica che adb (Android Debug Bridge) ha segnalato un errore di INSTALL_FAILED_CPU_ABI_INCOMPATIBLE o di INSTALL_FAILED_NO_MATCHING_ABIS. adb fa parte di Android SDK e viene usato internamente da .NET per Android per comunicare con emulatori e dispositivi Android. Altre informazioni sono disponibili adb nella documentazione di Android.

Soluzione

Impostare la proprietà MSBuild RuntimeIdentifier o RuntimeIdentifiers in modo da includere un RID .NET il cui ABI Android corrisponde a quello del dispositivo:

  • android-arm pacchettizza l'ABI armeabi-v7a.
  • android-arm64 crea un pacchetto dell'interfaccia arm64-v8a ABI.
  • android-x64 crea il pacchetto ABI x86_64.

Ad esempio, l'impostazione .NET 11 seguente include tutte le architetture CoreCLR supportate:

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

Android NativeAOT è sperimentale e supporta gli stessi tre RID.

Note sull'implementazione

Si noti che nulla nel repository open source https://github.com/dotnet/android genera ADB0020, poiché le funzionalità come il debug e la "distribuzione rapida" vengono implementate in .NET proprietario per le aggiunte di Android.