From 27347a7c258a62b9bf212f27f5492b4a7d16ac7b Mon Sep 17 00:00:00 2001 From: Jonathan Peppers Date: Wed, 27 Sep 2023 12:11:18 -0500 Subject: [PATCH] [Xamarin.Android.Build.Tasks] fix `InstallAndroidDependencies` in .NET 8 (#8375) Fixes: https://dev.azure.com/devdiv/DevDiv/_workitems/edit/1837913 Context: dc3ccf28cdbe9f8c0a705400b83c11a85c81a980 Testing on a DevBox with only the .NET 8 RC 1 SDK and `dotnet workload install maui`: > dotnet new android > dotnet build -t:InstallAndroidDependencies -p:AndroidSdkDirectory=C:\tools\android-sdk -p:JavaSdkDirectory=C:\tools\jdk -bl Microsoft.Android.Sdk.Windows\34.0.0-rc.1.432\tools\Xamarin.Android.Common.Debugging.targets(110,2): error XA5300: The Android SDK directory could not be found. Check that the Android SDK Manager in Visual Studio shows a valid installation. To use a custom SDK path for a command line build, set the 'AndroidSdkDirectory' MSBuild property to the custom path. Ok, that's completely broken... So let's add `-c Release`, as this target is related to Fast Deployment: Microsoft.Android.Sdk.Windows\34.0.0-rc.1.432\tools\Xamarin.Android.Common.targets(664,2): error : Could not locate Java 6 or 7 SDK. I tested .NET 7 and it worked fine?!? It turns out to be due to an additional `_ResolveMonoAndroidSdks` target running in .NET 8 that *doesn't* run in .NET 7: https://github.com/xamarin/xamarin-android/blob/547a157a7aeae930e4fc6092636fa20771ff1ef6/src/Xamarin.Android.Build.Tasks/Microsoft.Android.Sdk/targets/Microsoft.Android.Sdk.BuildOrder.targets#L181 This was introduced in dc3ccf28, but I don't think it was needed. The `GetAndroidDependencies` target doesn't run during a normal build, so it doesn't seem like `$(GetAndroidDependenciesDependsOn)` should need to run anything extra either. Update `$(GetAndroidDependenciesDependsOn)` so that the `_ResolveMonoAndroidSdks` target is no longer executed. With this change in place, `InstallAndroidDependencies` works on my DevBox, and I'm also able to build apps in `Debug` and `Release` mode. --- .../targets/Microsoft.Android.Sdk.BuildOrder.targets | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Xamarin.Android.Build.Tasks/Microsoft.Android.Sdk/targets/Microsoft.Android.Sdk.BuildOrder.targets b/src/Xamarin.Android.Build.Tasks/Microsoft.Android.Sdk/targets/Microsoft.Android.Sdk.BuildOrder.targets index 4bfa0ff3d74..24d8d93c9c4 100644 --- a/src/Xamarin.Android.Build.Tasks/Microsoft.Android.Sdk/targets/Microsoft.Android.Sdk.BuildOrder.targets +++ b/src/Xamarin.Android.Build.Tasks/Microsoft.Android.Sdk/targets/Microsoft.Android.Sdk.BuildOrder.targets @@ -178,7 +178,6 @@ properties that determine build ordering. _BeforeGetAndroidDependencies; _SetLatestTargetFrameworkVersion; _ResolveSdks; - _ResolveMonoAndroidSdks; _ResolveAndroidTooling; $(GetAndroidDependenciesDependsOn);