From 926a096efd6faaef745f4e8b24fe6cd7ea792c37 Mon Sep 17 00:00:00 2001 From: Todd Volkert Date: Mon, 10 Jul 2017 10:02:11 -0700 Subject: [PATCH] Minor fixes in tools: (#11009) * Include the process' `stdout` and `stderr` when it returns a non-zero exit code in `runCheckedAsync()` * Defensively catch errors in `AndroidDevice.isAppInstalled()` and return false --- .../flutter_tools/lib/src/android/android_device.dart | 9 +++++++-- packages/flutter_tools/lib/src/base/process.dart | 2 +- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/packages/flutter_tools/lib/src/android/android_device.dart b/packages/flutter_tools/lib/src/android/android_device.dart index 44af4de7db..6175d96686 100644 --- a/packages/flutter_tools/lib/src/android/android_device.dart +++ b/packages/flutter_tools/lib/src/android/android_device.dart @@ -243,8 +243,13 @@ class AndroidDevice extends Device { @override Future isAppInstalled(ApplicationPackage app) async { // This call takes 400ms - 600ms. - final RunResult listOut = await runCheckedAsync(adbCommandForDevice(['shell', 'pm', 'list', 'packages', app.id])); - return LineSplitter.split(listOut.stdout).contains("package:${app.id}"); + try { + final RunResult listOut = await runCheckedAsync(adbCommandForDevice(['shell', 'pm', 'list', 'packages', app.id])); + return LineSplitter.split(listOut.stdout).contains('package:${app.id}'); + } catch (error) { + printTrace('$error'); + return false; + } } @override diff --git a/packages/flutter_tools/lib/src/base/process.dart b/packages/flutter_tools/lib/src/base/process.dart index 2c65f6d30f..fb915856c0 100644 --- a/packages/flutter_tools/lib/src/base/process.dart +++ b/packages/flutter_tools/lib/src/base/process.dart @@ -211,7 +211,7 @@ Future runCheckedAsync(List cmd, { environment: environment ); if (result.exitCode != 0) - throw 'Exit code ${result.exitCode} from: ${cmd.join(' ')}'; + throw 'Exit code ${result.exitCode} from: ${cmd.join(' ')}:\n$result'; return result; }