Created
October 13, 2025 20:47
-
-
Save jonpryor/36943048440f4cd81a0287ba90e9bccf to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/src/Xamarin.Android.Build.Tasks/Tasks/GetAndroidDefineConstants.cs b/src/Xamarin.Android.Build.Tasks/Tasks/GetAndroidDefineConstants.cs | |
index 8699d0af0..f3bd8a40e 100644 | |
--- a/src/Xamarin.Android.Build.Tasks/Tasks/GetAndroidDefineConstants.cs | |
+++ b/src/Xamarin.Android.Build.Tasks/Tasks/GetAndroidDefineConstants.cs | |
@@ -15,7 +15,7 @@ namespace Xamarin.Android.Tasks | |
public override string TaskPrefix => "GAD"; | |
[Required] | |
- public int AndroidApiLevel { get; set; } | |
+ public string AndroidApiLevel { get; set; } = ""; | |
public string? ProductVersion { get; set; } | |
@@ -34,9 +34,20 @@ namespace Xamarin.Android.Tasks | |
constants.Add (new TaskItem ("__MOBILE__")); | |
constants.Add (new TaskItem ("__ANDROID__")); | |
- for (int i = 1; i <= AndroidApiLevel; ++i) { | |
+ if (!MonoAndroidHelper.TryParseApiLevel (AndroidApiLevel, out var apiLevel)) { | |
+ return false; | |
+ } | |
+ | |
+ for (int i = 1; i <= apiLevel.Major; ++i) { | |
constants.Add (new TaskItem ($"__ANDROID_{i}__")); | |
} | |
+ // TODO: We're just going to assume that there is a minor release for every major release from API-36.1 onward… | |
+ for (int i = 36; i < apiLevel.Major; ++i) { | |
+ constants.Add (new TaskItem ($"__ANDROID_{i}_1__")); | |
+ } | |
+ if (apiLevel.Minor != 0) { | |
+ constants.Add (new TaskItem ($"__ANDROID_{apiLevel.Major}_1__")); | |
+ } | |
AndroidDefineConstants = constants.ToArray (); | |
diff --git a/src/Xamarin.Android.Build.Tasks/Tasks/ResolveAndroidTooling.cs b/src/Xamarin.Android.Build.Tasks/Tasks/ResolveAndroidTooling.cs | |
index 5ea189b93..a805675e2 100644 | |
--- a/src/Xamarin.Android.Build.Tasks/Tasks/ResolveAndroidTooling.cs | |
+++ b/src/Xamarin.Android.Build.Tasks/Tasks/ResolveAndroidTooling.cs | |
@@ -81,7 +81,7 @@ namespace Xamarin.Android.Tasks | |
{ | |
// This should be 31.0, 32.0, etc. | |
if (Version.TryParse (TargetPlatformVersion, out Version v)) { | |
- AndroidApiLevel = v.Major.ToString (); | |
+ AndroidApiLevel = v.ToString (); | |
} else { | |
AndroidApiLevel = GetMaxStableApiLevel ().ToString (); | |
} | |
diff --git a/src/Xamarin.Android.Build.Tasks/Utilities/MonoAndroidHelper.cs b/src/Xamarin.Android.Build.Tasks/Utilities/MonoAndroidHelper.cs | |
index 6634fa4ac..13102b069 100644 | |
--- a/src/Xamarin.Android.Build.Tasks/Utilities/MonoAndroidHelper.cs | |
+++ b/src/Xamarin.Android.Build.Tasks/Utilities/MonoAndroidHelper.cs | |
@@ -595,6 +595,20 @@ namespace Xamarin.Android.Tasks | |
return apiLevel; | |
} | |
+ public static bool TryParseApiLevel (string apiLevel, out Version version) | |
+ { | |
+ if (Version.TryParse (apiLevel, out var v)) { | |
+ version = v; | |
+ return true; | |
+ } | |
+ if (int.TryParse (apiLevel, out var major)) { | |
+ version = new Version (major, 0); | |
+ return true; | |
+ } | |
+ version = null; | |
+ return false; | |
+ } | |
+ | |
#if MSBUILD | |
public static string GetAssemblyAbi (ITaskItem asmItem) | |
{ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment