前言
Flutter
是Google
开源的构建用户界面(UI
)工具包,帮助开发者通过一套代码库高效构建多平台精美应用,支持移动、Web
、桌面和嵌入式平台。Flutter
开源、免费,拥有宽松的开源协议,适合商业项目。目前,Flutter
已推出稳定的2.0版本。也是目前最火的跨平台开发工具之一
历史发展
- 2018年2月,世界移动通信大会-Flutter的第一个测试版
- 2018 年 4 月,Google I/O – Flutter beta 2 发布
- 2018 年 5 月,Google I/O – Flutter beta 3 发布
- Flutter 跻身 GitHub 前 100 名存储库
- 2018 年 6 月 – Flutter Preview 1 发布
- 2018 年 9 月 – Flutter Preview 2 发布
- 2018 年 11 月 — Dart 2.1 版本
- 2018 年 12 月,Google I/O – Flutter 1.0 发布
- 该技术的一个重要里程碑——自 2018 年 12 月以来,Flutter 一直被认为是稳定的,可以投入生产
- 2019 年 2 月,世界移动大会 – Flutter 1.2 发布
- 2019 年 5 月,世界移动通信大会:
- Flutter 1.5 发布
- Flutter for Web 预览版
- Dart 2.3 发布
- 2019 年 7 月,Flutter 1.7 发布
- 2019 年 9 月,Flutter 1.9 发布
- 2021 年 5 月,Flutter 2.2.0 发布
Flutter的实现原理
20190407114812407 (1).jpgEngine
C++实现的部分,包含了Skia渲染引擎,Dart运行时,文字排版引擎等
Framework
应用开发都是直接和框架层直接交互,是使用最多的层,是用Dart进行实现的SDK,实现了一些基础库,UI组件库,动画,绘图,手势等
- GPU的Vsync信号同步到UI线程
- UI线程使用Dart语言来构建抽象的视图图层树结构
- 在GPU线程进行图层合成
- 使用Skia引擎通过OpenGL或者Vulkan提供给GPU进行渲染
与其他跨平台方案的对比
Hbrid
Hbrid是一种跨平台解决方案,移动端使用Webview加载H5页面,通过Javascript代码与原生进行直接交互,它的优势在于Android和IOS使用WebView加载相同的H5资源从而达到了一致性的体验,只需要维护一套web资源即可满足两端的需求,并且由于是Web资源也很容易的进行更新和发布,这样的方案一直到现在都有很多的案例在使用,也是因为这种方案的产生导致移动端开发人员必须学习部分的前端知识,也间接的导致移动端开发人员的市场压力,以至于有公司招人直接就说android和IOS不就是套个壳有什么技术含量,但是它的弊端在于用户体验相对较差,流畅度以及响应速度都不如原生应用应用,近几年大部分高质量的应用都抛弃了这种方式改用了其他方案或者直接回到原生开发
React Native
RN是一个很好的框架和开始,它使用JSX语法生成了虚拟DOM树,然后通过虚拟DOM树映射到了对应Native平台的原生控件,所以它最终显示的是Native控件,但是由于它是间接的生成了Native控件性能是不如直接的原生开发,并且UI的显示也比较依赖平台以及不同的系统版本也会有差异,之前其实也花了好多时间去学习了RN的开发,但是RN在国内的市场现在不是很好,基本上学的都没有用过...
React Native的优点
- 热重载,它支持热重载可以极大的减少开发调试时间,增加开发效率
- 跨平台,一个代码库即可满足两种Native平台
- Javascript应用比较广泛,大多数开发都比较容易上手,社区资源相较Futter规模更大更有经验
- 一套代码可以减少部分的测试编写量
React Native的缺点
- UI体验和性能都不如原生应用
- 不一致的UI,用户升级设备,以及在不同的平台设备上呈现不同的UI情况
- 应用安装包大,会影响用户的留存率
Flutter的优点
- 热重载,它支持热重载可以极大的减少开发调试时间,增加开发效率
- 跨平台,一个代码库即可满足种e平台
- 一套代码可以减少部分的测试编写量
- 更快的应用,使用Skia渲染引擎,可以提供60fps的体验
- UI的一致性,UI是使用Skia进行渲染,不同系统和不同版本的系统都具有相同的UI体验
Flutter的缺点
- 社区规模不如RN,但是就目前的增长速度而言这并不是一个很明显的劣势
- 第三方库的支持较少,需要时间去积累
- 应用安装包相对原生要大,会影响用户的留存率
欢迎关注Mike的简书
Android 知识整理
网友评论