メッセージの例
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-armarmeabi-v7aABI をパッケージします。 -
android-arm64arm64-v8aABI をパッケージします。 -
android-x64x86_64ABI をパッケージします。
たとえば、次の.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は生成されません。