赞
踩
使用 Flutter 构建过 App 的人一定有一个困惑,就是 Flutter 编译出的产物到底是什么玩意。有时候分为几个文件,有时候是一个动态库,真的叫人摸不着头脑。
本文详细解释一下 Flutter 的编译模式。
编程语言要达到可运行的目的需要经过编译,一般地来说,编译模式分为两类:JIT 和 AOT。
JIT 全称 Just In Time (即时编译),典型的例子就是 v8,它可以即时编译并运行 JavaScript。所以你只需要输入源代码字符串,v8 就可以帮你编译并运行代码。通常来说,支持 JIT 的语言一般能够支持自省函数(eval),在运行时动态地执行代码。
JIT 模式的优势是显而易见的,可以动态下发和执行代码,而不用管用户的机器是什么架构,为应用的用户提供丰富而动态地内容。
但 JIT 的劣势也是显而易见的,大量字符串的代码很容易让 JIT 编译器花费很多时间和内存进行编译,给用户带来的直接感受就是应用启动慢。
AOT 全称 Ahead Of Time(事前编译),典型的例子就是 C/C++,LLVM 或 GCC 通过编译并生成 C/C++ 的二进制代码,然后这些二进制通过用户安装并取得执行权限后才可以通过进程加载执行。
AOT 的优势也是显而易见的,事先编译好的二进制代码,加载和执行的速度都会非常快。&
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。