プラットフォームとして統一したUIを提供しているグラフィカルシェルのことご指摘頂いたEnoさんありがとうございます。engine自身はスレッド作成・管理を行わないスレッド作成・管理は各Platform固有の実装で対応する。Flutter自身は実行スレッドを気にしないため、Embedder側でスレッド割り当てを行う必要がある。Runner内でタスクを実行する。engineのタスクの実行環境で、Embedderが提供する。engineを利用する操作には、必ずPlatformのスレッドが必要になる他のスレッドの場合、スレッドセーフではない。Androidの場合、メインスレッド以外でUI操作を行うとクラッシュしてしまう。engineの多くのコンポーネントは各Platformにおいてスレッドセーフではない。RunnerはPlatformからのいかなるMessageを処理できる。プラグインがわざわざ各Platformごとのスレッド処理を追加しなくて良い。一般的に多くのPlatformにおいて、スレッドセーフに処理を実行するにはメインスレッドでの実行を行う必要がある。プラグイン(DartVM上)でスレッド処理を追加することは可能である。メインスレッド上で時間がかかるタスクを行わず、他のワーカースレッドを起動する。RunnerFlutterアプリ上でのレンダリング実行のためのengineとのバインディングを行う。messagesthreadのようなもの?各frameでの実行内容1レンダリングが必要なフレームをengineに伝える2次の垂直同期をEngineに知らせるようにPlatformに伝える3Engineに垂直同期のタイミングを伝える4eingineはFlutter上で以下を実行させるインターポレーターの更新レイアウト時にWidgetを再編成Widgetを更新する。APIには依存しない。Runnerの処理は重くなりやすい。Runnerに流す方が良い。Runnerのみなので、共通のContextを利用出来る。--local-engine=host_debug_unoptここで落ちた.....。Githubのissueでも同じ人が数人。acceptable.https://gyazo.com/bea1ca9b71bbdce93867ee5057ba7664#flutter_meetup#flutter#flutter_engine。