Skip to content

Commit 2b1ec45

Browse files
[tests] don't set /uses-sdk@android:targetSdkVersion=34 by default (#8138)
* [tests] don't set `/uses-sdk@android:targetSdkVersion=34` by default Context: 95f4b79 When making API 34 the default in .NET 8, some tests tried to build `net7.0-android` projects with an `AndroidManifest.xml` that contains: <uses-sdk android:targetSdkVersion="34" /> This won't work until we backport API 34 to .NET 7. In general, you shouldn't use `<uses-sdk/>` in .NET 6+ apps as the following MSBuild properties should be used instead: <TargetFramework>net7.0-android33</TargetFramework> <SupportedOSPlatformVersion>21</SupportedOSPlatformVersion> Where `33` is implicit if left out. Let's no longer set `TargetSdkVersion` by default in our MSBuild tests, as this is closer to what customers will do. We also no longer build or test Xamarin.Android in main. I removed places in tests that set `TargetSdkVersion = null` and removed one test that is no longer valid in main/.NET 6+. * Update XamarinAndroidApplicationProject.cs * Update DesignTimeBuildHasAndroidDefines
1 parent e08a44d commit 2b1ec45

File tree

4 files changed

+8
-31
lines changed

4 files changed

+8
-31
lines changed

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

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -650,28 +650,6 @@ public void AarContentExtraction ([Values (false, true)] bool useAapt2)
650650
}
651651
}
652652

653-
[Test]
654-
[Category ("DotNetIgnore")] // n/a in .NET 5+
655-
public void CheckTargetFrameworkVersion ([Values (true, false)] bool isRelease)
656-
{
657-
var proj = new XamarinAndroidApplicationProject () {
658-
IsRelease = isRelease,
659-
TargetSdkVersion = null,
660-
MinSdkVersion = null,
661-
};
662-
proj.SetProperty ("AndroidUseLatestPlatformSdk", "False");
663-
using (var builder = CreateApkBuilder ()) {
664-
builder.GetTargetFrameworkVersionRange (out var _, out string firstFrameworkVersion, out var _, out string lastFrameworkVersion, out string[] _);
665-
proj.SetProperty ("TargetFrameworkVersion", firstFrameworkVersion);
666-
if (!Directory.Exists (Path.Combine (TestEnvironment.MonoAndroidFrameworkDirectory, firstFrameworkVersion)))
667-
Assert.Ignore ("This is a Pull Request Build. Ignoring test.");
668-
Assert.IsTrue (builder.Build (proj), "Build should have succeeded.");
669-
Assert.IsTrue (StringAssertEx.ContainsText (builder.LastBuildOutput, $"Output Property: TargetFrameworkVersion={firstFrameworkVersion}"), $"TargetFrameworkVerson should be {firstFrameworkVersion}");
670-
Assert.IsTrue (builder.Build (proj, parameters: new [] { $"TargetFrameworkVersion={lastFrameworkVersion}" }), "Build should have succeeded.");
671-
Assert.IsTrue (StringAssertEx.ContainsText (builder.LastBuildOutput, $"Output Property: TargetFrameworkVersion={lastFrameworkVersion}"), $"TargetFrameworkVersion should be {lastFrameworkVersion}");
672-
}
673-
}
674-
675653
#pragma warning disable 414
676654
public static object [] GeneratorValidateEventNameArgs = new object [] {
677655
new object [] { false, true, string.Empty, string.Empty },

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

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -693,10 +693,8 @@ module Xamarin.Android.Tests
693693
public void DesignTimeBuildHasAndroidDefines ()
694694
{
695695
var proj = new XamarinAndroidApplicationProject ();
696-
var didParse = int.TryParse (proj.TargetSdkVersion, out int apiLevel);
697-
Assert.IsTrue (didParse, $"Unable to parse {proj.TargetSdkVersion} as an int.");
698696
var androidDefines = new List<string> ();
699-
for (int i = 1; i <= apiLevel; ++i) {
697+
for (int i = 1; i <= XABuildConfig.AndroidDefaultTargetDotnetApiLevel; ++i) {
700698
androidDefines.Add ($"!__ANDROID_{i}__");
701699
}
702700
proj.Sources.Add (new BuildItem ("Compile", "IsAndroidDefined.cs") {

src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Android/XamarinAndroidApplicationProject.cs

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -70,9 +70,7 @@ public XamarinAndroidApplicationProject (string debugConfigurationName = "Debug"
7070
MinSdkVersion = "19";
7171
}
7272
AndroidManifest = default_android_manifest;
73-
if (Builder.UseDotNet) {
74-
TargetSdkVersion = XABuildConfig.AndroidDefaultTargetDotnetApiLevel.ToString ();
75-
} else {
73+
if (!Builder.UseDotNet) {
7674
TargetSdkVersion = AndroidSdkResolver.GetMaxInstalledPlatform ().ToString ();
7775
}
7876
LayoutMain = default_layout_main;
@@ -201,18 +199,22 @@ public void SetDefaultTargetDevice ()
201199

202200
public virtual string ProcessManifestTemplate ()
203201
{
204-
var uses_sdk = new StringBuilder ("<uses-sdk ");
202+
var uses_sdk = new StringBuilder ();
205203
if (!string.IsNullOrEmpty (MinSdkVersion)) {
204+
uses_sdk.Append ("<uses-sdk ");
206205
uses_sdk.Append ("android:minSdkVersion=\"");
207206
uses_sdk.Append (MinSdkVersion);
208207
uses_sdk.Append ("\" ");
209208
}
210209
if (!string.IsNullOrEmpty (TargetSdkVersion)) {
210+
if (uses_sdk.Length == 0)
211+
uses_sdk.Append ("<uses-sdk ");
211212
uses_sdk.Append ("android:targetSdkVersion=\"");
212213
uses_sdk.Append (TargetSdkVersion);
213214
uses_sdk.Append ("\" ");
214215
}
215-
uses_sdk.Append ("/>");
216+
if (uses_sdk.Length > 0)
217+
uses_sdk.Append ("/>");
216218

217219
return AndroidManifest
218220
.Replace ("${PROJECT_NAME}", ProjectName)

tests/MSBuildDeviceIntegration/Tests/InstallAndRunTests.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,6 @@ public void GlobalLayoutEvent_ShouldRegisterAndFire_OnActivityLaunch ([Values (f
8181
proj = new XamarinAndroidApplicationProject () {
8282
IsRelease = isRelease,
8383
SupportedOSPlatformVersion = "23",
84-
TargetSdkVersion = null,
8584
};
8685
if (isRelease || !CommercialBuildAvailable) {
8786
proj.SetAndroidSupportedAbis ("armeabi-v7a", "arm64-v8a", "x86", "x86_64");

0 commit comments

Comments
 (0)