Ensure we have the Java binary on PATH when invoking avdmanager (#18908)

See https://github.com/flutter/flutter/issues/13379#issuecomment-400984667.
This commit is contained in:
Danny Tuppeny 2018-06-28 12:09:04 +01:00 committed by GitHub
parent 4a6558f88f
commit 266a720209
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 8 additions and 3 deletions

View file

@ -466,6 +466,8 @@ class AndroidSdk {
}
Map<String, String> _sdkManagerEnv;
/// Returns an environment with the Java folder added to PATH for use in calling
/// Java-based Android SDK commands such as sdkmanager and avdmanager.
Map<String, String> get sdkManagerEnv {
if (_sdkManagerEnv == null) {
// If we can locate Java, then add it to the path used to run the Android SDK manager.

View file

@ -114,7 +114,8 @@ class EmulatorManager {
'-k', sdkId,
'-d', device
];
final ProcessResult runResult = processManager.runSync(args);
final ProcessResult runResult = processManager.runSync(args,
environment: androidSdk?.sdkManagerEnv);
return new CreateEmulatorResult(
name,
success: runResult.exitCode == 0,
@ -134,7 +135,8 @@ class EmulatorManager {
'device',
'-c'
];
final ProcessResult runResult = processManager.runSync(args);
final ProcessResult runResult = processManager.runSync(args,
environment: androidSdk?.sdkManagerEnv);
if (runResult.exitCode != 0)
return null;
@ -159,7 +161,8 @@ class EmulatorManager {
'avd',
'-n', 'temp',
];
final ProcessResult runResult = processManager.runSync(args);
final ProcessResult runResult = processManager.runSync(args,
environment: androidSdk?.sdkManagerEnv);
// Get the list of IDs that match our criteria
final List<String> availableIDs = runResult.stderr