tsx81428 发表于 2024-6-11 09:55:33

Flutter框架分析(一)--架构总览

Flutter被设计成一个可扩展,分层的体系。它包罗了一系列依赖其下层的独立库。其示意图见下图.
https://img-blog.csdnimg.cn/img_convert/019bc5b1f31656e80e4b8f9a27924969.png
其中,framework层中的每一个组件均是可选的和可以代替的。从上图可知,Flutter体系统共可以分为三层。上层的框架(Framework),中层的引擎(Engine),以及底层的嵌入层(Embedder)。


[*]框架(Framework):框架层是纯dart语言实现的一个响应式框架,开发者平常需要通过该层和Flutter体系交互。
[*]引擎(Engine):引擎层绝大部门是用C++实现的,其为Flutter体系的核心。引擎提供了一系列Flutter核心API的底层实现,比方图形(通过Skia),文字布局,文件等,是连接框架和体系(Andoird/iOS)的桥梁。
[*]嵌入层(Embedder):嵌入层基本是由平台对应的语言实现的,比方:在Android上是由Java和C++实现;在iOS是由Objective-C/Objective-C++实现。嵌入层为Flutter体系提供了一个入口,Flutter体系通过该入口访问底层体系提供的服务,比方输入法,绘制surface等。
其中,Framework是我们这一系列文章主要关注的部门。从下到上,其主要包罗:


[*]基础模块(foundational)及基础服务,比方animation,painting,以及gestures,这三种基础服务是为了方便上层调用对基础模块的抽象。
[*]Rendering 层,为处理图层提供了抽象组件。通过这一层,你能构建一棵可绘制对象的树。你可以动态操纵这些对象,这棵树可以根据你的修改主动更新这棵树。
[*]Widgets层,是组件的抽象。每个render对象都有对应的widget对象。除此之外,widgets层答应你定义你能重复使用的组合组件。同时,此层引入了响应式编程模型。
[*]Material和Cupertino库提供了一系列Material和iOS设计风格的组件。
3. 不同跨平台技能对比

市面上有很多对比不同跨平台技能的文章,比方Flutter实战中的移动开发技能简介。本文以表格情势简单先容一下不同跨平台技能的特点和优劣势等,然后说明一下flutter性能能媲美原生应用的缘故原由。 现在市面上主要有H5+原生,JavaScript+原生渲染,自绘UI+原生。三种跨平台技能,其对比结果如下。
技能范例UI渲染方式性能开发服从动态化框架代表H5+原生WebView渲染一般高支持Cordova、IonicJavaScript+原生渲染原生控件渲染好高支持RN、Weex自绘UI+原生自带引擎渲染非常好Flutter高, QT低默认不支持QT、Flutter 由图可见,Flutter最大的优势,是其出色的性能。根据Google官方的宣传,其性能是可以媲美原生的。这一点我们可以通过以下结构示意图看出来。
https://img-blog.csdnimg.cn/img_convert/dcbb46e12667ea679a09b5b8e624d8dc.png 原生应用是由其框架直接通过Skia调用GPU进行绘制,但是RN等JavaScript+原生渲染跨平台技能是需要由其框架先调用原生框架,再通过原生框架调用Skia,最后调用至GPU进行绘制的。因此,其调用步调上相对于原生多了一层,理论上其绘制性能将比原生差。 但是Flutter则不同,由于其应用也是由Flutter框架直接通过Skia调用GPU进行绘制,因此只要其框架的性能能媲美原生框架的性能,则其绘制性能就可以媲美原生。不仅如此,由于Skia是Flutter自带的,其升级非常方便,而Android体系相对而言升级比较缓慢,因此假如Flutter使用了更高性能的Skia库,其绘制性能甚至可能超过原生。
4. 小结

本文主要先容了Flutter框架体系,其中重点先容了Flutter的Framework层结构。之后对比了Flutter和其他跨平台技能,并通过它们绘制原理的对比分析,解释了Flutter性能可以媲美原生应用的缘故原由。
5. 相关文章
自我先容一下,小编13年上海交大结业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Android工程师,想要提拔技能,每每是本身摸索发展或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。本身不成体系的自学结果低效又漫长,而且极易碰到天花板技能故步自封!
因此收集整理了一份《2024年Android移动开发全套学习资料》,初志也很简单,就是希望可以或许帮助到想自学提拔又不知道该从何学起的朋友,同时减轻大家的负担。
https://img-blog.csdnimg.cn/img_convert/545b275ddf11b204ff8ab76fcd7cb2ec.png
https://img-blog.csdnimg.cn/img_convert/f368ef69c54f322b73ff07bd1777aa0b.png
https://img-blog.csdnimg.cn/img_convert/880dc062b2bdad93d4ac07d7b7420d35.png
https://img-blog.csdnimg.cn/img_convert/c587082aaf7c31fc25ef02799c4cc234.png
https://img-blog.csdnimg.cn/img_convert/919b22d6f09d28b22400eb22b78fbb1e.png
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提拔的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!
由于文件比较大,这里只是将部门目次截图出来,每个节点里面都包罗大厂面经、学习笔记、源码课本、实战项目、讲解视频,并且会持续更新!
假如你觉得这些内容对你有帮助,可以扫码获取!!(备注:Android)
https://img-blog.csdnimg.cn/img_convert/1a7911beb3e78931a1cd9183aa264dc1.jpeg 文末

对于很多初中级Android工程师而言,想要提拔技能,每每是本身摸索发展,不成体系的学习结果低效漫长且无助。 整理的这些架构技能希望对Android开发的朋友们有所参考以及少走弯路,本文的重点是你有没有收获与发展,其余的都不紧张,希望读者们能服膺这一点。
最后想要拿高薪实现技能提拔薪水得到质的飞跃。最快捷的方式,就是有人可以带着你一起分析,如许学习起来最为高效,所以为了大家可以或许顺遂进阶中高级、架构师,我特地为大家预备了一套高手学习的源码和框架视频等精品Android架构师教程,包管你学了以后包管薪资上升一个台阶。
当你有了学习线路,学习哪些内容,也知道以后的路怎么走了,理论看多了总要实践的。
进阶学习视频
https://img-blog.csdnimg.cn/img_convert/c6597a6d2c20a21ece2976415e91881c.webp?x-oss-process=image/format,png
附上:我们之前因为秋招收集的二十套一二线互联网公司Android口试真题 (含BAT、小米、华为、美团、滴滴)和我本身整理Android复习笔记(包罗Android基础知识点、Android扩展知识点、Android源码分析、设计模式汇总、Gradle知识点、常见算法题汇总。)
https://img-blog.csdnimg.cn/img_convert/ef746803e3f1f378bf7f23876ad0539a.webp?x-oss-process=image/format,png
《Android学习笔记总结+移动架构视频+大厂口试真题+项目实战源码》,点击传送门即可获取!

+移动架构视频+大厂口试真题+项目实战源码》,点击传送门即可获取!**

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: Flutter框架分析(一)--架构总览