fixes found when running through the getting started process
diff --git a/packages/flutter_tools/lib/src/android/adb.dart b/packages/flutter_tools/lib/src/android/adb.dart index e8b0f94..f5a5840 100644 --- a/packages/flutter_tools/lib/src/android/adb.dart +++ b/packages/flutter_tools/lib/src/android/adb.dart
@@ -181,9 +181,8 @@ } } - // Convert `Nexus_7` / `Nexus_5X` style names to `Nexus 7` ones. if (modelID != null) - modelID = modelID.replaceAll('_', ' '); + modelID = cleanAdbDeviceName(modelID); } static final RegExp deviceRegex = new RegExp(r'^(\S+)\s+(\S+)(.*)'); @@ -235,6 +234,16 @@ } } +String cleanAdbDeviceName(String name) { + // Some emulators use `___` in the name as separators. + name = name.replaceAll('___', ', '); + + // Convert `Nexus_7` / `Nexus_5X` style names to `Nexus 7` ones. + name = name.replaceAll('_', ' '); + + return name; +} + List<int> _createAdbRequest(String payload) { List<int> data = payload.codeUnits;
diff --git a/packages/flutter_tools/lib/src/android/android_sdk.dart b/packages/flutter_tools/lib/src/android/android_sdk.dart index 0271f3a..b67000a 100644 --- a/packages/flutter_tools/lib/src/android/android_sdk.dart +++ b/packages/flutter_tools/lib/src/android/android_sdk.dart
@@ -23,7 +23,10 @@ // Perhaps something like `flutter config --android-home=foo/bar`. /// Locate ADB. Prefer to use one from an Android SDK, if we can locate that. -String getAdbPath() { +String getAdbPath([AndroidSdk existingSdk]) { + if (existingSdk?.adbPath != null) + return existingSdk.adbPath; + AndroidSdk sdk = AndroidSdk.locateAndroidSdk(); if (sdk?.latestVersion == null) {
diff --git a/packages/flutter_tools/lib/src/android/device_android.dart b/packages/flutter_tools/lib/src/android/device_android.dart index 0f7c4d0..5a3ec9c 100644 --- a/packages/flutter_tools/lib/src/android/device_android.dart +++ b/packages/flutter_tools/lib/src/android/device_android.dart
@@ -8,6 +8,7 @@ import 'package:crypto/crypto.dart'; import 'package:path/path.dart' as path; +import '../android/android_sdk.dart'; import '../application_package.dart'; import '../base/common.dart'; import '../base/globals.dart'; @@ -17,6 +18,7 @@ import '../device.dart'; import '../flx.dart' as flx; import '../toolchain.dart'; +import 'adb.dart'; import 'android.dart'; const String _defaultAdbPath = 'adb'; @@ -249,7 +251,12 @@ if (route != null) cmd.addAll(<String>['--es', 'route', route]); cmd.add(apk.launchActivity); - runCheckedSync(cmd); + String result = runCheckedSync(cmd); + // This invocation returns 0 even when it fails. + if (result.contains('Error: ')) { + printError(result.trim()); + return false; + } return true; } @@ -410,10 +417,10 @@ } List<AndroidDevice> getAdbDevices() { - if (androidSdk == null) + String adbPath = getAdbPath(androidSdk); + if (adbPath == null) return <AndroidDevice>[]; - String adbPath = androidSdk.adbPath; List<AndroidDevice> devices = []; List<String> output = runSync(<String>[adbPath, 'devices', '-l']).trim().split('\n'); @@ -445,9 +452,8 @@ String modelID = match[3]; String deviceCodeName = match[4]; - // Convert `Nexus_7` / `Nexus_5X` style names to `Nexus 7` ones. if (modelID != null) - modelID = modelID.replaceAll('_', ' '); + modelID = cleanAdbDeviceName(modelID); devices.add(new AndroidDevice( deviceID,