
Change the following in the `flutter create` templates. I didn't make any auto-migrations for existing apps because none seem that critical: 1. Turn on `ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS` in iOS and macOS. 1. Turn on `BuildIndependentTargetsInParallel` in macOS template. https://github.com/flutter/flutter/pull/125827/files#r1181817619 1. Turn on `DEAD_CODE_STRIPPING` in macOS template. 1. Set `ENABLE_USER_SCRIPT_SANDBOXING=NO` in iOS and macOS template. `flutter` scripts don't work with this on. This might require a migration in the future to explicitly turn this one off. However at least for now if the setting isn't present it defaults to `NO`. Add migration for `LastUpgradeVersion` so users won't see these validation issues in Xcode. Run migrator on all the example apps. A few aren't Flutter apps so I edited them in Xcode. Fixes https://github.com/flutter/flutter/issues/140253 See also https://github.com/flutter/flutter/issues/125817 and https://github.com/flutter/flutter/pull/90304.
iOS Add2App Life Cycle Test
This application demonstrates some basic functionality for Add2App, along with a native iOS ViewController as a baseline and to demonstrate interaction.
The following functionality is currently implemented:
- A regular iOS view controller (UIViewController), similar to the default
flutter create
template (NativeViewController.m). - A FlutterViewController subclass that takes over the full screen. Demos showing this both from a cold/fresh engine state and a warm engine state (FullScreenViewController.m).
- A demo of pushing a FlutterViewController on as a child view.
- A demo of showing both the native and the Flutter views using a platform channel to interact with each other (HybridViewController.m).
- A demo of showing two FlutterViewControllers simultaneously (DualViewController.m).
A few key things are tested here (IntegrationTests.m):
- The ability to pre-warm the engine and attach/detach a ViewController from it.
- The ability to use platform channels to communicate between views.
- The ability to simultaneously run two instances of the engine.
- That a FlutterViewController can be freed when no longer in use (also tested from FlutterViewControllerTests.m).
- That a FlutterEngine can be freed when no longer in use.