mirror of
https://github.com/flutter/flutter.git
synced 2026-02-20 02:29:02 +08:00
91 lines
3.3 KiB
Markdown
91 lines
3.3 KiB
Markdown
Hacking on Sky
|
|
==============
|
|
|
|
Building
|
|
--------
|
|
|
|
* Follow the setup & build instructions for [Mojo](https://github.com/domokit/mojo)
|
|
|
|
The build directory will be `out/Debug` for Linux debug builds, and
|
|
`out/Release` for Linux release builds. For Android builds, prefix
|
|
`android_`, as in, `android_Debug`.
|
|
|
|
For Sky on iOS, you can try following these [experimental instructions](https://docs.google.com/document/d/1qm8Vvyz8Mngw6EsSg4FELQ7FOegjBJ5Itg9OBJGN5JM/edit#heading=h.ikz9bdwswdct).
|
|
|
|
Running applications
|
|
--------------------
|
|
|
|
To run an application on your device, run:
|
|
|
|
* ``./mojo/tools/mojodb start out/android_Debug [url]``
|
|
|
|
`mojodb` has numerous commands, visible via `mojodb help`. Common ones include:
|
|
* `mojodb start` BUILD_DIR [url]
|
|
* `mojodb load` [url]
|
|
* `mojodb stop`
|
|
* `mojodb start_tracing` # Starts recoding a performance trace (use stop_tracing to stop)
|
|
* `mojodb print_crash` # Symbolicate the most recent crash from android.
|
|
|
|
Once `mojodb start` is issued, all subsequent commands will be sent to
|
|
the running mojo_shell instance (even on an attached android device).
|
|
`mojodb start` reads gn args from the passed build directory to
|
|
determine whether its using android, for example.
|
|
|
|
Running tests
|
|
-------------
|
|
|
|
Tests are only supported on Linux currently.
|
|
|
|
* ``./sky/tools/test_sky --debug``
|
|
* This runs the tests against ``//out/Debug``. If you want to run against
|
|
``//out/Release``, omit the ``--debug`` flag.
|
|
|
|
Running tests manually
|
|
----------------------
|
|
|
|
Running tests manually lets you more quickly iterate during
|
|
development; rather than having to compile and rerun all the tests,
|
|
then trawl through the build output to find the current results, you
|
|
can just run the test you're working on and reload it over and over,
|
|
seeing the output right there on your console.
|
|
|
|
* ``sky/tools/skygo/linux64/sky_server -v -p 8000 out/Debug out/Debug/gen/dart-pkg/packages``
|
|
* ``out/Debug/mojo_shell --args-for="mojo:native_viewport_service --use-headless-config --use-osmesa" --args-for"=mojo:sky_viewer --testing" --content-handlers=application/dart,mojo:sky_viewer --url-mappings=mojo:window_manager=mojo:sky_tester,mojo:surfaces_service=mojo:fake_surfaces_service mojo:window_manager``
|
|
* The ``sky_tester`` should print ``#READY`` when ready
|
|
* Type the URL you wish to run, for example ``http://127.0.0.1:8000/sky/tests/widgets/dialog.dart``, and press the enter key
|
|
* The harness should print the results of the test. You can then type another URL.
|
|
|
|
Writing tests
|
|
-------------
|
|
|
|
We recommend using the [Dart
|
|
``test``](https://pub.dartlang.org/packages/test) testing framework.
|
|
See [``sky/tests/raw/color_bounds.dart``](tests/raw/color_bounds.dart)
|
|
for an example.
|
|
|
|
Debugging Sky
|
|
-------------
|
|
|
|
This document aims to explain how to debug Sky itself.
|
|
|
|
### C++
|
|
|
|
Launch a debug Sky build on Linux as follows (where `app.dart` is the
|
|
test you are running and trying to debug):
|
|
|
|
```bash
|
|
mojodb start --gdb out/Debug app.dart
|
|
mojodb gdb_attach
|
|
```
|
|
|
|
Once gdb has loaded, hit `c` to start the app. The linux simulator
|
|
will load (slowly), after spawning many threads. When your app
|
|
crashes, it will pause in the debugger. At that point, regular gdb
|
|
commands will work: `n` to step over the current statement, `s` to
|
|
step into the current statement, `f` to step out of the current block,
|
|
`c` to continue until the next breakpoint or exception.
|
|
|
|
### Dart
|
|
|
|
Use Observatory.
|