diff --git a/src/Xamarin.Android.Build.Tasks/MSBuild/Xamarin/Android/Xamarin.Android.Aapt2.targets b/src/Xamarin.Android.Build.Tasks/MSBuild/Xamarin/Android/Xamarin.Android.Aapt2.targets index 497e0c0bbb6..411e06d32a9 100644 --- a/src/Xamarin.Android.Build.Tasks/MSBuild/Xamarin/Android/Xamarin.Android.Aapt2.targets +++ b/src/Xamarin.Android.Build.Tasks/MSBuild/Xamarin/Android/Xamarin.Android.Aapt2.targets @@ -166,6 +166,7 @@ Copyright (C) 2011-2012 Xamarin. All rights reserved. JavaPlatformJarPath="$(JavaPlatformJarPath)" JavaDesignerOutputDirectory="$(ResgenTemporaryDirectory)" CompiledResourceFlatFiles="@(_CompiledFlatFiles)" + SupportedOSPlatformVersion="$(SupportedOSPlatformVersion)" AndroidManifestFile="$(_AndroidManifestAbs)" ManifestFiles="$(ResgenTemporaryDirectory)\AndroidManifest.xml" AdditionalAndroidResourcePaths="@(_LibraryResourceDirectories)" @@ -213,6 +214,7 @@ Copyright (C) 2011-2012 Xamarin. All rights reserved. 0 }) { var doc = AndroidAppManifest.Load (AndroidManifestFile.ItemSpec, MonoAndroidHelper.SupportedVersions); if (doc.MinSdkVersion.HasValue) { - cmd.Add ("--min-sdk-version"); - cmd.Add (doc.MinSdkVersion.Value.ToString ()); + minSdkVersion = doc.MinSdkVersion.Value.ToString (CultureInfo.InvariantCulture); } } + // Use $(SupportedOSPlatformVersion) if minSdkVersion was not found in the manifest + if (minSdkVersion.IsNullOrEmpty () && MonoAndroidHelper.TryParseApiLevel (SupportedOSPlatformVersion, out Version version)) { + minSdkVersion = version.Major.ToString (CultureInfo.InvariantCulture); + } + if (!minSdkVersion.IsNullOrEmpty ()) { + cmd.Add ("--min-sdk-version"); + cmd.Add (minSdkVersion); + } return cmd.ToArray (); } diff --git a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/Tasks/AndroidResourceTests.cs b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/Tasks/AndroidResourceTests.cs index f7c5c641d14..2610dd3c65d 100644 --- a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/Tasks/AndroidResourceTests.cs +++ b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/Tasks/AndroidResourceTests.cs @@ -5,7 +5,6 @@ using System.IO; using System.Linq; using Microsoft.Build.Framework; -using System.Text; using Xamarin.Android.Tasks; using Microsoft.Build.Utilities; @@ -162,6 +161,22 @@ public void AdaptiveIcon () var proj = new XamarinAndroidApplicationProject { SupportedOSPlatformVersion = "26", AndroidResources = { + new AndroidItem.AndroidResource ("Resources\\values\\colors.xml") { + TextContent = () => """ + + #2C3E50 + #FFFFFF + + """, + }, + new AndroidItem.AndroidResource ("Resources\\drawable\\ic_shortcut_add.xml") { + TextContent = () => """ + + + + + """, + }, new AndroidItem.AndroidResource ("Resources\\mipmap-anydpi-v26\\adaptiveicon.xml") { TextContent = () => """ diff --git a/src/Xamarin.Android.Build.Tasks/Utilities/MonoAndroidHelper.cs b/src/Xamarin.Android.Build.Tasks/Utilities/MonoAndroidHelper.cs index 6634fa4acee..13102b06955 100644 --- a/src/Xamarin.Android.Build.Tasks/Utilities/MonoAndroidHelper.cs +++ b/src/Xamarin.Android.Build.Tasks/Utilities/MonoAndroidHelper.cs @@ -595,6 +595,20 @@ public static int ConvertSupportedOSPlatformVersionToApiLevel (string version) 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) {