Developing with Flutter on Apple Silicon
Flutter includes support for developing on macOS devices with Apple Silicon (M1) hardware. This wiki page documents ongoing work relating to the Flutter toolchain providing native support for this processor architecture.
We recommend using Flutter 2.5 or later on Apple Silicon machines. You must also have the Rosetta 2 translation environment available, which you can install manually by running:
$ sudo softwareupdate --install-rosetta --agree-to-license
If you see CocoaPods crashes related to ffi
, try reinstalling the Ruby gem with the --enable-libffi-alloc
flag:
sudo gem uninstall ffi && sudo gem install ffi -- --enable-libffi-alloc
You can use Apple Silicon-based Mac devices as a developer workstation (host) for building Flutter apps. While some tools still use Rosetta, Apple Silicon-based Macs are fully supported as a host.
As we build more Apple Silicon support into the tooling, and depending on your tolerance for risk, you may want to experiment with the beta
channel. (This was previously also available on the dev channel, but it has been retired.)
Issue 60118 tracks the full set of work to support this feature.
Flutter has support for building macOS apps, with beta snapshots available in the stable
channel and ongoing development taking place.
Compiled Intel macOS binaries work on Apple Silicon without change thanks to the Rosetta 2 translation environment, which converts x86_64 instructions to ARM64 equivalents.
We also plan to offer support for compilation directly to ARM64, as well as universal binaries that combine x86_64 and ARM64 assets. Issue 60113 is the umbrella bug tracking this work.
If you experience a problem relating to using Flutter on Apple Silicon hardware, please file an issue on GitHub with specific repro steps and information about your hardware and software configuration (paste the results of flutter doctor -v
). Thank you!
- Home of the Wiki
- Roadmap
- API Reference (stable)
- API Reference (main)
- Glossary
- Contributor Guide
- Chat on Discord
- Design documents
- Code of Conduct
- Issue triage reports (latest)
- Our Values
- Tree hygiene
- Issue hygiene and Triage
- Style guide for Flutter repo
- Project teams
- Contributor access
- What should I work on?
- Popular issues
- Running and writing tests
- Release process
- Flutter Framework Gardener Rotation
- Rolling Dart
- Manual Engine Roll with Breaking Commits
- Updating Material Design Fonts & Icons
- Postmortems and Retrospectives
- Hotfix Documentation Best Practices
- In case of emergency
- Landing Changes With Autosubmit
- Setting up the Framework development environment
- The Framework architecture
- API Docs code block generation
- Running examples
- Using the Dart analyzer
- The flutter run variants
- Test coverage for package:flutter
- Writing a golden-file test for package:flutter
- Managing template image assets
- Setting up the Engine development environment
- Compiling the engine
- Debugging the engine
- Using Sanitizers with the Flutter Engine
- Testing the engine
- The Engine architecture
- Flutter's modes
- Crashes
- more...
- Setting up the Packages development environment
- Plugins and Packages repository structure
- Contributing to Plugins and Packages
- Understanding Packages tests
- Plugin Tests
- Releasing a Plugin or Package
- more...