| # Flutter macOS Embedder | |
| This directory contains files specific to the Flutter macOS embedder. The | |
| embedder is built as a macOS framework that is linked into the target | |
| application. The framework is composed both of macOS-specific code and code | |
| shared with the iOS embedder. These can be found in: | |
| ``` | |
| flutter/shell/platform/darwin/common/framework | |
| flutter/shell/platform/darwin/macos/framework | |
| ``` | |
| Additionally, the framework relies on utility code shared across all embedders, | |
| which is found in: | |
| ``` | |
| flutter/shell/platform/common | |
| ``` | |
| To learn more, see the [Engine architecture wiki][wiki_arch]. | |
| ## Building | |
| Building all artifacts required for macOS occurs in two steps: | |
| * Host binary build: Builds tooling used by the Flutter tool to build Flutter | |
| applications targeting macOS. | |
| * macOS Target build: Builds the framework that implements the macOS Flutter | |
| embedder and exposes public API such as `FlutterViewController` used by | |
| Flutter applications. | |
| Once you've [prepared your environment for engine development][wiki_engine_env], | |
| you can build the macOS embedder from the `src/flutter` directory using the | |
| following commands: | |
| ```sh | |
| # Perform the host build. | |
| ./tools/gn --unopt --no-goma | |
| autoninja -C ../out/host_debug_unopt | |
| # Perform the macOS target build. | |
| ./tools/gn --unopt --mac --no-goma | |
| autoninja -C ../out/mac_debug_unopt | |
| ``` | |
| Builds are architecture-specific, and can be controlled by specifying | |
| `--mac-cpu=arm64` or `--mac-cpu=x64` (default) when invoking `gn`. | |
| Googlers can remove `--no-goma` to make use of the Goma distributed compile | |
| service. | |
| ## Testing | |
| The macOS-specific embedder tests are built as the | |
| `flutter_desktop_darwin_unittests` binary. Like all gtest-based test binaries, a | |
| subset of tests can be run by applying a filter such as | |
| `--gtest_filter='FlutterViewControllerTest.*Key*'`. | |
| More general details on testing can be found on the [Wiki][wiki_engine_testing]. | |
| [wiki_arch]: https://github.com/flutter/flutter/wiki/The-Engine-architecture | |
| [wiki_engine_env]: https://github.com/flutter/flutter/wiki/Setting-up-the-Engine-development-environment | |
| [wiki_engine_testing]: https://github.com/flutter/flutter/wiki/Testing-the-engine |