-
定义:一款Google出品&开源的移动客户端UI开发框架(SDK)
-
作用:用一套代码同时在Android、iOS上快速构建高质量、高性能的原生用户界面
-
开发语言:Dart语言(高开发效率、高性能等)
2. 特点
Flutter的主要特点包括:使用自身的高性能渲染引擎进行渲染 & Dart编程语言语言
具体介绍如下:
2.1 高性能渲染引擎
-
Flutter进行UI绘制时,使用的是自带的高性能渲染引擎进行绘制渲染(不使用WebView & 原生控件)
-
好处:保证在Android和iOS上UI的一致性 & 避免对原生控件依赖而带来的限制和维护成本。
-
组成:C、C ++、Dart、Skia(2D渲染引擎),具体描述如下:
特别注意:
-
Flutter依靠Flutter Engine虚拟机在iOS和Android上运行
-
Flutter Engine使用C/C++编写 = 低延迟输入 + 高帧速率
-
开发人员可通过Flutter框架和API在内部进行交互
下面,简单介绍一下Flutter的2D渲染引擎:Skia
2.2 Dart语言
介绍Dart语言前先介绍两个概念:JIT和AOT。程序主要有两种运行方式:静态编译 & 动态编译,具体如下:
特别注意:
-
JIT 和 AOT指的是程序运行方式,和编程语言并非强关联的。
-
有些语言可以以JIT方式 & AOT方式一起运行,如Java,它可在第一次执行时编译成中间字节码、然后在之后执行时可以直接执行字节码
-
通常区分是否为AOT的标准就是看代码在执行之前是否需要编译,只要需要编译,无论其编译产物是字节码还是机器码,都属于AOT
Dart语言的特点
Dart语言具备开发效率高、高性能 & 类型安全的特点
具体如下:
3. 原理解析
3.1 框架结构
Flutter框架主要分为两层:FrameWork层、Engine层,如下图所示:
说明:开发时,主要基于Framework层;运行时,则是运行在 Engine上。每层的具体介绍如下:
3.2 原理概述
开发时,主要基于Framework层;运行时,则是运行在 Engine上
Engine是Flutter的独立虚拟机,由它适配 & 提供跨平台支持;因为其存在,Flutter不使用移动端系统的原生控件, 而是使用自己 Engine 来绘制 Widget (Flutter的显示单元);Dart 代码是通过 AOT 编译为平台的原生代码,所以 Flutter可直接与平台通信,不需要JS引擎的桥接。
同时 Flutter 唯一要求系统提供的是 canvas,以实现UI的绘制。
编译时,具体如下:
3.3 关于widget
Flutter理念:“一切皆为Widget”,Widget是Flutter应用程序用户界面的基本构建块,具备以下特点:
-
属于具有一致性的统一对象模型,与其他将视图、控制器、布局和其他属性分离的框架不同。更新widget时更加高效
-
不可变的,仅支持一帧,且每一帧上不会直接更新,要更新而必须使用Widget的状态。无状态和有状态Widget 的核心特性相同,每一帧都会重新构建;
-
有一个State对象,用于跨帧存储状态数据 & 恢复
4. 特点
Flutter具备跨平台、开发效率高 & 高性能的特点
具体说明如下:
4.1 跨平台 & 开发效率高
Flutter通过使用上述所述的自身渲染引擎、原理框架 & Widget运行,使用一套代码即可同时构建iOS和Android应用,从而实现跨平台的特性,最终提高开发的效率
4.2 高性能
-
原因1:通过其自带的高性能渲染引擎进行渲染
-
原因2:Dart语言本身的语言特性
-
原因3:编译过程特点,具体如下:
5. 对比
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip204888 (备注Android)
最后
现在都说互联网寒冬,其实无非就是你上错了车,且穿的少(技能),要是你上对车,自身技术能力够强,公司换掉的代价大,怎么可能会被裁掉,都是淘汰末端的业务Curd而已!现如今市场上初级程序员泛滥,这套教程针对Android开发工程师1-6年的人员、正处于瓶颈期,想要年后突破自己涨薪的,进阶Android中高级、架构师对你更是如鱼得水!
为什么某些人会一直比你优秀,是因为他本身就很优秀还一直在持续努力变得更优秀,而你是不是还在满足于现状内心在窃喜!
Android架构师之路很漫长,一起共勉吧!文章来源:https://www.toymoban.com/news/detail-850112.html
现在都说互联网寒冬,其实无非就是你上错了车,且穿的少(技能),要是你上对车,自身技术能力够强,公司换掉的代价大,怎么可能会被裁掉,都是淘汰末端的业务Curd而已!现如今市场上初级程序员泛滥,这套教程针对Android开发工程师1-6年的人员、正处于瓶颈期,想要年后突破自己涨薪的,进阶Android中高级、架构师对你更是如鱼得水!
为什么某些人会一直比你优秀,是因为他本身就很优秀还一直在持续努力变得更优秀,而你是不是还在满足于现状内心在窃喜!
Android架构师之路很漫长,一起共勉吧!
本文已被CODING开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》收录文章来源地址https://www.toymoban.com/news/detail-850112.html
到了这里,关于Android:手把手带你入门跨平台UI开发框架Flutter的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!