美文网首页
flutter 热重载原理(一)

flutter 热重载原理(一)

作者: 今年27 | 来源:发表于2022-12-13 22:32 被阅读0次

    我们都知道OC是由Clang(LVVM的前端)编译的(包括词法分析,语法分析,语义分析),然后将OC代码编译成IR代码,IR然后编译成汇编代码,LVVM架构。这是典型的AOT编译。
    Flutter是由Dart语言开的,运行在DartVM(即Dart虚拟机,支持两种方式,一种是AOT,还一种是JIT。热重载就是建立在JIT上的。)
    热重载,即DartVM去增量的读取修改的文件,然后及时更新。
    从运行效率来说AOT效率更快,因为AOT运行的字节码(二进制),可以cpu直接执行,而JIT执行的代码,属于高级语言,任何一门高级语言再执行前都要做(词法分析,语法分析,语义分析),然后转成语法树,然后转成字节码,相当于同声翻译。
    flutter在开发阶段支持热重载,发布阶段不支持热重载。
    那么flutter是如何热重载的呢。
    流程大概是Dart代码->flutter_tools热重载平台->DartVM热重载
    新创建一个flutter_hotreload工程,运行,
    用Android studio打开/opt/flutter/packages/flutter_tools工程,点击Add Configurations


    flutter_tools

    然后点击+号


    点击+
    选择Dart Command Line App
    选择Dart Command Line App
    可以看到这个界面
    Dart Command Line App
    配置一下
    配置
    点击Apply,点击OK,然后点击运行按钮,直到console出现如下图所示
    运行成功
    证明我们的flutter_tools与flutter_hotreload挂载成功

    而原项目则会显示失败


    原项目

    实际上原项目的热重载也是基于flutter_tools,既然已经被手动挂载了,原项目的挂载也自然就失效了。

    我们在原项目修改一下代码,然后在flutter_tools 的console中输入r,也会刷新界面,接下来就是研究热重载的底层原理。

    注意:如果报dartsdk找不到的错误可以进入preference界面


    preference

    修改Flutter SDK path为自己的flutter sdk地址,然后点击Apply,这样Dart的地址会自动挂在上。


    Dart地址

    相关文章

      网友评论

          本文标题:flutter 热重载原理(一)

          本文链接:https://www.haomeiwen.com/subject/jlhcqdtx.html