Pipe strong mode option for iOS simulator. (#14002)

diff --git a/packages/flutter_tools/bin/xcode_backend.sh b/packages/flutter_tools/bin/xcode_backend.sh
index cdf00b6..92356c1 100755
--- a/packages/flutter_tools/bin/xcode_backend.sh
+++ b/packages/flutter_tools/bin/xcode_backend.sh
@@ -93,6 +93,11 @@
     preview_dart_2_flag="--preview-dart-2"
   fi
 
+  local strong_flag=""
+  if [[ -n "$STRONG" ]]; then
+    strong_flag="--strong"
+  fi
+
   if [[ "$CURRENT_ARCH" != "x86_64" ]]; then
     local aot_flags=""
     if [[ "$build_mode" == "debug" ]]; then
@@ -107,7 +112,8 @@
       --target="${target_path}"                                             \
       ${aot_flags}                                                          \
       ${local_engine_flag}                                                  \
-      ${preview_dart_2_flag}
+      ${preview_dart_2_flag}                                                \
+      ${strong_flag}                                                        \
 
     if [[ $? -ne 0 ]]; then
       EchoError "Failed to build ${project_path}."
@@ -140,6 +146,7 @@
     ${precompilation_flag}                                                \
     ${local_engine_flag}                                                  \
     ${preview_dart_2_flag}                                                \
+    ${strong_flag}                                                        \
 
   if [[ $? -ne 0 ]]; then
     EchoError "Failed to package ${project_path}."
diff --git a/packages/flutter_tools/lib/src/compile.dart b/packages/flutter_tools/lib/src/compile.dart
index 3e738f6..27d096f 100644
--- a/packages/flutter_tools/lib/src/compile.dart
+++ b/packages/flutter_tools/lib/src/compile.dart
@@ -120,14 +120,16 @@
 /// The wrapper is intended to stay resident in memory as user changes, reloads,
 /// restarts the Flutter app.
 class ResidentCompiler {
-  ResidentCompiler(this._sdkRoot)
+  ResidentCompiler(this._sdkRoot, {bool strongMode: false})
     : assert(_sdkRoot != null) {
     // This is a URI, not a file path, so the forward slash is correct even on Windows.
     if (!_sdkRoot.endsWith('/'))
       _sdkRoot = '$_sdkRoot/';
+    _strongMode = strongMode;
   }
 
   String _sdkRoot;
+  bool _strongMode;
   Process _server;
   final _StdoutHandler stdoutHandler = new _StdoutHandler();
 
@@ -157,13 +159,17 @@
     final String frontendServer = artifacts.getArtifactPath(
       Artifact.frontendServerSnapshotForEngineDartSdk
     );
-    _server = await processManager.start(<String>[
+    final List<String> args = <String>[
       _dartExecutable(),
       frontendServer,
       '--sdk-root',
       _sdkRoot,
       '--incremental'
-    ]);
+    ];
+    if (_strongMode) {
+      args.add('--strong');
+    }
+    _server = await processManager.start(args);
     _server.stdout
       .transform(UTF8.decoder)
       .transform(const LineSplitter())
diff --git a/packages/flutter_tools/lib/src/resident_runner.dart b/packages/flutter_tools/lib/src/resident_runner.dart
index 770ee46..8bc490c 100644
--- a/packages/flutter_tools/lib/src/resident_runner.dart
+++ b/packages/flutter_tools/lib/src/resident_runner.dart
@@ -42,7 +42,8 @@
                 { bool previewDart2 : false, bool strongMode : false }) {
     if (previewDart2)
       generator = new ResidentCompiler(
-        artifacts.getArtifactPath(Artifact.flutterPatchedSdkPath));
+        artifacts.getArtifactPath(Artifact.flutterPatchedSdkPath),
+        strongMode: strongMode);
   }
 
   String viewFilter;