Introduce frontend_server that flutter tools will use for compilation. (#3982)

* Introduce frontend_server that allows for interactive and batch modes.

Example of batch mode:
```
$ dart $HOME/p/f/t11/flutter/engine/src/flutter/frontend_server/bin/server.dart --sdk-root=$HOME/p/f/t11/flutter/engine/src/out/android_debug/flutter_patched_sdk --platform-kernel-dill=$HOME/p/f/t11/flutter/engine/src/out/android_debug/flutter_patched_sdk/platform.dill $HOME/p/f/t11/flutter/flutter/examples/flutter_gallery/lib/main.dart

out: result 79256789-598c-4909-a9e4-0ef36d4c26ba
out: 'State&TickerProviderStateMixin^#U0^' is exported from both 'package:flutter/src/widgets/animated_cross_fade.dart' and 'package:flutter/src/widgets/animated_list.dart'.
...
out: Superclass has no method named 'hitTest'.
out: 79256789-598c-4909-a9e4-0ef36d4c26ba $HOME/p/f/t11/flutter/flutter/examples/flutter_gallery/lib/main.dart.dill
$
```

Example of interactive mode - communication via stdin/stdout:
```
$ dart $HOME/p/f/t11/flutter/engine/src/flutter/frontend_server/bin/server.dart --sdk-root=$HOME/p/f/t11/flutter/engine/src/out/android_debug/flutter_patched_sdk --platform-kernel-dill=$HOME/p/f/t11/flutter/engine/src/out/android_debug/flutter_patched_sdk/platform.dill --incremental

out: Frontend server is ready.
in: compile abc.dart
out: result fd99c0f9-12bb-4083-818e-2521d454fdc8
out: fd99c0f9-12bb-4083-818e-2521d454fdc8 abc.dart.dill
in: accept
in: recompile kuka
in: 123.dart
in: 456.dart
in: kuka
out: result d12f8d05-6c79-44f7-a775-1d3469e1be53
in: quit
$
```

* Add test. Cleanup dependencies.

* One more test with mocks

* Remove platform-kernel option. Refactored CompilerOptions. Clean up comments.

* Update license

* Use Uri.base.resolve consistently. Ensure folder path for sdk root. Fix test.

* Fix main_dart for frontend_server build target

* Reintroduce .packages file, add README.md, revert changes to licenses_flutter

* Run analyzer on frontend-server. Update .packages deps so tests can be run too.

* Add analyzer options file

* Clean up dependencies

* Add frontend_server files to license file back

* Fix comment in analysis_options.yaml

* Run frontend_server tests in travis

* Update licenses

* Change a+x permission on travis/test.sh

* pub get before pub run test

* Fix path to when

* Clarify accept/reject instructions

* Formatting, fixed docs, style

* Update license script to skip .travis.yml, when/example. Update license file.

* Update style nits

* Fix license

* Trim license extracted text. Fix licenses

* Update licenses_third_party signature

* Few more tests

* Update dart license

* Update dart license

* Style changes. Fix return value for Future<Null>
19 files changed
tree: a6eda31015c28aa9d226fc8936e3514be8c3a806
  1. assets/
  2. build/
  3. common/
  4. content_handler/
  5. examples/
  6. flow/
  7. fml/
  8. frontend_server/
  9. glue/
  10. lib/
  11. runtime/
  12. shell/
  13. sky/
  14. synchronization/
  15. testing/
  16. tools/
  17. travis/
  18. vulkan/
  19. .clang-format
  20. .gitattributes
  21. .gitignore
  22. .travis.yml
  23. analysis_options.yaml
  24. AUTHORS
  25. BUILD.gn
  26. CONTRIBUTING.md
  27. DEPS
  28. LICENSE
  29. README.md
README.md

Flutter Engine

Build Status

Flutter is a new way to build high-performance, cross-platform mobile apps. Flutter is optimized for today‘s, and tomorrow’s, mobile devices. We are focused on low-latency input and high frame rates on Android and iOS.

The Flutter Engine is the runtime environment for hosting Flutter applications. Most developers will interact with Flutter via the Flutter Framework and APIs, which run inside the engine.

Flutter is an early-stage open-source project. We are still adding features. However, you can build demos and examples today. We hope you try it out and send us feedback.

Community

Join us in our Gitter chat room or join our mailing list, flutter-dev@googlegroups.com.