Как исполняется приложение на Flutter на Android

Начал изучать Flutter и захотелось копнуть немного в глубь, однако статей и ресурсов на эту тему не нашел. В случае выполнения программы на Java все предельно ясно. Linux ядро создает процесс, в который помещается своя JVM, на которой отрабатывается наш код. Но как дело обстоит с приложением на dart (flutter)? Как этот код исполняется в os Android?


Ответы (2 шт):

Автор решения: VAndrJ

В официальной документации все предельно подробно расписано:

https://flutter.dev/docs/resources/architectural-overview

Если кратко:

введите сюда описание изображения

Можно провести аналогию, что программа на Flutter - это игра на 2D движке Skia

→ Ссылка
Автор решения: Maker

Приложение исполняется аналогично. В Flutter kotlin либе есть FlutterView, который наследуется от View (SurfaceView и ещё несколько на выбор), он является холстом. Холст поддерживает низкоуровневые инструкции рисования, чем занимается Skia. Если вы посмотрите на Activity внутри папки android, она наследуется от FlutterActivity, а это - ComponentActivity, который содержит в себе FlutterView. Он хранит в себе таже FlutterEngine, который управляет процессом отрисовки приложения и помогает взаимодействовать с вашим кодом на котлине Если вы разберёте apk файл(он zip архив или пр. способом), вы заметите 2 so файла, один из них - flutter, второй - ваш код на дарте. Нативная часть реалуется на котлине, при передачи данных из дарта в котлин и обратно переданные параметры сериализуются, после чего декодируются на второй стороне. FlutterEngine ищет нужный прослушиватель и из С вызывает java/kotlin функцию, передавая данные. Поэтому flutter приложение - обычное андроид приложение, к которому добавлено несколько so - шек.

→ Ссылка