Как Дарт / Флаттер компилируется в Android? - PullRequest
0 голосов
/ 27 января 2019

Я не могу найти никаких конкретных ресурсов по этому вопросу, Dart скомпилирован в JVM, или команда Google скомпилировала Dart VM для запуска на JVM, а затем запустила Dart внутри Dart VM внутри JVM?

Первое имеет больше смысла, и оно вписывается в мантру «без моста», но второе кажется более встроенным в , как выглядит интеграция между собственным и флаттерным кодом

Ответы [ 2 ]

0 голосов
/ 27 января 2019

Иногда вы найдете ответ сразу после того, как спросите его -_- Нашли этот ответ Reddit

Оба!

Когда разрабатывая , Flutter использует VM , так что вы можете получить хорошие вещи, такие как горячая перезагрузка. Но для production он компилируется (AOT) в native ARMБиблиотека затем использует NDK на Android и LLVM на iOS для встраивания в нативные приложения (бегуны).

Именно поэтому вы получаете баннер в режиме отладки / медленный режим в правом верхнем углу, чтобы помнить, что вы, вы используете виртуальную машину.

Проверьте https://flutter.io/faq/#technology

Также https://www.youtube.com/watch?v=FUxV4MIhS3g

PS Это не означает, что Dart VM не подходит для производственных сред,Вы все еще можете использовать его на серверных или долгосрочных задачах, например, JVM, CRL, Node.js и т. д. Я лично использую его для HTTP API и действительно наслаждаюсь им.

0 голосов
/ 27 января 2019

Dart компилируется в исполняемый файл машинного кода (ARM, Intel, ...) и поставляется с некоторым собственным кодом платформы (Java, Kotlin, Objective-C / Swift) для взаимодействия с собственной платформой.

См. Также

Как Flutter запускает мой код на Android?Код C и C ++ движка

скомпилирован с Android NDK.Код Dart (как SDK, так и ваш) заблаговременно (AOT) скомпилирован в собственную библиотеку ARM.Эта библиотека включена в Android-проект «бегущий», и все это встроено в APK.При запуске приложение загружает библиотеку Flutter.Любой рендеринг, ввод или обработка событий и т. Д. Делегируются скомпилированному Flutter и коду приложения.Это похоже на работу многих игровых движков.

Сборки в режиме отладки используют виртуальную машину (ВМ) для запуска кода Dart (отсюда и выводимый баннер «отладка», напоминающий людям, что они немного медленнее)чтобы включить горячую перезагрузку с сохранением состояния.

Как Flutter запускает мой код на iOS?Код C и C ++ движка

скомпилирован с LLVM.Код Dart (как SDK, так и ваш) заблаговременно (AOT) скомпилирован в собственную библиотеку ARM.Эта библиотека включена в iOS-проект «бегуна», и все это встроено в .ipa.При запуске приложение загружает библиотеку Flutter.Любой рендеринг, ввод или обработка событий и т. Д. Делегируются скомпилированному Flutter и коду приложения.Это похоже на работу многих игровых движков.

Сборки в режиме отладки используют виртуальную машину (ВМ) для запуска кода Dart (отсюда выводится баннер «отладки», который напоминает людям, что они немного медленнее)чтобы включить горячую перезагрузку с сохранением состояния.

https://flutter.io/docs/resources/faq#how-does-flutter-run-my-code-on-android

См. также https://proandroiddev.com/flutters-compilation-patterns-24e139d14177

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...