From 14b3231639732e06913319a6dca0dfec6e127e18 Mon Sep 17 00:00:00 2001 From: Jonathan Pryor Date: Mon, 26 Apr 2021 13:24:03 -0400 Subject: [PATCH] [Xamarin.Android.Tools.AndroidSdk] Support Microsoft Disk JDK Partially reverts commit 237642ce. The plan to remove support for the obsolete `microsoft_dist_openjdk_` JDK distribution has hit a few "snags", and thus we cannot remove support for the legacy `microsoft_dist_openjdk_` package as quickly as we had hoped. Re-introduce support for the `microsoft_dist_openjdk_` JDK installation location. --- .../JdkInfo.cs | 1 + .../Jdks/MicrosoftDistJdkLocations.cs | 33 +++++++++++++++++++ 2 files changed, 34 insertions(+) create mode 100644 src/Xamarin.Android.Tools.AndroidSdk/Jdks/MicrosoftDistJdkLocations.cs diff --git a/src/Xamarin.Android.Tools.AndroidSdk/JdkInfo.cs b/src/Xamarin.Android.Tools.AndroidSdk/JdkInfo.cs index 4806565..e973d19 100644 --- a/src/Xamarin.Android.Tools.AndroidSdk/JdkInfo.cs +++ b/src/Xamarin.Android.Tools.AndroidSdk/JdkInfo.cs @@ -292,6 +292,7 @@ public static IEnumerable GetKnownSystemJdkInfos (Action GetMicrosoftDistJdks (Action logger) + { + return FromPaths (GetMacOSMicrosoftDistJdkPaths (), logger, "$HOME/Library/Developer/Xamarin/jdk") + .Concat (GetWindowsFileSystemJdks (Path.Combine ("Android", "jdk", "microsoft_dist_openjdk_*"), logger, locator: "legacy microsoft_dist_openjdk")) + .OrderByDescending (jdk => jdk, JdkInfoVersionComparer.Default); + } + + static IEnumerable GetMacOSMicrosoftDistJdkPaths () + { + var jdks = AppDomain.CurrentDomain.GetData ($"GetMacOSMicrosoftJdkPaths jdks override! {typeof (JdkInfo).AssemblyQualifiedName}") + ?.ToString (); + if (jdks == null) { + var home = Environment.GetFolderPath (Environment.SpecialFolder.Personal); + jdks = Path.Combine (home, "Library", "Developer", "Xamarin", "jdk"); + } + if (!Directory.Exists (jdks)) + return Enumerable.Empty (); + + return Directory.EnumerateDirectories (jdks); + } + } +}