diff --git a/packages/flutter_tools/lib/src/android/android_emulator.dart b/packages/flutter_tools/lib/src/android/android_emulator.dart index 5553446dfb..c8cec6d24f 100644 --- a/packages/flutter_tools/lib/src/android/android_emulator.dart +++ b/packages/flutter_tools/lib/src/android/android_emulator.dart @@ -42,12 +42,20 @@ class AndroidEmulator extends Emulator { @override Future launch() async { - final RunResult launchResult = - await runAsync([getEmulatorPath(), '-avd', id]); - - if (launchResult.exitCode != 0) { - printError('$launchResult'); - } + final Future launchResult = + runAsync([getEmulatorPath(), '-avd', id]) + .then((RunResult runResult) { + if (runResult.exitCode != 0) { + printError('$runResult'); + } + }); + // emulator continues running on a successful launch so if we + // haven't quit within 3 seconds we assume that's a success and just + // return. + await Future.any(>[ + launchResult, + new Future.delayed(const Duration(seconds: 3)) + ]); } }