From 06144a7207fb0ea860e6db20e63b71f680b0ebab Mon Sep 17 00:00:00 2001 From: Michael Goderbauer Date: Fri, 24 Mar 2017 17:07:08 -0700 Subject: [PATCH] Fix crash when old Android Studio (<2.2.0) is installed (#9009) Old Android Stuio versions pior to 2.2.0 didn't come with Java bundled. Make sure flutter doesn't crash when we try to determine the Java version of those old Android Studio installations. --- .../lib/src/android/android_studio.dart | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/packages/flutter_tools/lib/src/android/android_studio.dart b/packages/flutter_tools/lib/src/android/android_studio.dart index 5f32f880723..0500dffab4b 100644 --- a/packages/flutter_tools/lib/src/android/android_studio.dart +++ b/packages/flutter_tools/lib/src/android/android_studio.dart @@ -282,14 +282,19 @@ class AndroidStudio implements Comparable { final String javaPath = platform.isMacOS ? fs.path.join(directory, 'jre', 'jdk', 'Contents', 'Home') : fs.path.join(directory, 'jre'); - final ProcessResult result = processManager.runSync([fs.path.join(javaPath, 'bin', 'java'), '-version']); - if (result.exitCode == 0) { - final List versionLines = result.stderr.split('\n'); - final String javaVersion = versionLines.length >= 2 ? versionLines[1] : versionLines[0]; - _validationMessages.add('Java version: $javaVersion'); - _javaPath = javaPath; - } else { + final String javaExecutable = fs.path.join(javaPath, 'bin', 'java'); + if (!processManager.canRun(javaExecutable)) { _validationMessages.add('Unable to find bundled Java version.'); + } else { + final ProcessResult result = processManager.runSync([javaExecutable, '-version']); + if (result.exitCode == 0) { + final List versionLines = result.stderr.split('\n'); + final String javaVersion = versionLines.length >= 2 ? versionLines[1] : versionLines[0]; + _validationMessages.add('Java version: $javaVersion'); + _javaPath = javaPath; + } else { + _validationMessages.add('Unable to determine bundled Java version.'); + } } }