Skip to content

Commit e300549

Browse files
committed
Merge branch 'main' into dev/grendel/extended-timing
* main: [Xamarin.Android.Build.Tasks] set `%(DefineConstantsOnly)` for older API levels (#8777)
2 parents f78eec1 + 60dbcc9 commit e300549

File tree

3 files changed

+22
-1
lines changed

3 files changed

+22
-1
lines changed

build-tools/Xamarin.Android.Tools.BootstrapTasks/Xamarin.Android.Tools.BootstrapTasks/GenerateSupportedPlatforms.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,9 @@ public override bool Execute ()
7878
.OrderBy (v => v)) {
7979
writer.WriteStartElement ("AndroidSdkSupportedTargetPlatformVersion");
8080
writer.WriteAttributeString ("Include", apiLevel.ToString ("0.0", CultureInfo.InvariantCulture));
81+
if (apiLevel < TargetApiLevel) {
82+
writer.WriteAttributeString ("DefineConstantsOnly", "true");
83+
}
8184
writer.WriteEndElement (); // </AndroidSdkSupportedTargetPlatformVersion>
8285
}
8386
writer.WriteStartElement ("SdkSupportedTargetPlatformVersion");

src/Xamarin.Android.Build.Tasks/Microsoft.Android.Sdk/in/Microsoft.Android.Sdk.BundledVersions.in.targets

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,16 @@ WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and
1010
<PropertyGroup>
1111
<AndroidNETSdkVersion>@ANDROID_PACK_VERSION_LONG@</AndroidNETSdkVersion>
1212
<XamarinAndroidVersion>@ANDROID_PACK_VERSION_LONG@</XamarinAndroidVersion>
13+
<_AndroidLatestStableApiLevel>@ANDROID_LATEST_STABLE_API_LEVEL@</_AndroidLatestStableApiLevel>
1314
</PropertyGroup>
1415
<PropertyGroup>
1516
<_AndroidTargetingPackId Condition="$(TargetPlatformVersion.EndsWith('.0'))">$(TargetPlatformVersion.Substring(0, $(TargetPlatformVersion.LastIndexOf('.0'))))</_AndroidTargetingPackId>
1617
<_AndroidTargetingPackId Condition="'$(_AndroidTargetingPackId)' == ''">$(TargetPlatformVersion)</_AndroidTargetingPackId>
17-
<_AndroidRuntimePackId Condition=" '$(_AndroidTargetingPackId)' &lt; '@ANDROID_LATEST_STABLE_API_LEVEL@' ">@ANDROID_LATEST_STABLE_API_LEVEL@</_AndroidRuntimePackId>
18+
<!-- NOTE: adjust if a TargetFramework supports multiple API levels -->
19+
<_AndroidErrorOnTargetPlatformVersion Condition=" '$(_AndroidTargetingPackId)' != '$(_AndroidLatestStableApiLevel)' ">$(_AndroidTargetingPackId)</_AndroidErrorOnTargetPlatformVersion>
20+
<_AndroidTargetingPackId Condition=" '$(_AndroidTargetingPackId)' != '$(_AndroidLatestStableApiLevel)' ">$(_AndroidLatestStableApiLevel)</_AndroidTargetingPackId>
1821
<_AndroidRuntimePackId Condition=" '$(_AndroidRuntimePackId)' == '' ">$(_AndroidTargetingPackId)</_AndroidRuntimePackId>
22+
<_AndroidRuntimePackId Condition=" '$(_AndroidRuntimePackId)' != '$(_AndroidLatestStableApiLevel)' ">$(_AndroidLatestStableApiLevel)</_AndroidRuntimePackId>
1923
</PropertyGroup>
2024
<ItemGroup>
2125
<KnownFrameworkReference

src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/BuildTest.cs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -792,6 +792,20 @@ public void IfAndroidJarDoesNotExistThrowXA5207 ([Values(true, false)] bool buil
792792
Directory.Delete (AndroidSdkDirectory, recursive: true);
793793
}
794794

795+
[Test]
796+
public void InvalidTargetPlatformVersion ([Values ("android33", "android99.0")] string platformVersion)
797+
{
798+
const string targetFramework = "net9.0";
799+
var project = new XamarinAndroidApplicationProject {
800+
TargetFramework = $"{targetFramework}-{platformVersion}",
801+
};
802+
using var builder = CreateApkBuilder ();
803+
builder.ThrowOnBuildFailure = false;
804+
Assert.IsFalse (builder.Build (project), "build should fail");
805+
806+
Assert.IsTrue (builder.LastBuildOutput.ContainsText ("error NETSDK1140:"), "NETSDK1140 should have been raised.");
807+
}
808+
795809
[Test]
796810
public void XA4212 ()
797811
{

0 commit comments

Comments
 (0)