[flutter_tools] Reland fast start by default for Android (#49315)
diff --git a/dev/devicelab/bin/tasks/commands_test.dart b/dev/devicelab/bin/tasks/commands_test.dart index c12b4db..3750b5f 100644 --- a/dev/devicelab/bin/tasks/commands_test.dart +++ b/dev/devicelab/bin/tasks/commands_test.dart
@@ -26,7 +26,7 @@ print('run: starting...'); final Process run = await startProcess( path.join(flutterDirectory.path, 'bin', 'flutter'), - <String>['run', '--verbose', '--disable-service-auth-codes', '-d', device.deviceId, 'lib/commands.dart'], + <String>['run', '--verbose', '--disable-service-auth-codes', '--no-fast-start', '-d', device.deviceId, 'lib/commands.dart'], ); final StreamController<String> stdout = StreamController<String>.broadcast(); run.stdout
diff --git a/dev/devicelab/bin/tasks/named_isolates_test.dart b/dev/devicelab/bin/tasks/named_isolates_test.dart index cc22801..af0bf60 100644 --- a/dev/devicelab/bin/tasks/named_isolates_test.dart +++ b/dev/devicelab/bin/tasks/named_isolates_test.dart
@@ -26,7 +26,7 @@ Completer<void> firstNameFound = Completer<void>(); Completer<void> secondNameFound = Completer<void>(); final Process runProcess = await _run(device: device, command: - <String>['run', '--disable-service-auth-codes'], stdoutListener: (String line) { + <String>['run', '--disable-service-auth-codes', '--no-fast-start'], stdoutListener: (String line) { if (line.contains(_kFirstIsolateName)) { firstNameFound.complete(); } else if (line.contains(_kSecondIsolateName)) {
diff --git a/dev/devicelab/bin/tasks/run_machine_concurrent_hot_reload.dart b/dev/devicelab/bin/tasks/run_machine_concurrent_hot_reload.dart index 80fb3fc..4a20339 100644 --- a/dev/devicelab/bin/tasks/run_machine_concurrent_hot_reload.dart +++ b/dev/devicelab/bin/tasks/run_machine_concurrent_hot_reload.dart
@@ -48,6 +48,7 @@ 'run', '--machine', '--verbose', + '--no-fast-start', '-d', device.deviceId, 'lib/commands.dart',
diff --git a/dev/devicelab/bin/tasks/service_extensions_test.dart b/dev/devicelab/bin/tasks/service_extensions_test.dart index e91f4e5..06aacf1 100644 --- a/dev/devicelab/bin/tasks/service_extensions_test.dart +++ b/dev/devicelab/bin/tasks/service_extensions_test.dart
@@ -25,7 +25,7 @@ print('run: starting...'); final Process run = await startProcess( path.join(flutterDirectory.path, 'bin', 'flutter'), - <String>['run', '--verbose', '--disable-service-auth-codes', '-d', device.deviceId, 'lib/main.dart'], + <String>['run', '--verbose', '--no-fast-start', '--disable-service-auth-codes', '-d', device.deviceId, 'lib/main.dart'], ); run.stdout .transform<String>(utf8.decoder)
diff --git a/dev/devicelab/lib/tasks/perf_tests.dart b/dev/devicelab/lib/tasks/perf_tests.dart index 9e9aaf0..d760c54 100644 --- a/dev/devicelab/lib/tasks/perf_tests.dart +++ b/dev/devicelab/lib/tasks/perf_tests.dart
@@ -719,6 +719,7 @@ print('launching $project$test on device...'); await flutter('run', options: <String>[ '--verbose', + '--no-fast-start', '--${_reportedDurationTestToString(flavor)}', '--no-resident', '-d', device.deviceId,
diff --git a/packages/flutter_tools/lib/src/commands/run.dart b/packages/flutter_tools/lib/src/commands/run.dart index 006d521..10ae7f4 100644 --- a/packages/flutter_tools/lib/src/commands/run.dart +++ b/packages/flutter_tools/lib/src/commands/run.dart
@@ -189,8 +189,7 @@ ) ..addFlag('fast-start', negatable: true, - defaultsTo: false, - hide: true, + defaultsTo: true, help: 'Whether to quickly bootstrap applications with a minimal app. ' 'Currently this is only supported on Android devices. This option ' 'cannot be paired with --use-application-binary.' @@ -319,10 +318,6 @@ await super.validateCommand(); } - if (boolArg('fast-start') && runningWithPrebuiltApplication) { - throwToolExit('--fast-start is not supported with --use-application-binary'); - } - devices = await findAllTargetDevices(); if (devices == null) { throwToolExit(null); @@ -365,7 +360,9 @@ vmserviceOutFile: stringArg('vmservice-out-file'), // Allow forcing fast-start to off to prevent doing more work on devices that // don't support it. - fastStart: boolArg('fast-start') && devices.every((Device device) => device.supportsFastStart), + fastStart: boolArg('fast-start') + && !runningWithPrebuiltApplication + && devices.every((Device device) => device.supportsFastStart), ); } } @@ -428,12 +425,6 @@ } for (final Device device in devices) { - if (!device.supportsFastStart && boolArg('fast-start')) { - globals.printStatus( - 'Using --fast-start option with device ${device.name}, but this device ' - 'does not support it. Overriding the setting to false.' - ); - } if (await device.isLocalEmulator) { if (await device.supportsHardwareRendering) { final bool enableSoftwareRendering = boolArg('enable-software-rendering') == true;
diff --git a/packages/flutter_tools/test/commands.shard/hermetic/run_test.dart b/packages/flutter_tools/test/commands.shard/hermetic/run_test.dart index 466f4c8..ccf8b2f 100644 --- a/packages/flutter_tools/test/commands.shard/hermetic/run_test.dart +++ b/packages/flutter_tools/test/commands.shard/hermetic/run_test.dart
@@ -77,7 +77,7 @@ ]); fail('Expect exception'); } catch (e) { - expect(e.toString(), contains('--fast-start is not supported with --use-application-binary')); + expect(e.toString(), isNot(contains('--fast-start is not supported with --use-application-binary'))); } }, overrides: <Type, Generator>{ FileSystem: () => MemoryFileSystem(), @@ -115,10 +115,10 @@ } final BufferLogger bufferLogger = globals.logger as BufferLogger; - expect(bufferLogger.statusText, contains( + expect(bufferLogger.statusText, isNot(contains( 'Using --fast-start option with device mockdevice, but this device ' 'does not support it. Overriding the setting to false.' - )); + ))); }, overrides: <Type, Generator>{ FileSystem: () => MemoryFileSystem(), ProcessManager: () => FakeProcessManager.any(),