Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[One .NET] specify all RIDs by default
Fixes: https://devdiv.visualstudio.com/DevDiv/_workitems/edit/1413756 Fixes: dotnet#6353 The API 31 emulator no longer has 32-bit images and the x86_64 image has dropped support for 32-bit architectures: > adb shell getprop | grep cpu [ro.product.cpu.abi]: [x86_64] [ro.product.cpu.abilist]: [x86_64,arm64-v8a] [ro.product.cpu.abilist32]: [] [ro.product.cpu.abilist64]: [x86_64,arm64-v8a] Compared to an API 30 x86_64 emulator: > adb shell getprop | grep cpu [ro.product.cpu.abi]: [x86_64] [ro.product.cpu.abilist]: [x86_64,x86,arm64-v8a,armeabi-v7a,armeabi] [ro.product.cpu.abilist32]: [x86,armeabi-v7a,armeabi] [ro.product.cpu.abilist64]: [x86_64,arm64-v8a] The problem is our default RIDs are: <RuntimeIdentifiers Condition=" '$(RuntimeIdentifier)' == '' And '$(RuntimeIdentifiers)' == '' ">android-arm64;android-x86</RuntimeIdentifiers> And so you hit this error when trying to deploy a `dotnet new android` app on an API 31 x86_64 emulator: error ADB0020: Mono.AndroidTools.IncompatibleCpuAbiExceptiopn: The package does not support the CPU architecture of this device. To workaround this, you can add `android-x64` to your list of `$(RuntimeIdentifiers)`. To solve this issue, we can default `$(RuntimeIdentifiers)` to all 4 architectures. We have code that will select a single architecture for Debug builds using "Fast Deployment". It seems better to have a default here that will always work, and the only drawback would be the additional architectures for Release builds.
- Loading branch information