Skip to content

Commit 100d8c5

Browse files
authored
[xabt] Fix XA4211 warning message to use $(TargetPlatformVersion) (#10197)
Fixes: #10196 Customers reported that the XA4211 warning message contains outdated property references and blank values for .NET 6+ projects: AndroidManifest.xml: Warning XA4211 : AndroidManifest.xml //uses-sdk/@android:targetSdkVersion '34' is less than $(TargetFrameworkVersion) ''. Using API-35 for ACW compilation. The warning was written during the Xamarin.Android timeframe and needs updating for .NET 6+: - **Property name**: `$(TargetFrameworkVersion)` should be `$(TargetPlatformVersion)` for .NET 6+ - **Blank values**: The empty `''` appears because the message references the wrong property ## Changes Updated the XA4211 message in `Resources.resx`: - Changed message text from `$(TargetFrameworkVersion)` to `$(TargetPlatformVersion)` - Updated comment documentation to reference the correct property - Updated parameter description to reflect "target platform version number" This occurs when developers explicitly set a lower target SDK version in their AndroidManifest.xml: <uses-sdk android:targetSdkVersion="34" /> The warning is reasonable to show, but the message text should be accurate for modern .NET Android projects.
1 parent 20de949 commit 100d8c5

File tree

3 files changed

+11
-5
lines changed

3 files changed

+11
-5
lines changed

src/Xamarin.Android.Build.Tasks/Properties/Resources.resx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -604,10 +604,10 @@ Either change the value in the AndroidManifest.xml to match the $(SupportedOSPla
604604
<comment>The following are literal names and should not be translated: Mono.Android.Export.dll, ExportAttribute, ExportFieldAttribute.</comment>
605605
</data>
606606
<data name="XA4211" xml:space="preserve">
607-
<value>AndroidManifest.xml //uses-sdk/@android:targetSdkVersion '{0}' is less than $(TargetFrameworkVersion) '{1}'. Using API-{2} for ACW compilation.</value>
608-
<comment>The following are literal names and should not be translated: AndroidManifest.xml, //uses-sdk/@android:targetSdkVersion , $(TargetFrameworkVersion), API-{2}, ACW
607+
<value>AndroidManifest.xml //uses-sdk/@android:targetSdkVersion '{0}' is less than $(TargetPlatformVersion) '{1}'. Using API-{2} for ACW compilation.</value>
608+
<comment>The following are literal names and should not be translated: AndroidManifest.xml, //uses-sdk/@android:targetSdkVersion , $(TargetPlatformVersion), API-{2}, ACW
609609
{0} - The target SDK version number
610-
{1} - The target framework version number
610+
{1} - The $(TargetPlatformVersion) number
611611
{2} - The API version number</comment>
612612
</data>
613613
<data name="XA4213" xml:space="preserve">

src/Xamarin.Android.Build.Tasks/Tasks/GetJavaPlatformJar.cs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@ public class GetJavaPlatformJar : AndroidTask
3535

3636
public string AndroidSdkDirectory { get; set; }
3737

38+
public string TargetPlatformVersion { get; set; }
39+
3840
[Output]
3941
public string JavaPlatformJarPath { get; set; }
4042

@@ -118,6 +120,9 @@ string GetTargetSdkVersion (string target, XAttribute target_sdk)
118120
string targetFrameworkVersion = MonoAndroidHelper.SupportedVersions.GetIdFromApiLevel (AndroidSdkPlatform);
119121
string targetSdkVersion = MonoAndroidHelper.SupportedVersions.GetIdFromApiLevel (target);
120122

123+
// For .NET 6+ projects, use TargetPlatformVersion directly
124+
string targetPlatformVersionDisplay = !string.IsNullOrEmpty (TargetPlatformVersion) ? TargetPlatformVersion : "";
125+
121126
if (!int.TryParse (targetFrameworkVersion, out int frameworkSdk)) {
122127
// AndroidSdkPlatform is likely a *preview* API level; use it.
123128
Log.LogWarningForXmlNode (
@@ -127,7 +132,7 @@ string GetTargetSdkVersion (string target, XAttribute target_sdk)
127132
message: Properties.Resources.XA4211,
128133
messageArgs: new [] {
129134
targetSdkVersion,
130-
MonoAndroidHelper.SupportedVersions.GetIdFromFrameworkVersion (targetFrameworkVersion),
135+
targetPlatformVersionDisplay,
131136
MonoAndroidHelper.SupportedVersions.GetIdFromApiLevel (targetFrameworkVersion),
132137
}
133138
);
@@ -142,7 +147,7 @@ string GetTargetSdkVersion (string target, XAttribute target_sdk)
142147
message: Properties.Resources.XA4211,
143148
messageArgs: new [] {
144149
targetSdkVersion,
145-
MonoAndroidHelper.SupportedVersions.GetIdFromFrameworkVersion (targetFrameworkVersion),
150+
targetPlatformVersionDisplay,
146151
MonoAndroidHelper.SupportedVersions.GetIdFromApiLevel (targetFrameworkVersion),
147152
}
148153
);

src/Xamarin.Android.Build.Tasks/Xamarin.Android.Tooling.targets

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@ projects.
9797
BuildingInsideVisualStudio="$(BuildingInsideVisualStudio)"
9898
SupportedOSPlatformVersion="$(SupportedOSPlatformVersion)"
9999
TargetFramework="$(TargetFramework)"
100+
TargetPlatformVersion="$(TargetPlatformVersion)"
100101
>
101102
<Output TaskParameter="JavaPlatformJarPath" PropertyName="JavaPlatformJarPath" />
102103
<Output TaskParameter="TargetSdkVersion" PropertyName="_AndroidTargetSdkVersion" />

0 commit comments

Comments
 (0)