diff --git a/packages/flutter_tools/bin/xcode_backend.sh b/packages/flutter_tools/bin/xcode_backend.sh index cdf00b6234e..92356c11582 100755 --- a/packages/flutter_tools/bin/xcode_backend.sh +++ b/packages/flutter_tools/bin/xcode_backend.sh @@ -93,6 +93,11 @@ BuildApp() { 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 @@ BuildApp() { --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 @@ BuildApp() { ${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 3e738f6ecd9..27d096ff272 100644 --- a/packages/flutter_tools/lib/src/compile.dart +++ b/packages/flutter_tools/lib/src/compile.dart @@ -120,14 +120,16 @@ Future compile( /// 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 @@ class ResidentCompiler { final String frontendServer = artifacts.getArtifactPath( Artifact.frontendServerSnapshotForEngineDartSdk ); - _server = await processManager.start([ + final List args = [ _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 770ee465527..8bc490c1a39 100644 --- a/packages/flutter_tools/lib/src/resident_runner.dart +++ b/packages/flutter_tools/lib/src/resident_runner.dart @@ -42,7 +42,8 @@ class FlutterDevice { { bool previewDart2 : false, bool strongMode : false }) { if (previewDart2) generator = new ResidentCompiler( - artifacts.getArtifactPath(Artifact.flutterPatchedSdkPath)); + artifacts.getArtifactPath(Artifact.flutterPatchedSdkPath), + strongMode: strongMode); } String viewFilter;