From 61d876e29666997473c06a5ac947d99f7d47d5e1 Mon Sep 17 00:00:00 2001 From: Simon Rozsival Date: Tue, 21 Apr 2026 17:17:28 +0200 Subject: [PATCH 1/9] Enable CoreCLR runtime pack for android-arm (armeabi-v7a) Enable the CoreCLR runtime flavor for the armeabi-v7a ABI, following the same pattern as android-arm64 and android-x64. Changes: - Set SupportCoreCLR=True for armeabi-v7a in Ndk.projitems.in - Add ApiLevelNonMono metadata and corresponding property/placeholder - Add Microsoft.Android.Runtime.CoreCLR.36.1.android-arm to workload manifest Depends on dotnet/runtime#127225 and dotnet/runtime#126838 (API level 24). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- build-tools/scripts/Ndk.projitems.in | 6 +++++- build-tools/xaprepare/xaprepare/Steps/Step_GenerateFiles.cs | 3 +++ .../Microsoft.NET.Sdk.Android/WorkloadManifest.in.json | 5 +++++ 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/build-tools/scripts/Ndk.projitems.in b/build-tools/scripts/Ndk.projitems.in index e767b8c460f..09dcf636e58 100644 --- a/build-tools/scripts/Ndk.projitems.in +++ b/build-tools/scripts/Ndk.projitems.in @@ -11,6 +11,9 @@ @NDK_X86_API_NET@ @NDK_X86_64_API@ @NDK_X86_64_API_NET@ + @NDK_ARMEABI_V7_API_NON_MONO@ + @NDK_ARM64_V8A_API_NON_MONO@ + @NDK_X86_64_API_NON_MONO@ @@ -19,9 +22,10 @@ Condition=" $(AndroidSupportedTargetJitAbisForConditionalChecks.Contains (':armeabi-v7a:')) "> $(AndroidNdkApiLevel_ArmV7a) $(AndroidNdkApiLevel_Arm) + $(AndroidNdkApiLevelNonMono_Arm) android-arm True - False + True False diff --git a/build-tools/xaprepare/xaprepare/Steps/Step_GenerateFiles.cs b/build-tools/xaprepare/xaprepare/Steps/Step_GenerateFiles.cs index b7f75ef39f1..ab4c565bf6c 100644 --- a/build-tools/xaprepare/xaprepare/Steps/Step_GenerateFiles.cs +++ b/build-tools/xaprepare/xaprepare/Steps/Step_GenerateFiles.cs @@ -250,6 +250,9 @@ GeneratedFile Get_Ndk_projitems (Context context) { "@NDK_X86_API_NET@", BuildAndroidPlatforms.NdkMinimumAPI.ToString () }, { "@NDK_X86_64_API@", BuildAndroidPlatforms.NdkMinimumAPI.ToString () }, { "@NDK_X86_64_API_NET@", BuildAndroidPlatforms.NdkMinimumAPI.ToString () }, + { "@NDK_ARM64_V8A_API_NON_MONO@", BuildAndroidPlatforms.NdkMinimumNonMonoAPI }, + { "@NDK_ARMEABI_V7_API_NON_MONO@", BuildAndroidPlatforms.NdkMinimumNonMonoAPI }, + { "@NDK_X86_64_API_NON_MONO@", BuildAndroidPlatforms.NdkMinimumNonMonoAPI }, }; return new GeneratedPlaceholdersFile ( diff --git a/src/Xamarin.Android.Build.Tasks/Microsoft.NET.Sdk.Android/WorkloadManifest.in.json b/src/Xamarin.Android.Build.Tasks/Microsoft.NET.Sdk.Android/WorkloadManifest.in.json index 53fe8f57e0f..5de67dcdf60 100644 --- a/src/Xamarin.Android.Build.Tasks/Microsoft.NET.Sdk.Android/WorkloadManifest.in.json +++ b/src/Xamarin.Android.Build.Tasks/Microsoft.NET.Sdk.Android/WorkloadManifest.in.json @@ -12,6 +12,7 @@ "Microsoft.Android.Runtime.Mono.37.android-arm64", "Microsoft.Android.Runtime.Mono.37.android-x86", "Microsoft.Android.Runtime.Mono.37.android-x64", + "Microsoft.Android.Runtime.CoreCLR.37.android-arm", "Microsoft.Android.Runtime.CoreCLR.37.android-arm64", "Microsoft.Android.Runtime.CoreCLR.37.android-x64", "Microsoft.Android.Runtime.NativeAOT.37.android-arm64", @@ -78,6 +79,10 @@ "kind": "framework", "version": "@WORKLOAD_VERSION@" }, + "Microsoft.Android.Runtime.CoreCLR.37.android-arm": { + "kind": "framework", + "version": "@WORKLOAD_VERSION@" + }, "Microsoft.Android.Runtime.CoreCLR.37.android-arm64": { "kind": "framework", "version": "@WORKLOAD_VERSION@" From bcec1d92b73e67b3b46964b39867447d74e45848 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 28 Apr 2026 09:16:37 +0000 Subject: [PATCH 2/9] Wire up rest of the repo for armeabi-v7a CoreCLR support Agent-Logs-Url: https://github.com/dotnet/android/sessions/57a8b6d4-93df-4f84-9b77-3a58a6e2158b Co-authored-by: simonrozsival <374616+simonrozsival@users.noreply.github.com> --- build-tools/scripts/XABuildConfig.cs.in | 6 ++++++ .../xaprepare/Steps/Step_GenerateFiles.cs | 6 ++++++ src/native/CMakePresets.json.in | 21 +++++++++++++++++++ src/native/native-clr.csproj | 2 +- 4 files changed, 34 insertions(+), 1 deletion(-) diff --git a/build-tools/scripts/XABuildConfig.cs.in b/build-tools/scripts/XABuildConfig.cs.in index 3c8ce65db0f..81d2a3753fc 100644 --- a/build-tools/scripts/XABuildConfig.cs.in +++ b/build-tools/scripts/XABuildConfig.cs.in @@ -36,5 +36,11 @@ namespace Xamarin.Android.Tools { AndroidTargetArch.X86, @NDK_X86_API@ }, { AndroidTargetArch.X86_64, @NDK_X86_64_API@ }, }; + + public static readonly Dictionary ArchToApiLevelNonMono = new () { + { AndroidTargetArch.Arm, @NDK_ARMEABI_V7_NONMONO_API@ }, + { AndroidTargetArch.Arm64, @NDK_ARM64_V8A_NONMONO_API@ }, + { AndroidTargetArch.X86_64, @NDK_X86_64_NONMONO_API@ }, + }; } } diff --git a/build-tools/xaprepare/xaprepare/Steps/Step_GenerateFiles.cs b/build-tools/xaprepare/xaprepare/Steps/Step_GenerateFiles.cs index ab4c565bf6c..851370b1315 100644 --- a/build-tools/xaprepare/xaprepare/Steps/Step_GenerateFiles.cs +++ b/build-tools/xaprepare/xaprepare/Steps/Step_GenerateFiles.cs @@ -124,6 +124,9 @@ GeneratedFile GetCmakePresetsCommon (Context context, string sourcesDir) { "@NDK_ARM64_V8A_API_NET@", BuildAndroidPlatforms.NdkMinimumAPI }, { "@NDK_X86_API_NET@", BuildAndroidPlatforms.NdkMinimumAPILegacy32 }, { "@NDK_X86_64_API_NET@", BuildAndroidPlatforms.NdkMinimumAPI }, + { "@NDK_ARMEABI_V7_NONMONO_API_NET@", BuildAndroidPlatforms.NdkMinimumNonMonoAPI }, + { "@NDK_ARM64_V8A_NONMONO_API_NET@", BuildAndroidPlatforms.NdkMinimumNonMonoAPI }, + { "@NDK_X86_64_NONMONO_API_NET@", BuildAndroidPlatforms.NdkMinimumNonMonoAPI }, { "@XA_BUILD_CONFIGURATION@", context.Configuration }, { "@XA_TEST_OUTPUT_DIR@", Utilities.EscapePathSeparators (props.GetRequiredValue (KnownProperties.TestOutputDirectory)) }, }; @@ -195,6 +198,9 @@ GeneratedFile Get_XABuildConfig_cs (Context context) { "@NDK_ARM64_V8A_API@", BuildAndroidPlatforms.NdkMinimumAPI.ToString () }, { "@NDK_X86_API@", BuildAndroidPlatforms.NdkMinimumAPILegacy32.ToString ().ToString () }, { "@NDK_X86_64_API@", BuildAndroidPlatforms.NdkMinimumAPI.ToString ().ToString () }, + { "@NDK_ARMEABI_V7_NONMONO_API@", BuildAndroidPlatforms.NdkMinimumNonMonoAPI }, + { "@NDK_ARM64_V8A_NONMONO_API@", BuildAndroidPlatforms.NdkMinimumNonMonoAPI }, + { "@NDK_X86_64_NONMONO_API@", BuildAndroidPlatforms.NdkMinimumNonMonoAPI }, { "@XA_SUPPORTED_ABIS@", context.Properties.GetRequiredValue (KnownProperties.AndroidSupportedTargetJitAbis).Replace (':', ';') }, { "@SDK_BUILD_TOOLS_VERSION@", context.Properties.GetRequiredValue (KnownProperties.XABuildToolsFolder) }, { "@ANDROID_DEFAULT_MINIMUM_DOTNET_API_LEVEL@", GetMajor (context.Properties.GetRequiredValue (KnownProperties.AndroidMinimumDotNetApiLevel)) }, diff --git a/src/native/CMakePresets.json.in b/src/native/CMakePresets.json.in index 964103d5903..591dedabfed 100644 --- a/src/native/CMakePresets.json.in +++ b/src/native/CMakePresets.json.in @@ -97,6 +97,17 @@ } }, + { + "name": "nonmono-common-armeabi-v7a", + "hidden": true, + "cacheVariables": { + "ANDROID_ABI": "armeabi-v7a", + "ANDROID_NATIVE_API_LEVEL": "@NDK_ARMEABI_V7_NONMONO_API_NET@", + "ANDROID_PLATFORM": "android-@NDK_ARMEABI_V7_NONMONO_API_NET@", + "ANDROID_RID": "android-arm" + } + }, + { "name": "common-arm64-v8a", "hidden": true, @@ -151,11 +162,21 @@ "inherits": ["default-common", "common-debug", "common-armeabi-v7a"] }, + { + "name": "coreclr-default-debug-armeabi-v7a", + "inherits": ["default-common", "common-debug", "nonmono-common-armeabi-v7a"] + }, + { "name": "default-release-armeabi-v7a", "inherits": ["default-common", "common-release", "common-armeabi-v7a"] }, + { + "name": "coreclr-default-release-armeabi-v7a", + "inherits": ["default-common", "common-release", "nonmono-common-armeabi-v7a"] + }, + { "name": "analyzers-debug-armeabi-v7a", "hidden": true, diff --git a/src/native/native-clr.csproj b/src/native/native-clr.csproj index bb3445fafb0..2922e884487 100644 --- a/src/native/native-clr.csproj +++ b/src/native/native-clr.csproj @@ -9,7 +9,7 @@ arm64:x86_64 - arm64-v8a:x86_64 + armeabi-v7a:arm64-v8a:x86_64 From c8f11663ca95570844b3993745c2c94e6a8c59ce Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 28 Apr 2026 14:20:46 +0000 Subject: [PATCH 3/9] Fix typemap.cc xxhash::hash call for 32-bit ARM build Agent-Logs-Url: https://github.com/dotnet/android/sessions/0e9f046e-d5f6-471f-97d4-3f8da467c15b Co-authored-by: simonrozsival <374616+simonrozsival@users.noreply.github.com> --- src/native/clr/host/typemap.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/native/clr/host/typemap.cc b/src/native/clr/host/typemap.cc index 85e5a37a3a5..8a52077d360 100644 --- a/src/native/clr/host/typemap.cc +++ b/src/native/clr/host/typemap.cc @@ -146,7 +146,7 @@ auto TypeMapper::managed_to_java_debug (const char *typeName, const uint8_t *mvi dynamic_local_path_string full_type_name; full_type_name.append (typeName); - hash_t mvid_hash = xxhash::hash (mvid, 16z); // we must hope managed land called us with valid data + hash_t mvid_hash = xxhash::hash (reinterpret_cast(mvid), 16z); // we must hope managed land called us with valid data auto equal = [](TypeMapAssembly const& entry, hash_t key) -> bool { return entry.mvid_hash == key; }; auto less_than = [](TypeMapAssembly const& entry, hash_t key) -> bool { return entry.mvid_hash < key; }; From 81411e765a4da4d090aa127378f3282663170e74 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 20 May 2026 15:05:57 +0000 Subject: [PATCH 4/9] Exclude armeabi-v7a from CoreCLR native build until runtime pack ships Agent-Logs-Url: https://github.com/dotnet/android/sessions/84c252d9-11cb-4140-9300-83378b8783ca Co-authored-by: simonrozsival <374616+simonrozsival@users.noreply.github.com> --- src/native/native-clr.csproj | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/native/native-clr.csproj b/src/native/native-clr.csproj index 2922e884487..68148a011c6 100644 --- a/src/native/native-clr.csproj +++ b/src/native/native-clr.csproj @@ -8,8 +8,10 @@ false + + arm64:x86_64 - armeabi-v7a:arm64-v8a:x86_64 + arm64-v8a:x86_64 From 3ae17c0faa22edcd4aff879dff125a38ecdd1e84 Mon Sep 17 00:00:00 2001 From: Simon Rozsival Date: Wed, 20 May 2026 17:42:24 +0200 Subject: [PATCH 5/9] Wire CoreCLR android-arm runtime path Add the missing CoreCLR android-arm runtime directory placeholder and consume it from native CMake configuration so the new armeabi-v7a CoreCLR presets do not configure with an empty runtime directory. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- build-tools/scripts/xa_build_configuration.cmake.in | 1 + build-tools/xaprepare/xaprepare/Steps/Step_GenerateFiles.cs | 1 + src/native/CMakeLists.txt | 2 ++ 3 files changed, 4 insertions(+) diff --git a/build-tools/scripts/xa_build_configuration.cmake.in b/build-tools/scripts/xa_build_configuration.cmake.in index c7ed213f87f..cfa5a23c7dd 100644 --- a/build-tools/scripts/xa_build_configuration.cmake.in +++ b/build-tools/scripts/xa_build_configuration.cmake.in @@ -3,5 +3,6 @@ set(NETCORE_APP_RUNTIME_DIR_ARM64 "@NETCORE_APP_RUNTIME_ANDROID_ARM64@") set(NETCORE_APP_RUNTIME_DIR_X86 "@NETCORE_APP_RUNTIME_ANDROID_X86@") set(NETCORE_APP_RUNTIME_DIR_X86_64 "@NETCORE_APP_RUNTIME_ANDROID_X86_64@") +set(CORECLR_APP_RUNTIME_DIR_ARM "@CORECLR_APP_RUNTIME_ANDROID_ARM@") set(CORECLR_APP_RUNTIME_DIR_ARM64 "@CORECLR_APP_RUNTIME_ANDROID_ARM64@") set(CORECLR_APP_RUNTIME_DIR_X86_64 "@CORECLR_APP_RUNTIME_ANDROID_X86_64@") diff --git a/build-tools/xaprepare/xaprepare/Steps/Step_GenerateFiles.cs b/build-tools/xaprepare/xaprepare/Steps/Step_GenerateFiles.cs index 851370b1315..aa1eb189959 100644 --- a/build-tools/xaprepare/xaprepare/Steps/Step_GenerateFiles.cs +++ b/build-tools/xaprepare/xaprepare/Steps/Step_GenerateFiles.cs @@ -99,6 +99,7 @@ GeneratedFile Get_Cmake_XA_Build_Configuration (Context context) { "@NETCORE_APP_RUNTIME_ANDROID_X86@", Utilities.EscapePathSeparators (Configurables.Paths.NetcoreAppRuntimeAndroidX86) }, { "@NETCORE_APP_RUNTIME_ANDROID_X86_64@", Utilities.EscapePathSeparators (Configurables.Paths.NetcoreAppRuntimeAndroidX86_64) }, + { "@CORECLR_APP_RUNTIME_ANDROID_ARM@", Utilities.EscapePathSeparators (Configurables.Paths.CoreClrAppRuntimeAndroidARM) }, { "@CORECLR_APP_RUNTIME_ANDROID_ARM64@", Utilities.EscapePathSeparators (Configurables.Paths.CoreClrAppRuntimeAndroidARM64) }, { "@CORECLR_APP_RUNTIME_ANDROID_X86_64@", Utilities.EscapePathSeparators (Configurables.Paths.CoreClrAppRuntimeAndroidX86_64) }, }; diff --git a/src/native/CMakeLists.txt b/src/native/CMakeLists.txt index ba9267c5623..b91d716fb32 100644 --- a/src/native/CMakeLists.txt +++ b/src/native/CMakeLists.txt @@ -177,9 +177,11 @@ if(IS_CLR_RUNTIME) set(LOCAL_CORECLR_CONFIG Release) endif() + set(RUNTIME_DIR_ARM "${LOCAL_CORECLR_PATH}/${CLR_PACKAGE_NAME_STEM}-arm/${LOCAL_CORECLR_CONFIG}/runtimes/android-arm") set(RUNTIME_DIR_ARM64 "${LOCAL_CORECLR_PATH}/${CLR_PACKAGE_NAME_STEM}-arm64/${LOCAL_CORECLR_CONFIG}/runtimes/android-arm64") set(RUNTIME_DIR_X86_64 "${LOCAL_CORECLR_PATH}/${CLR_PACKAGE_NAME_STEM}-x64/${LOCAL_CORECLR_CONFIG}/runtimes/android-x64") else() + set(RUNTIME_DIR_ARM "${CORECLR_APP_RUNTIME_DIR_ARM}") set(RUNTIME_DIR_ARM64 "${CORECLR_APP_RUNTIME_DIR_ARM64}") set(RUNTIME_DIR_X86_64 "${CORECLR_APP_RUNTIME_DIR_X86_64}") endif() From a049ce4f38a0b4445744f92e74f32bcf4217d9aa Mon Sep 17 00:00:00 2001 From: Simon Rozsival Date: Wed, 20 May 2026 17:52:10 +0200 Subject: [PATCH 6/9] Keep android-arm CoreCLR pack disabled Leave the android-arm CoreCLR runtime pack out of workload pack creation and the workload manifest until the native CoreCLR armeabi-v7a build can be enabled. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- build-tools/scripts/Ndk.projitems.in | 2 +- .../Microsoft.NET.Sdk.Android/WorkloadManifest.in.json | 5 ----- 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/build-tools/scripts/Ndk.projitems.in b/build-tools/scripts/Ndk.projitems.in index 09dcf636e58..17d5c4a8579 100644 --- a/build-tools/scripts/Ndk.projitems.in +++ b/build-tools/scripts/Ndk.projitems.in @@ -25,7 +25,7 @@ $(AndroidNdkApiLevelNonMono_Arm) android-arm True - True + False False diff --git a/src/Xamarin.Android.Build.Tasks/Microsoft.NET.Sdk.Android/WorkloadManifest.in.json b/src/Xamarin.Android.Build.Tasks/Microsoft.NET.Sdk.Android/WorkloadManifest.in.json index 5de67dcdf60..53fe8f57e0f 100644 --- a/src/Xamarin.Android.Build.Tasks/Microsoft.NET.Sdk.Android/WorkloadManifest.in.json +++ b/src/Xamarin.Android.Build.Tasks/Microsoft.NET.Sdk.Android/WorkloadManifest.in.json @@ -12,7 +12,6 @@ "Microsoft.Android.Runtime.Mono.37.android-arm64", "Microsoft.Android.Runtime.Mono.37.android-x86", "Microsoft.Android.Runtime.Mono.37.android-x64", - "Microsoft.Android.Runtime.CoreCLR.37.android-arm", "Microsoft.Android.Runtime.CoreCLR.37.android-arm64", "Microsoft.Android.Runtime.CoreCLR.37.android-x64", "Microsoft.Android.Runtime.NativeAOT.37.android-arm64", @@ -79,10 +78,6 @@ "kind": "framework", "version": "@WORKLOAD_VERSION@" }, - "Microsoft.Android.Runtime.CoreCLR.37.android-arm": { - "kind": "framework", - "version": "@WORKLOAD_VERSION@" - }, "Microsoft.Android.Runtime.CoreCLR.37.android-arm64": { "kind": "framework", "version": "@WORKLOAD_VERSION@" From 66397af30740d608ccff896ded9749ffb31e0c5e Mon Sep 17 00:00:00 2001 From: Simon Rozsival Date: Wed, 20 May 2026 17:59:40 +0200 Subject: [PATCH 7/9] Enable android-arm CoreCLR native pack Assume the android-arm CoreCLR runtime pack is available and keep the PR wired end-to-end: native build, pack creation, and workload manifest all include android-arm CoreCLR. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- build-tools/scripts/Ndk.projitems.in | 2 +- .../Microsoft.NET.Sdk.Android/WorkloadManifest.in.json | 5 +++++ src/native/native-clr.csproj | 5 +---- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/build-tools/scripts/Ndk.projitems.in b/build-tools/scripts/Ndk.projitems.in index 17d5c4a8579..72031dff392 100644 --- a/build-tools/scripts/Ndk.projitems.in +++ b/build-tools/scripts/Ndk.projitems.in @@ -25,7 +25,7 @@ $(AndroidNdkApiLevelNonMono_Arm) android-arm True - False + True False diff --git a/src/Xamarin.Android.Build.Tasks/Microsoft.NET.Sdk.Android/WorkloadManifest.in.json b/src/Xamarin.Android.Build.Tasks/Microsoft.NET.Sdk.Android/WorkloadManifest.in.json index 53fe8f57e0f..5de67dcdf60 100644 --- a/src/Xamarin.Android.Build.Tasks/Microsoft.NET.Sdk.Android/WorkloadManifest.in.json +++ b/src/Xamarin.Android.Build.Tasks/Microsoft.NET.Sdk.Android/WorkloadManifest.in.json @@ -12,6 +12,7 @@ "Microsoft.Android.Runtime.Mono.37.android-arm64", "Microsoft.Android.Runtime.Mono.37.android-x86", "Microsoft.Android.Runtime.Mono.37.android-x64", + "Microsoft.Android.Runtime.CoreCLR.37.android-arm", "Microsoft.Android.Runtime.CoreCLR.37.android-arm64", "Microsoft.Android.Runtime.CoreCLR.37.android-x64", "Microsoft.Android.Runtime.NativeAOT.37.android-arm64", @@ -78,6 +79,10 @@ "kind": "framework", "version": "@WORKLOAD_VERSION@" }, + "Microsoft.Android.Runtime.CoreCLR.37.android-arm": { + "kind": "framework", + "version": "@WORKLOAD_VERSION@" + }, "Microsoft.Android.Runtime.CoreCLR.37.android-arm64": { "kind": "framework", "version": "@WORKLOAD_VERSION@" diff --git a/src/native/native-clr.csproj b/src/native/native-clr.csproj index 68148a011c6..fdb3ffdd6c3 100644 --- a/src/native/native-clr.csproj +++ b/src/native/native-clr.csproj @@ -7,11 +7,8 @@ Exe false - - - arm64:x86_64 - arm64-v8a:x86_64 + armeabi-v7a:arm64-v8a:x86_64 From 7e275491404109f22f11566d27e42446897335e4 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 26 May 2026 13:13:35 +0000 Subject: [PATCH 8/9] Remove stale NonMono plumbing left over from API-level unification Agent-Logs-Url: https://github.com/dotnet/android/sessions/b09f0cbc-43db-4f06-beda-2eec75f230da Co-authored-by: simonrozsival <374616+simonrozsival@users.noreply.github.com> --- build-tools/scripts/Ndk.projitems.in | 4 ---- build-tools/scripts/XABuildConfig.cs.in | 6 ------ .../xaprepare/Steps/Step_GenerateFiles.cs | 9 --------- src/native/CMakePresets.json.in | 15 ++------------- 4 files changed, 2 insertions(+), 32 deletions(-) diff --git a/build-tools/scripts/Ndk.projitems.in b/build-tools/scripts/Ndk.projitems.in index 72031dff392..3a237cd9ad4 100644 --- a/build-tools/scripts/Ndk.projitems.in +++ b/build-tools/scripts/Ndk.projitems.in @@ -11,9 +11,6 @@ @NDK_X86_API_NET@ @NDK_X86_64_API@ @NDK_X86_64_API_NET@ - @NDK_ARMEABI_V7_API_NON_MONO@ - @NDK_ARM64_V8A_API_NON_MONO@ - @NDK_X86_64_API_NON_MONO@ @@ -22,7 +19,6 @@ Condition=" $(AndroidSupportedTargetJitAbisForConditionalChecks.Contains (':armeabi-v7a:')) "> $(AndroidNdkApiLevel_ArmV7a) $(AndroidNdkApiLevel_Arm) - $(AndroidNdkApiLevelNonMono_Arm) android-arm True True diff --git a/build-tools/scripts/XABuildConfig.cs.in b/build-tools/scripts/XABuildConfig.cs.in index 81d2a3753fc..3c8ce65db0f 100644 --- a/build-tools/scripts/XABuildConfig.cs.in +++ b/build-tools/scripts/XABuildConfig.cs.in @@ -36,11 +36,5 @@ namespace Xamarin.Android.Tools { AndroidTargetArch.X86, @NDK_X86_API@ }, { AndroidTargetArch.X86_64, @NDK_X86_64_API@ }, }; - - public static readonly Dictionary ArchToApiLevelNonMono = new () { - { AndroidTargetArch.Arm, @NDK_ARMEABI_V7_NONMONO_API@ }, - { AndroidTargetArch.Arm64, @NDK_ARM64_V8A_NONMONO_API@ }, - { AndroidTargetArch.X86_64, @NDK_X86_64_NONMONO_API@ }, - }; } } diff --git a/build-tools/xaprepare/xaprepare/Steps/Step_GenerateFiles.cs b/build-tools/xaprepare/xaprepare/Steps/Step_GenerateFiles.cs index aa1eb189959..d5d0d3b17e8 100644 --- a/build-tools/xaprepare/xaprepare/Steps/Step_GenerateFiles.cs +++ b/build-tools/xaprepare/xaprepare/Steps/Step_GenerateFiles.cs @@ -125,9 +125,6 @@ GeneratedFile GetCmakePresetsCommon (Context context, string sourcesDir) { "@NDK_ARM64_V8A_API_NET@", BuildAndroidPlatforms.NdkMinimumAPI }, { "@NDK_X86_API_NET@", BuildAndroidPlatforms.NdkMinimumAPILegacy32 }, { "@NDK_X86_64_API_NET@", BuildAndroidPlatforms.NdkMinimumAPI }, - { "@NDK_ARMEABI_V7_NONMONO_API_NET@", BuildAndroidPlatforms.NdkMinimumNonMonoAPI }, - { "@NDK_ARM64_V8A_NONMONO_API_NET@", BuildAndroidPlatforms.NdkMinimumNonMonoAPI }, - { "@NDK_X86_64_NONMONO_API_NET@", BuildAndroidPlatforms.NdkMinimumNonMonoAPI }, { "@XA_BUILD_CONFIGURATION@", context.Configuration }, { "@XA_TEST_OUTPUT_DIR@", Utilities.EscapePathSeparators (props.GetRequiredValue (KnownProperties.TestOutputDirectory)) }, }; @@ -199,9 +196,6 @@ GeneratedFile Get_XABuildConfig_cs (Context context) { "@NDK_ARM64_V8A_API@", BuildAndroidPlatforms.NdkMinimumAPI.ToString () }, { "@NDK_X86_API@", BuildAndroidPlatforms.NdkMinimumAPILegacy32.ToString ().ToString () }, { "@NDK_X86_64_API@", BuildAndroidPlatforms.NdkMinimumAPI.ToString ().ToString () }, - { "@NDK_ARMEABI_V7_NONMONO_API@", BuildAndroidPlatforms.NdkMinimumNonMonoAPI }, - { "@NDK_ARM64_V8A_NONMONO_API@", BuildAndroidPlatforms.NdkMinimumNonMonoAPI }, - { "@NDK_X86_64_NONMONO_API@", BuildAndroidPlatforms.NdkMinimumNonMonoAPI }, { "@XA_SUPPORTED_ABIS@", context.Properties.GetRequiredValue (KnownProperties.AndroidSupportedTargetJitAbis).Replace (':', ';') }, { "@SDK_BUILD_TOOLS_VERSION@", context.Properties.GetRequiredValue (KnownProperties.XABuildToolsFolder) }, { "@ANDROID_DEFAULT_MINIMUM_DOTNET_API_LEVEL@", GetMajor (context.Properties.GetRequiredValue (KnownProperties.AndroidMinimumDotNetApiLevel)) }, @@ -257,9 +251,6 @@ GeneratedFile Get_Ndk_projitems (Context context) { "@NDK_X86_API_NET@", BuildAndroidPlatforms.NdkMinimumAPI.ToString () }, { "@NDK_X86_64_API@", BuildAndroidPlatforms.NdkMinimumAPI.ToString () }, { "@NDK_X86_64_API_NET@", BuildAndroidPlatforms.NdkMinimumAPI.ToString () }, - { "@NDK_ARM64_V8A_API_NON_MONO@", BuildAndroidPlatforms.NdkMinimumNonMonoAPI }, - { "@NDK_ARMEABI_V7_API_NON_MONO@", BuildAndroidPlatforms.NdkMinimumNonMonoAPI }, - { "@NDK_X86_64_API_NON_MONO@", BuildAndroidPlatforms.NdkMinimumNonMonoAPI }, }; return new GeneratedPlaceholdersFile ( diff --git a/src/native/CMakePresets.json.in b/src/native/CMakePresets.json.in index 591dedabfed..926a370a3cc 100644 --- a/src/native/CMakePresets.json.in +++ b/src/native/CMakePresets.json.in @@ -97,17 +97,6 @@ } }, - { - "name": "nonmono-common-armeabi-v7a", - "hidden": true, - "cacheVariables": { - "ANDROID_ABI": "armeabi-v7a", - "ANDROID_NATIVE_API_LEVEL": "@NDK_ARMEABI_V7_NONMONO_API_NET@", - "ANDROID_PLATFORM": "android-@NDK_ARMEABI_V7_NONMONO_API_NET@", - "ANDROID_RID": "android-arm" - } - }, - { "name": "common-arm64-v8a", "hidden": true, @@ -164,7 +153,7 @@ { "name": "coreclr-default-debug-armeabi-v7a", - "inherits": ["default-common", "common-debug", "nonmono-common-armeabi-v7a"] + "inherits": ["default-common", "common-debug", "common-armeabi-v7a"] }, { @@ -174,7 +163,7 @@ { "name": "coreclr-default-release-armeabi-v7a", - "inherits": ["default-common", "common-release", "nonmono-common-armeabi-v7a"] + "inherits": ["default-common", "common-release", "common-armeabi-v7a"] }, { From cd7537610c782a2773dd3a4cd95b0abe6de4fa36 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 27 May 2026 08:08:57 +0000 Subject: [PATCH 9/9] Exclude armeabi-v7a from CoreCLR native build until runtime pack ships Co-authored-by: simonrozsival <374616+simonrozsival@users.noreply.github.com> --- src/native/native-clr.csproj | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/native/native-clr.csproj b/src/native/native-clr.csproj index fdb3ffdd6c3..d3ab2e1f56c 100644 --- a/src/native/native-clr.csproj +++ b/src/native/native-clr.csproj @@ -7,8 +7,11 @@ Exe false + + + arm64:x86_64 - armeabi-v7a:arm64-v8a:x86_64 + arm64-v8a:x86_64