Android 用 .NET エラー ADB0020

メッセージの例

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

問題点

ADB0020は、ビルドされた Android APK に、展開されたエミュレーターまたはデバイスに対応する Android アーキテクチャが含まれていないことを意味します。

このメッセージは、 adb (Android デバッグ ブリッジ) がINSTALL_FAILED_CPU_ABI_INCOMPATIBLEまたはINSTALL_FAILED_NO_MATCHING_ABIS エラーを報告したことを示します。 adb は Android SDK の一部であり、Android エミュレーターやデバイスと通信するために .NET for Android によって内部的に使用されます。 adbの詳細については、Android のドキュメントを参照してください。

ソリューション

android ABI がデバイスと一致する.NET RID を含むように、RuntimeIdentifierまたはRuntimeIdentifiers MSBuild プロパティを設定します。

  • android-arm armeabi-v7a ABI をパッケージします。
  • android-arm64 arm64-v8a ABI をパッケージします。
  • android-x64 x86_64 ABI をパッケージします。

たとえば、次の.NET 11 の設定には、サポートされているすべての CoreCLR アーキテクチャが含まれています。

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

Android NativeAOT は試験段階であり、同じ 3 つの RID をサポートしています。

実装に関するメモ

デバッグや "高速デプロイ" などの機能は独自の .NET for Android の追加機能に実装されるため、オープン ソース https://github.com/dotnet/android リポジトリではADB0020は生成されません。