From 6448c958cdf40d5eb23b06eb604733ca0c783019 Mon Sep 17 00:00:00 2001 From: Jonathan Peppers Date: Thu, 2 Apr 2026 14:06:36 -0500 Subject: [PATCH 1/2] =?UTF-8?q?Fix=20API=2037=20platform=20directory=20nam?= =?UTF-8?q?e:=20android-37=20=E2=86=92=20android-37.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Google's SDK Manager installs API 37 to platforms/android-37.0 (matching the package name platform-37.0_r01), but our tooling was looking for platforms/android-37, causing XA5207 for customer projects. CI didn't catch this because xaprepare provisions the SDK platform using the apiLevel parameter (which was '37'), creating platforms/android-37 locally - matching what the tooling expected. Customers using sdkmanager get the correct android-37.0 directory name. Fix by changing platformID/apiLevel from '37' to '37.0' consistently: - BuildAndroidPlatforms.cs: platformID '37' → '37.0' - AndroidToolchain.cs: apiLevel '37' → '37.0' - Configuration.props: AndroidLatestUnstablePlatformId '37' → '37.0' - Rename api-37.xml → api-37.0.xml (and .params.txt) - Update merge-configuration.xml and metadata references - Update CI DefaultTestSdkPlatforms variable Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- Configuration.props | 2 +- build-tools/api-merge/merge-configuration.xml | 4 ++-- build-tools/automation/yaml-templates/variables.yaml | 2 +- .../xaprepare/ConfigAndData/BuildAndroidPlatforms.cs | 2 +- .../xaprepare/ConfigAndData/Dependencies/AndroidToolchain.cs | 2 +- .../Profiles/{api-37.params.txt => api-37.0.params.txt} | 0 src/Mono.Android/Profiles/{api-37.xml => api-37.0.xml} | 0 src/Mono.Android/metadata | 4 ++-- 8 files changed, 8 insertions(+), 8 deletions(-) rename src/Mono.Android/Profiles/{api-37.params.txt => api-37.0.params.txt} (100%) rename src/Mono.Android/Profiles/{api-37.xml => api-37.0.xml} (100%) diff --git a/Configuration.props b/Configuration.props index cc9f45186b6..92a84c6c2c9 100644 --- a/Configuration.props +++ b/Configuration.props @@ -36,7 +36,7 @@ --> 37 - 37 + 37.0 v17.0 $(AndroidLatestStableApiLevel) diff --git a/build-tools/api-merge/merge-configuration.xml b/build-tools/api-merge/merge-configuration.xml index a11e8e4ebab..873b141b6b5 100644 --- a/build-tools/api-merge/merge-configuration.xml +++ b/build-tools/api-merge/merge-configuration.xml @@ -26,9 +26,9 @@ - + - + \ No newline at end of file diff --git a/build-tools/automation/yaml-templates/variables.yaml b/build-tools/automation/yaml-templates/variables.yaml index c8d783c12ad..b170d2b8324 100644 --- a/build-tools/automation/yaml-templates/variables.yaml +++ b/build-tools/automation/yaml-templates/variables.yaml @@ -63,7 +63,7 @@ variables: - name: IsRelOrTargetingRel value: $[or(startsWith(variables['Build.SourceBranch'], 'refs/heads/release/'), startsWith(variables['System.PullRequest.TargetBranch'], 'release/'))] - name: DefaultTestSdkPlatforms # Comma-separated SDK Platform(s) to install on test agents (no spaces) - value: 35,36,36.1,37 + value: 35,36,36.1,37.0 - name: DefaultJavaSdkMajorVersion value: 17 - name: LatestJavaSdkMajorVersion diff --git a/build-tools/xaprepare/xaprepare/ConfigAndData/BuildAndroidPlatforms.cs b/build-tools/xaprepare/xaprepare/ConfigAndData/BuildAndroidPlatforms.cs index 6e13faa5f7e..ab2ab8e8fdb 100644 --- a/build-tools/xaprepare/xaprepare/ConfigAndData/BuildAndroidPlatforms.cs +++ b/build-tools/xaprepare/xaprepare/ConfigAndData/BuildAndroidPlatforms.cs @@ -50,7 +50,7 @@ class BuildAndroidPlatforms new AndroidPlatform (apiName: "VanillaIceCream", apiLevel: 35, platformID: "35", include: "v15.0", framework: "v15.0"), new AndroidPlatform (apiName: "Baklava", apiLevel: 36, platformID: "36", include: "v16.0", framework: "v16.0"), new AndroidPlatform (apiName: "CANARY", apiLevel: new Version (36, 1), platformID: "36.1", include: "v16.1", framework: "v16.1", stable: true), - new AndroidPlatform (apiName: "CinnamonBun", apiLevel: new Version (37, 0), platformID: "37", include: "v17.0", framework: "v17.0", stable: false), + new AndroidPlatform (apiName: "CinnamonBun", apiLevel: new Version (37, 0), platformID: "37.0", include: "v17.0", framework: "v17.0", stable: false), }; } diff --git a/build-tools/xaprepare/xaprepare/ConfigAndData/Dependencies/AndroidToolchain.cs b/build-tools/xaprepare/xaprepare/ConfigAndData/Dependencies/AndroidToolchain.cs index 1baf6711b26..16aa5bb9958 100644 --- a/build-tools/xaprepare/xaprepare/ConfigAndData/Dependencies/AndroidToolchain.cs +++ b/build-tools/xaprepare/xaprepare/ConfigAndData/Dependencies/AndroidToolchain.cs @@ -75,7 +75,7 @@ public AndroidToolchain () new AndroidPlatformComponent ("platform-35_r02", apiLevel: "35", pkgRevision: "2"), new AndroidPlatformComponent ("platform-36_r02", apiLevel: "36", pkgRevision: "2"), new AndroidPlatformComponent ("platform-36.1_r01", apiLevel: "36.1", pkgRevision: "1", isLatestStable: true), - new AndroidPlatformComponent ("platform-37.0_r01", apiLevel: "37", pkgRevision: "1", isLatestStable: false, isPreview: true), + new AndroidPlatformComponent ("platform-37.0_r01", apiLevel: "37.0", pkgRevision: "1", isLatestStable: false, isPreview: true), new AndroidToolchainComponent ("source-36_r01", destDir: Path.Combine ("sources", "android-36"), diff --git a/src/Mono.Android/Profiles/api-37.params.txt b/src/Mono.Android/Profiles/api-37.0.params.txt similarity index 100% rename from src/Mono.Android/Profiles/api-37.params.txt rename to src/Mono.Android/Profiles/api-37.0.params.txt diff --git a/src/Mono.Android/Profiles/api-37.xml b/src/Mono.Android/Profiles/api-37.0.xml similarity index 100% rename from src/Mono.Android/Profiles/api-37.xml rename to src/Mono.Android/Profiles/api-37.0.xml diff --git a/src/Mono.Android/metadata b/src/Mono.Android/metadata index 6b18481d858..20ba57753b1 100644 --- a/src/Mono.Android/metadata +++ b/src/Mono.Android/metadata @@ -2068,7 +2068,7 @@ true true true - true + true 22 @@ -2096,7 +2096,7 @@ 36.1 36.1 37 - 37 + 37 From fbe0813118af9509b30fe936b124f983b239f950 Mon Sep 17 00:00:00 2001 From: Jonathan Peppers Date: Thu, 2 Apr 2026 16:33:25 -0500 Subject: [PATCH 2/2] Bump external/xamarin-android-tools to include android-{major}.0 fallback Includes dotnet/android-tools#320 which adds a fallback in TryGetPlatformDirectoryFromApiLevel: when android-{id} doesn't exist and id is an integer, it also tries android-{id}.0. This fixes XA5207 for customers whose SDK Manager installs API 37 to platforms/android-37.0 instead of platforms/android-37. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- external/xamarin-android-tools | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/external/xamarin-android-tools b/external/xamarin-android-tools index ec5040ad515..a4281785292 160000 --- a/external/xamarin-android-tools +++ b/external/xamarin-android-tools @@ -1 +1 @@ -Subproject commit ec5040ad5158f240a67d887133dd56cfa5eb74ba +Subproject commit a4281785292065ab7f5c0298f0f88f51b73ffb2c