blob: fb582924d6f1a7f1568f1647c0ee92c9a6e0ae34 [file] [log] [blame] [view]
# 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