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

flutter热重载原理(四)

作者: 今年27 | 来源:发表于2023-01-06 15:09 被阅读0次

上节课我们说到dart虚拟机发送网络请求给flutter的engine,那么我们的dart虚拟机是什么时候启动的呢?也许你还记得console打印的这句话

/opt/flutter/bin/cache/dart-sdk/bin/dart --enable-asserts --pause_isolates_on_start --enable-vm-service:65182 /opt/flutter/packages/flutter_tools/bin/flutter_tools.dart run
Observatory listening on http://127.0.0.1:65182/b0PEzvx66e4=/

我们可以打开vmservice.dart


vmservice.dart

打上断点,运行发现,启动的时候就会走到断点处,由此可见dart.vm确实是在启动时创建,往下走会发现对reloadSources的监听

if (reloadSources != null) {
     _peer.registerMethod('reloadSources', (rpc.Parameters params) async {
       final String isolateId = params['isolateId'].value as String;
       final bool force = params.asMap['force'] as bool ?? false;
       final bool pause = params.asMap['pause'] as bool ?? false;

       if (isolateId.isEmpty) {
         throw rpc.RpcException.invalidParams("Invalid 'isolateId': $isolateId");
       }
       try {
         await reloadSources(isolateId, force: force, pause: pause);
         return <String, String>{'type': 'Success'};
       } on rpc.RpcException {
         rethrow;
       } on Exception catch (e, st) {
         throw rpc.RpcException(rpc_error_code.SERVER_ERROR,
             'Error during Sources Reload: $e\n$st');
       }
     });

注:
我们在Configurations的Program arguments 输入
run --local-engin-src-path /Users/apple/Desktop/engine/src --local-engine=android_debug_unopt


image.png

这个就是配置flutter工程来调用自定义flutter引擎,我们也可以通过
当然我们以前也用Xcode工程来配过,详见flutter engine开发。

上一节我们最终走到了HttpClientRequest发起一段http请求,这个http请求通过dartVM,最终给了flutter engine。
我们可以打开flutter engine源码
bool IsolateGroupReloadContext::Reload方法里,大家可以尝试

总结整个热重载流程如下

热重载流程总结

相关文章

  • flutter热重载原理(四)

    上节课我们说到dart虚拟机发送网络请求给flutter的engine,那么我们的dart虚拟机是什么时候启动的呢...

  • flutter 热重载

    flutter 热重载 官方文档 文章来源 Flutter的热重载(hot reload)功能可以帮助您在无需重新...

  • flutter热重载原理(二)

    紧接上回,在main函数打个断点,点击Debug按钮 此时我们断在main函数处 这个args就是个列表,列表里有...

  • flutter 热重载原理(一)

    我们都知道OC是由Clang(LVVM的前端)编译的(包括词法分析,语法分析,语义分析),然后将OC代码编译成IR...

  • flutter热重载原理(三)

    上一篇文章我们最终走到了键盘监听即processTerminalInput回调里 然后在_commonTermin...

  • Flutter列表ListView搭建

    1. 热重载 1.1 什么是热重载 Flutter热重载:在我们调试布局的时候,更改代码,模拟器上可以立即看到代码...

  • Flutter热重载

    工作原理 热重载是指,在不中断 App 正常运行的情况下,动态注入修改后的代码片段。而这一切的背后,离不开 Flu...

  • 热重载原理与混合工程自动化

    热重载工具的启动流程 研究热重载的价值:更方便对产品进行热更新,Dart代码编写完成Flutter.framewo...

  • he mDNS query for an attached iO

    Flutter上热重载报错 解决办法:关闭手机热点

  • Flutter知识点一

    1.Flutter module支持hot reload (热重载)进入到flutter module目录下 执行...

网友评论

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

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