-
Notifications
You must be signed in to change notification settings - Fork 1
Setting up the Framework development environment
Make sure you have the following dependencies available:
-
Linux, Mac OS X, or Windows.
-
git (used for source version control).
-
An IDE. Android Studio with the Flutter plugin is our flagship IDE. You can use whatever IDE you feel most comfortable with.
-
An ssh client (used to authenticate with GitHub).
-
Python (used by some of our tools).
-
The Android platform tools.
You can install this using one of the following commands:
- Mac:
brew install --cask android-platform-tools
- Linux:
sudo apt-get install android-tools-adb
If you're also working on the Flutter engine, you can use the copy of the Android platform tools in
.../engine/src/third_party/android_tools/sdk/platform-tools
. - Mac:
Run the following steps to set up your environment:
-
Ensure that
adb
(from the Android platform tools) is in your path (e.g., thatwhich adb
prints sensible output). -
Fork
https://github.com/flutter/flutter
into your own GitHub account. If you already have a fork, and are now installing a development environment on a new machine, make sure you've updated your fork so that you don't use stale configuration options from long ago. -
If you haven't configured your machine with an SSH key that's known to github then follow the directions here: https://help.github.com/articles/generating-ssh-keys/.
-
git clone [email protected]:<your_name_here>/flutter.git
-
cd flutter
-
git remote add upstream [email protected]:flutter/flutter.git
(So that you fetch from the master repository, not your clone, when runninggit fetch
et al.) -
Add this repository's
bin
directory to your path. That will let you use theflutter
command in this directory more easily. -
Run
flutter update-packages
This will fetch all the Dart packages that Flutter depends on. If version solving failed, trygit fetch upstream
to update Flutter versions beforeflutter update-packages
. (You can replicate most of what this script does by runningpub get
in each directory that contains apubspec.yaml
file, which is rather tedious, hence the script.) -
If you plan on using IntelliJ as your IDE, then also run
flutter ide-config --overwrite
to create all of the IntelliJ configuration files so you can open the main flutter directory as a project and run examples from within the IDE.
Next steps:
- Running examples, to see if your setup works.
-
The flutter tool, to learn about how the
flutter
command line tool works. - Style guide for Flutter repo, to learn how to write code for Flutter.
- Tree hygiene, to learn about how to submit patches.
- Home of the Wiki
- Roadmap
- API Reference (stable)
- API Reference (master)
- Glossary
- Contributor Guide
- Chat on Discord
- Code of Conduct
- Issue triage reports
- Our Values
- Tree hygiene
- Issue hygiene and Triage
- Style guide for Flutter repo
- Project teams
- Contributor access
- What should I work on?
- Running and writing tests
- Release process
- Rolling Dart
- Manual Engine Roll with Breaking Commits
- Updating Material Design Fonts & Icons
- Postmortems
- Setting up the Framework development environment
- The Framework architecture
- The flutter tool
- 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
- 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
- Engine disk footprint
- Comparing AOT Snapshot Sizes
- Custom Flutter engine embedders
- Custom Flutter Engine Embedding in AOT Mode
- Flutter engine operation in AOT Mode
- Engine-specific Service Protocol extensions
- Crashes
- Supporting legacy platforms
- Metal on iOS FAQ
- Engine Clang Tidy Linter
- Why we have a separate engine repo
- Reduce Flutter engine size with MLGO
- Setting up the Plugins development environment
- Setting up the Packages development environment
- Plugins and Packages repository structure
- Plugin Tests
- Contributing to Plugins and Packages
- Releasing a Plugin or Package
- Unexpected Plugins and Packages failures