Prevent calls to view.uiIsolate.flutterExit on devices which do not support it (#26201)

diff --git a/packages/flutter_tools/lib/src/device.dart b/packages/flutter_tools/lib/src/device.dart
index 3c6d378..b7e9666 100644
--- a/packages/flutter_tools/lib/src/device.dart
+++ b/packages/flutter_tools/lib/src/device.dart
@@ -184,6 +184,7 @@
 }
 
 abstract class Device {
+
   Device(this.id);
 
   final String id;
@@ -276,11 +277,17 @@
   /// Whether this device implements support for hot restart.
   bool get supportsHotRestart => true;
 
+  /// Whether flutter applications running on this device can be terminated
+  /// from the vmservice.
+  bool get supportsStopApp => true;
+
+  /// Whether the device supports taking screenshots of a running flutter
+  /// application.
+  bool get supportsScreenshot => false;
+
   /// Stop an app package on the current device.
   Future<bool> stopApp(ApplicationPackage app);
 
-  bool get supportsScreenshot => false;
-
   Future<void> takeScreenshot(File outputFile) => Future<void>.error('unimplemented');
 
   @override
diff --git a/packages/flutter_tools/lib/src/fuchsia/fuchsia_device.dart b/packages/flutter_tools/lib/src/fuchsia/fuchsia_device.dart
index 2b6d3b8..be89010 100644
--- a/packages/flutter_tools/lib/src/fuchsia/fuchsia_device.dart
+++ b/packages/flutter_tools/lib/src/fuchsia/fuchsia_device.dart
@@ -151,6 +151,9 @@
   bool get supportsHotRestart => false;
 
   @override
+  bool get supportsStopApp => false;
+
+  @override
   final String name;
 
   @override
diff --git a/packages/flutter_tools/lib/src/resident_runner.dart b/packages/flutter_tools/lib/src/resident_runner.dart
index eca61e9..4bd5dd4 100644
--- a/packages/flutter_tools/lib/src/resident_runner.dart
+++ b/packages/flutter_tools/lib/src/resident_runner.dart
@@ -109,6 +109,9 @@
   }
 
   Future<void> stopApps() async {
+    if (!device.supportsStopApp) {
+      return;
+    }
     final List<FlutterView> flutterViews = views;
     if (flutterViews == null || flutterViews.isEmpty)
       return;
diff --git a/packages/flutter_tools/test/fuchsia/fuchsa_device_test.dart b/packages/flutter_tools/test/fuchsia/fuchsa_device_test.dart
index 2ec75f9..fb192f0 100644
--- a/packages/flutter_tools/test/fuchsia/fuchsa_device_test.dart
+++ b/packages/flutter_tools/test/fuchsia/fuchsa_device_test.dart
@@ -36,6 +36,15 @@
       expect(names.length, 1);
       expect(names.first, 'lilia-shore-only-last');
     });
+
+    test('default capabilities', () async {
+      final FuchsiaDevice device = FuchsiaDevice('123');
+
+      expect(device.supportsHotReload, true);
+      expect(device.supportsHotRestart, false);
+      expect(device.supportsStopApp, false);
+      expect(await device.stopApp(null), false);
+    });
   });
 
   group('displays friendly error when', () {