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); + } + } +}