Błąd .NET dla Android ADB0020

Przykładowe komunikaty

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

Problematyka

ADB0020 oznacza, że skompilowany pakiet APK systemu Android nie zawiera zgodnej architektury systemu Android dla emulatora lub urządzenia, do którego został wdrożony.

Ten komunikat wskazuje, że adb (Mostek debugowania systemu Android) zasygnalizował błąd INSTALL_FAILED_CPU_ABI_INCOMPATIBLE lub INSTALL_FAILED_NO_MATCHING_ABIS. adb jest częścią zestawu Android SDK i jest używany wewnętrznie przez platformę .NET dla systemu Android do komunikowania się z emulatorami i urządzeniami z systemem Android. Dowiedz się więcej na temat adb w dokumentacji Androida.

Rozwiązanie

Ustaw właściwość MSBuild RuntimeIdentifiers lub RuntimeIdentifier, aby uwzględnić identyfikator RID środowiska .NET, którego Android ABI jest zgodny z urządzeniem:

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

Na przykład następujące ustawienie .NET 11 zawiera wszystkie obsługiwane architektury CoreCLR:

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

Android NativeAOT jest eksperymentalny i obsługuje te same trzy identyfikatory RID.

Uwagi dotyczące implementacji

Należy pamiętać, że w repozytorium open source https://github.com/dotnet/android nie pojawia się ADB0020, ponieważ funkcje takie jak debugowanie i "szybkie wdrażanie" są implementowane w zastrzeżonych rozszerzeniach .NET dla Androida.