Skip to content

Commit fc1a883

Browse files
tondatjonpryor
authored andcommitted
[Xamarin.Android.Tools.AndroidSdk] Export JAVA_HOME, PATH on Windows (#30)
Context: https://paper.dropbox.com/doc/OpenJDK-and-You--AH1yWKdVXgno~uXYfmcUAZTwAg-NoECAe2XkBQeoxFfGL6ea On Windows, set the `%JAVA_HOME%` and `%PATH%` environment variables so that they contain the `AndroidSdkInfo.JavaSdkPath` value. This ensures that related tools *launched from Visual Studio*, such as the Android Device Manager, use the same `AndroidSdkInfo.JavaSdkPath` value as the rest of the Xamarin.Android tooling, and not whatever system-wide `%JAVA_HOME%` value may have been previously set.
1 parent 5c5f74f commit fc1a883

File tree

1 file changed

+21
-0
lines changed

1 file changed

+21
-0
lines changed

src/Xamarin.Android.Tools.AndroidSdk/Sdks/AndroidSdkWindows.cs

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -222,5 +222,26 @@ private bool CheckRegistryKeyForExecutable (UIntPtr key, string subkey, string v
222222
return true;
223223
}
224224
#endregion
225+
226+
public override void Initialize (string androidSdkPath = null, string androidNdkPath = null, string javaSdkPath = null)
227+
{
228+
base.Initialize (androidSdkPath, androidNdkPath, javaSdkPath);
229+
230+
var jdkPath = JavaSdkPath;
231+
if (!string.IsNullOrEmpty (jdkPath)) {
232+
var cur = Environment.GetEnvironmentVariable ("JAVA_HOME");
233+
if (!string.IsNullOrEmpty (cur))
234+
Environment.SetEnvironmentVariable ("JAVA_HOME", jdkPath);
235+
236+
var javaBinPath = this.JavaBinPath;
237+
if (!string.IsNullOrEmpty (javaBinPath)) {
238+
var environmentPath = Environment.GetEnvironmentVariable ("PATH");
239+
if (!environmentPath.Contains (javaBinPath)) {
240+
var processPath = string.Concat (javaBinPath, Path.PathSeparator, environmentPath);
241+
Environment.SetEnvironmentVariable ("PATH", processPath);
242+
}
243+
}
244+
}
245+
}
225246
}
226247
}

0 commit comments

Comments
 (0)