diff --git a/packages/flutter_tools/lib/src/android/android_device.dart b/packages/flutter_tools/lib/src/android/android_device.dart index 42cc36449d7..0f7ee7036e1 100644 --- a/packages/flutter_tools/lib/src/android/android_device.dart +++ b/packages/flutter_tools/lib/src/android/android_device.dart @@ -683,7 +683,6 @@ class AndroidDevice extends Device { return LaunchResult.failed(); } } - resetLogReaders(); return LaunchResult.succeeded(observatoryUri: observatoryUri); } on Exception catch (error) { _logger.printError('Error waiting for a debug connection: $error'); @@ -743,14 +742,6 @@ class AndroidDevice extends Device { _processUtils.runSync(adbCommandForDevice(['logcat', '-c'])); } - /// Android device log readers are singletons. if they are closed by the - /// protocol discovery, the same kind of reader cannot be recreated. - @visibleForTesting - void resetLogReaders() { - _pastLogReader = null; - _logReader = null; - } - @override FutureOr getLogReader({ AndroidApk app, diff --git a/packages/flutter_tools/lib/src/commands/drive.dart b/packages/flutter_tools/lib/src/commands/drive.dart index ddafa37bff6..bcc6fc896e2 100644 --- a/packages/flutter_tools/lib/src/commands/drive.dart +++ b/packages/flutter_tools/lib/src/commands/drive.dart @@ -490,6 +490,12 @@ Future _startApp( globals.printTrace('Starting application.'); + // Forward device log messages to the terminal window running the "drive" command. + final DeviceLogReader logReader = await command.device.getLogReader(app: package); + command._deviceLogSubscription = logReader + .logLines + .listen(globals.printStatus); + final LaunchResult result = await command.device.startApp( package, mainPath: mainPath, @@ -511,15 +517,10 @@ Future _startApp( ); if (!result.started) { + await command._deviceLogSubscription.cancel(); return null; } - // Forward device log messages to the terminal window running the "drive" command. - final DeviceLogReader logReader = await command.device.getLogReader(app: package); - command._deviceLogSubscription = logReader - .logLines - .listen(globals.printStatus); - return result; } diff --git a/packages/flutter_tools/test/general.shard/android/android_device_test.dart b/packages/flutter_tools/test/general.shard/android/android_device_test.dart index b760698d67c..d1ae8cdbca5 100644 --- a/packages/flutter_tools/test/general.shard/android/android_device_test.dart +++ b/packages/flutter_tools/test/general.shard/android/android_device_test.dart @@ -30,20 +30,6 @@ void main() { expect(device.id, '1234'); }); - testWithoutContext('Can reset log reader singletons', () async { - final AndroidDevice device = setUpAndroidDevice(); - final DeviceLogReader logReader = await device.getLogReader(); - final DeviceLogReader logReader2 = await device.getLogReader(); - - expect(logReader, logReader2); - - device.resetLogReaders(); - - final DeviceLogReader logReader3 = await device.getLogReader(); - - expect(logReader, isNot(logReader3)); - }); - testWithoutContext('parseAdbDeviceProperties parses adb shell output', () { final Map properties = parseAdbDeviceProperties(kAdbShellGetprop);