diff --git a/packages/flutter_tools/lib/executable.dart b/packages/flutter_tools/lib/executable.dart index 2539869003b..87d56c4dfec 100644 --- a/packages/flutter_tools/lib/executable.dart +++ b/packages/flutter_tools/lib/executable.dart @@ -140,7 +140,7 @@ String _doctorText() { appContext.runInZone(() => doctor.diagnose()); return logger.statusText; - } catch (error) { - return ''; + } catch (error, trace) { + return 'encountered exception: $error\n$trace'; } } diff --git a/packages/flutter_tools/lib/src/ios/mac.dart b/packages/flutter_tools/lib/src/ios/mac.dart index 3745bc52ba7..7a71226b9be 100644 --- a/packages/flutter_tools/lib/src/ios/mac.dart +++ b/packages/flutter_tools/lib/src/ios/mac.dart @@ -31,17 +31,21 @@ class XCode { _xcodeVersionText = runSync(['xcodebuild', '-version']).replaceAll('\n', ', '); - try { - printTrace('xcrun clang'); + if (!xcodeVersionRegex.hasMatch(_xcodeVersionText)) { + _isInstalled = false; + } else { + try { + printTrace('xcrun clang'); + ProcessResult result = Process.runSync('/usr/bin/xcrun', ['clang']); - ProcessResult result = Process.runSync('/usr/bin/xcrun', ['clang']); - if (result.stdout != null && result.stdout.contains('license')) - _eulaSigned = false; - else if (result.stderr != null && result.stderr.contains('license')) - _eulaSigned = false; - else - _eulaSigned = true; - } catch (error) { + if (result.stdout != null && result.stdout.contains('license')) + _eulaSigned = false; + else if (result.stderr != null && result.stderr.contains('license')) + _eulaSigned = false; + else + _eulaSigned = true; + } catch (error) { + } } } catch (error) { _isInstalled = false; @@ -66,10 +70,13 @@ class XCode { String _xcodeVersionText; String get xcodeVersionText => _xcodeVersionText; - bool get xcodeVersionSatisfactory { - RegExp regex = new RegExp(r'Xcode ([0-9.]+)'); + final RegExp xcodeVersionRegex = new RegExp(r'Xcode ([0-9.]+)'); - String version = regex.firstMatch(xcodeVersionText).group(1); + bool get xcodeVersionSatisfactory { + if (!xcodeVersionRegex.hasMatch(xcodeVersionText)) + return false; + + String version = xcodeVersionRegex.firstMatch(xcodeVersionText).group(1); List components = version.split('.'); int major = int.parse(components[0]);