To keep the scope of this CL as small of possible I'm leaving the actual
implementation of the platform view mechanics to a following CL.
This CL introduces:
* A PlatformViewsController class which will be responsible for creating,
resizing, and disposing platform views.
* A PlatformViewRegistry which is exposed through the PluginRegistry
and allows plugins to register factories for platform views.
Android plugin code will add support for a new platform view type by
implementing PlatformViewFactory, and registering a factory with the
registry, e.g:
```java
registrar.platformViewRegistry().registerViewFactory(
'webview',
new FlutterWebViewFactory()
);
```
On the Dart side, the framework will ask the engine to create new
platform views by sending a create message over the platformviews method
channel with the unique platform view type id, dimensions, and a unique
id allocated by the framework for the new platform view instance.
The platformviews method channel is also used for resizing and disposing
platform views.
Adds --dynamic and --interpreter flags to
tools/gn. These flags result in engines with
properties as follows:
--dynamic:
- JIT targeting native code on Android and
DBC on iOS
--interpreter
- Target DBC even if running on Android.
For example:
gn --android --dynamic --interpreter --runtime-mode release
Will generate an engine:
- Without Dart asserts
- Without Observatory
- With JIT compililation to DBC
into out/android_dynamic_release_dbc
This allows applications to start a Flutter engine instance during app startup
and keep it running throughout the app process' lifetime.
FlutterActivity subclasses can override createFlutterNativeView to provide a
preinitialized FlutterNativeView instance and override retainFlutterNativeView
to signal that the FlutterNativeView should be kept alive when the activity
is destroyed.
* Revert "Roll dart sdk to e6d7d67f4b35556805dd083fed15bf3ed41f7e33. (#5165)"
This reverts commit 9e4c5d0e1f9daf0c46fdc7e5d1e81ce9c36b65c4.
* Revert "Enables system chrome customization on Android M/O and greater (#5112)"
This reverts commit f2db5dfd30f12407acab57f04acc8af7c6158891.
The APKAssetProvider will hold a reference to its Java peer
(see ac682632d7)
After dropping this reference, the UI thread must detach from JNI before exiting.
getBitmap had been doing FXL_CHECK assertions to check memory allocation
failures and other errors. getBitmap will now return null to the caller
instead.
(The VM may throw OutOfMemoryError or other exceptions if JNI APIs fail)
Fixes https://github.com/flutter/flutter/issues/16750