gclient sync
).You do not need Dart installed, as a Dart tool chain is automatically downloaded as part of the “getting the code” step. Similarly for the Android SDK, it's downloaded by the build step below where you run download_android_tools.py
.
To get the code:
https://github.com/flutter/engine
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.flutter
..gclient
file in the flutter
directory with the following contents, replacing <your_name_here
> with your GitHub account name:solutions = [ { "managed": False, "name": "src", "url": "git@github.com:<your_name_here>/engine.git", "custom_deps": {}, "deps_file": "DEPS", "safesync_url": "", }, ] target_os = ["android"]
cd flutter
(Change to the directory in which you put the .gclient
file)gclient sync
This will fetch all the source code that Flutter depends on. Avoid interrupting this script, it can leave your repository in an inconsistent state that is tedious to clean up.cd src
(Change to the directory that gclient sync
created in your flutter
directory)git remote add upstream git@github.com:flutter/engine.git
(So that you fetch from the master repository, not your clone, when running git fetch
et al).../flutter/src/third_party/dart-sdk/dart-sdk/bin/
to your path so that you can run the pub
tool more easily.Currently we support building on Linux only, for an Android target and for a headless Linux target. Building on MacOS for Android, iOS, and a head-less MacOS target is coming soon.
From the ‘src’ directory that the gclient sync
step created earlier:
./tools/android/download_android_tools.py
sudo ./build/install-build-deps-android.sh
brew install ant
.Run the following steps, again from the aforementioned ‘src’ directory:
./sky/tools/gn --android
ninja -C out/android_Debug
./sky/tools/shelldb start out/android_Debug/ examples/hello_world/lib/main.dart
sudo ./build/install-build-deps.sh
./sky/tools/gn
ninja -C out/Debug
./sky/tools/run_tests --debug
runs the tests on the host machine using out/Debug
../out/Debug/sky_shell --package-root=sky/unit/packages sky/unit/test/harness/trivial_test.dart
./sky/tools/run_tests --debug test/harness/trivial_test.dart
Note: The tests are headless, you won't see any UI. You can use print
to generate console output or you can interact with the DartVM via observatory at http://localhost:8181/.
To add a test, simply create a file whose name ends with _test.dart
in the sky/unit/test
directory. The test should have a main
function and use package:test
.
$ export PATH=$PATH:`pwd`/third_party/dart-sdk/dart-sdk/bin
examples
directory, for example examples/stocks
.pub get
from the example folder of your choice to make sure that you have all of the Dart dependencies.$ ./packages/sky/sky_tool --local-build start
--local-build
parameter attempts to determine the location of your local build directory. You can override it by specifying the --sky-src-path
and --android-debug-build-path
parameters. These parameters should not normally be needed, though. Run $ ./packages/sky/sky_tool -h
to see details about the parameters.lib/main.dart
file. For example, to run the tabs.dart
example in the examples/widgets
directory on a connected Android device, from that directory you would run:$ ./packages/sky/sky_tool --local-build start tabs.dart
examples
directory, any changes you make to the example code, as well as any changes to Dart code in the sky
directory and subdirectories will automatically be picked when you relaunch the app. You can do the same for your own code by mimicking the pubspec.yaml
files in the examples
subdirectories.$ ./packages/sky/sky_tool --local-build listen
in the various example directories (or your own Sky apps) to listen for changes you are making to the app and automatically update the running SkyShell instance on your Android device. iOS device and simulator support are coming soon.--local-build
in any of the above commands with --release
if you have made release builds and want to test with them. E.g., $ ./packages/sky/sky_tool --release start
will attempt to use your release build of the Android SkyShell.apk.$ ./packages/sky/sky_tool --local-build install
.The Sky engine repository gladly accepts contributions via GitHub pull requests.
To start working on a patch:
git fetch upstream
git checkout upstream/master -b name_of_your_branch
git commit -a -m "<your brief but informative commit message>"
git push origin name_of_your_branch
To send us a pull request:
git pull-request
(if you are using Hub) or go to https://github.com/<your_name_here>/sky_engine
and click the “Compare & pull request” buttonPlease peruse our style guides and design principles before working on anything non-trivial. These guidelines are intended to keep the code consistent and avoid common pitfalls.
Please make sure all your checkins have detailed commit messages explaining the patch. If you made multiple commits for a single pull request, either make sure each one has a detailed message explaining that specific commit, or squash your commits into one single checkin with a detailed message before sending the pull request.
You must complete the Contributor License Agreement. You can do this online, and it only takes a minute. If you‘ve never submitted code before, you must add your (or your organization’s) name and contact info to the AUTHORS file.