58同城的开源动态化方案,目前市面上比较完善的开源方案。
将build方法内的代码使用dart2dsl转化成json,将非build方法里的代码使用dart2js转化成js。
环境配置
FlatBuffers
将js转化成bin文件,好处是不用反序列化,大大提升Fair解析、加载资源的速度
faircli
用来快捷创建动态化工程和载体工程
1 |
|
58同城的开源动态化方案,目前市面上比较完善的开源方案。
将build方法内的代码使用dart2dsl转化成json,将非build方法里的代码使用dart2js转化成js。
将js转化成bin文件,好处是不用反序列化,大大提升Fair解析、加载资源的速度
用来快捷创建动态化工程和载体工程
1 |
|
https://github.com/shorebirdtech/shorebird
Flutter创始人之一打造,只支持Flutter侧的热更,patch包存放在google服务器,需要翻墙
[Flutter - 混编项目集成Shorebird热更新🐦(安卓篇))][https://juejin.cn/post/7321049411852664882]
研究基于 Flutter Shorebird 热更新支持中国区域的问题
Hooks 是来自 React 的一个概念,flutter_hooks 只是 React 实现到 Flutter 的一个端口。
https://zh-hans.legacy.reactjs.org/docs/hooks-intro.html
React Hooks 的 Flutter 实现。
其触发UI刷新使用的是setState,可能存在性能问题。
和Android Art一样,Flutter也对Dart源码做了AOT编译,直接将Dart源码编译成了本地字节码,没有了解释执行的过程,提升执行性能。这里重点关注Dart VM内存分配(Allocate)和回收(GC)相关的部分。
和Java显著不同的是Dart的”线程”(Isolate)是不共享内存的,各自的堆(Heap)和栈(Stack)都是隔离的,并且是各自独立GC的,彼此之间通过消息通道来通信。Dart天然不存在数据竞争和变量状态同步的问题,整个Flutter Framework Widget的渲染过程都运行在一个isolate中。
Dart VM将内存管理分为新生代(New Generation)和老年代(Old Generation)。