显然,扑是上运行的应用程序的框架iOS,并Android使用一个代码库.但是它如何设法这样做呢?它会编译为本机代码,还是有中级语言或VM参与该过程?我尝试在Github上阅读一些源代码,但我找不到任何东西.
Rob*_*bin 24
术语扑是指两个主要的东西/概念
1.Flutter SDK:是一组工具,允许您在一个代码库中为 Android 和 iOS 平台构建任何类型的应用程序。
2.Flutter Framework:基本上它提供了所有预定义的小部件/小部件库、实用功能和包。
我们知道 Flutter 使用 Dart 作为编程语言。Flutter 构建/开发的应用程序可以在 Android 和 iOS 上运行。因此,我们需要将 dart 代码编译为原生机器 android/ios 代码。
并且编译任务由 Flutter SDK 完成。
说到编译,有两种操作/编译
静态编译:静态编译的程序在执行前都被翻译成机器码。例如:AOT(Ahead of Time) - C/C++。
动态口译:通过一对一的翻译来执行。例如:JIT(及时)- Javascript/Python。
现在我们知道了 dart 代码如何转换为机器码,以及两种编译。
但是这两种编译和 Flutter 有什么关系呢?
要知道这一点,我们需要知道几件事。Flutter 不使用任何类型的 Web 视图或操作系统的本机控件。相反,flutter 使用它自己的高性能渲染引擎(Skia)来绘制小部件。
而高性能主要靠两点来保证。
现在我们终于说到点子上了。在谈dart语言的编译过程之前,需要提一下,JIT&AOT指的是程序运行的方式,与编程语言没有很强的相关性。还有一些语言同时支持 JIT 和 AOT,例如:Java、Python。
first time - Compiled -> intermediate byte code
later -> byte code will be directly executed
Run Code Online (Sandbox Code Playgroud)
DART 运行时和编译器还支持两个关键功能的组合 - JIT 和 AOT。
???如果您有兴趣了解颤振框架结构???
底部的两层(Foundation 和 Animation、Painting、Gestures)合并为一个 dart UI 层,dart:ui.
渲染层负责构建 UI 树,如果发生任何更改,则比较和更新小部件树。最后在设备屏幕上绘制(类似于 React Virtual DOM)。
Widgets层是flutter提供的基础组件库。
而top(Material, Cupertino)是flutter提供的一个组件库。这是我们开发人员最常处理的地方/事情。
我想,现在大家都清楚了。快乐编码!
来源:book.flutterchina.club、flutter.dev、maximilian schwarzmüller 的 flutter 课程、Flutter 官方 YouTube 频道。
Gün*_*uer 20
使用Dart的AoT compliation功能将Dart源代码编译为本机代码.它仍然需要运行Dart VM,但代码会提前编译为本机代码,因为iOS不允许动态编译.
Flutter还可以调用Android并使用仅Java提供的Android功能.Flutter支持构建允许调用本机平台代码的自定义插件.
让我在此图的帮助下进行解释:
Flutter使用Dart编程语言构建。Flutter有2个主要组成部分:
Flutter Framework使用Dart作为编程语言,并且Framework具有一组实用程序功能,您可以通过它们在Flutter App中添加UI元素和小部件。
Flutter SDK允许您构建,部署和自定义Flutter应用程序。
Flutter使用Dart
因为Dart是强类型的面向对象编程语言。它具有“提前编译”和“即时编译”功能。
提前编译可使Flutter SDK和Dart生成可在Android和iOS上编译的本机ARM代码。
有关更多详细信息,您可以观看以下视频: Flutter如何工作以及Flutter为什么使用Dart
| 归档时间: |
|
| 查看次数: |
7183 次 |
| 最近记录: |