腾讯技术团队整理,为什么-Flutter-能最好地改变移动开发

那么,Flutter 是怎么完成组件渲染的呢?

这需要从图像显示的基本原理说起。在计算机系统中,图像的显示需要 CPU、GPU 和显示器一起配合完成:CPU 负责图像数据计算,GPU 负责图像数据渲染,而显示器则负责最终图像显示。

随后视频控制器会以每秒 60 次的速度,从帧缓冲区读取帧数据交由显示器完成图像显示。

可以看到,Flutter 关注如何尽可能快地在两个硬件时钟的 VSync 信号之间计算并合成视图数据,然后通过 Skia 交给 GPU 渲染:UI 线程使用 Dart 来构建视图结构数据,这些数据会在 GPU 线程进行图层合成,随后交给 Skia 引擎加工成 GPU 数据,而这些数据会通过 OpenGL 最终提供给 GPU 渲染。

2. 关于Skia

Skia是一个开源的 2D 图形库,提供各种常用的API,并可在多种软硬件平台上运行。谷歌Chrome浏览器、Chrome OS、安卓、Flutter、火狐浏览器、火狐操作系统以及其它许多产品都使用它作为图形引擎。

Skia 在图形转换、文字渲染、位图渲染方面都表现卓越,并提供了开发者友好的 API。

因此,架构于 Skia 之上的 Flutter,也因此拥有了彻底的跨平台渲染能力。通过与 Skia 的深度定制及优化,Flutter 可以最大限度地抹平平台差异,提高渲染效率与性能。

底层渲染能力统一了,上层开发接口和功能体验也就随即统一了,开发者再也不用操心平台相关的渲染特性了。也就是说,Skia 保证了同一套代码调用在 Android 和 iOS 平台上的渲染效果是完全一致的。

同样的在界面渲染、绘制的过程中,Flutter也做了很多优化处理,提升合成、渲染效率。

3. FLutter的优势

(1)在所有的平台下,都可以保持同样UI样式,同样的业务逻辑

大多数跨平台框架中的UI呈现如下图所示:

而Flutter是直接画在画布上:

(2)减少开发所需的时间

  • Flutter的热重载可以高效快速的看到改变,甚至保留应用状态;
  • 官方提供的各种现成的组件(Material和Cupertino)。

(3)快速迭代上线

不需要单独适配 iOS、Android 双端的 UI 层面。

(4)更接近native的性能表现

Flutter不依赖任何中间代码,最终直接构建成机器码,提高了性能。

(5)自定义复杂动画

Flutter最大的优势之一就是可以定制你在屏幕上看到的任何东西,不管它有多复杂。

(6)有自己的渲染引擎

Flutter使用Skia将界面渲染到平台提供的画布上,意味着不需调整,即可迁移到其他平台。

(7)更方便调用native api

获取GPS坐标、蓝牙通信、收集传感器数据、权限处理等,未支持的也可通过platform channel 。

(8)更高的潜力

iOS、Android、Web、Desktop…

三、Flutter 与 React Native (Hippy)

1. UI方面

在新旧设备上也能保持一致

Flutter动画效果:

2. 性能方面

基于 ListView ,我们做了一个基准测试。在 ListView 中,有1000个元素,并且到达列表最后一个元素的滚动时间相同,这里使用到了一些第三方库:

  • ios Nuke
  • Android Glide
  • react native React-native-fast-image

结果展示:

3. Flutter缺点

  • 开发者社区的规模和第三方库
  • 持续集成的能力
  • APK的大小
  • Dart语言学习成本
  • 动态更新能力

Q&A

Q:Flutter 和 Hippy 有什么区别,为什么用 Flutter,不用 Hippy?

A: 第一,Flutter开发效率高,可减少客户端开发时间;第二,Flutter 在跨端UI差异小;第三,Flutter 动画支持很全面;第四,它更接近native。

Q:Flutter 和 Hippy 在方案选型上有一些差异,比如自定义 UI 组件性能方面有哪些差异,接口怎么通信?

**A:**Flutter 自定义 UI 组件 platformview 的性能还有待提升,接口通信方面,Hippy 与客户端通过 jsbridge,而 Futter 是通过 methodchannel 。

Q:Flutter 为什么暂时还不支持动态更新?

**A:**初期考虑到应用安全和苹果方面的策略,所以不支持动态更新。现在 Android 端可以通过整包方式实现动态更新, iOS 目前还不支持。

学习分享,共勉

题外话,毕竟我在三星小米工作多年,深知技术改革和创新的方向,Flutter作为跨平台开发技术、Flutter以其美观、快速、高效、开放等优势迅速俘获人心,但很多FLutter兴趣爱好者进阶学习确实资料,今天我把我搜集和整理的这份学习资料分享给有需要的人,若有关Flutter学习进阶可以与我在Flutter跨平台开发终极之选交流群一起讨论交流。

如有需要获取完整的资料文档的朋友可以【点击我】免费获取。

目录

第一章 为什么 Flutter 是跨平台开发 的终极之选

01 这是为什么?
02 跨平台开发
03 什么是 Flutter
04 Flutter 的特性
05 Flutter 构建应用的工具
06 使用 Flutter 构建的热门应用
07 构建 Flutter 应用的成本
08 结论

第二章 在 Windows 上搭建 Flutter 开发环境

01 使用镜像
02 系统要求
03 获取 Flutter SDK
04 编辑器设置
05Android 设置

第三章 编写您的第一个 Flutter App(含源码)

第 1 步: 创建 Flutter app
第 2 步: 使用外部包(package)
第 3 步: 添加一个 有状态的部件(Stateful widget)
第 4 步: 创建一个无限滚动 ListView
第 5 步: 添加交互
第 6 步: 导航到新页面
第 7 步:使用主题更改 UI

第四章 Flutter 开发环境搭建和调试

1.开发环境的搭建
2.模拟器的安装与调试
3…开发环境的搭建
4.模拟器的安装与调试

第五章 Dart 语法篇之基础语法(一)

简述:
一、Hello Dart
二、数据类型
三、变量和常量
四、集合(List、Set、Map)
五、流程控制
六、运算符
七、异常
八、函数

Flutter 技术进阶精编笔记预览图

第六章 Dart 语法篇之集合的使用与源码 解析(二)
第七章 Dart 语法篇之集合操作符函数与 源码分析(三)
第八章 Dart 语法篇之函数的使用(四)
第九章 Dart 语法篇之面向对象基础(五
第十章 Dart 语法篇之面向对象继承和 Mixins(六)
第十二章 Dart 语法篇之类型系统与泛型 (七)
第十三章 Flutter 中的 widget

由于文章内容比较多,篇幅不允许,部分未展示内容以截图方式展示 。

如有需要获取完整的资料文档的朋友可以【点击我】免费获取。

先自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《Android移动开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

如果你觉得这些内容对你有帮助,可以扫码领取!!!!

学习分享

在当下这个信息共享的时代,很多资源都可以在网络上找到,只取决于你愿不愿意找或是找的方法对不对了

很多朋友不是没有资料,大多都是有几十上百个G,但是杂乱无章,不知道怎么看从哪看起,甚至是看后就忘

如果大家觉得自己在网上找的资料非常杂乱、不成体系的话,我也分享一套给大家,比较系统,我平常自己也会经常研读。

2021最新上万页的大厂面试真题

image

七大模块学习资料:如NDK模块开发、Android框架体系架构…

image

2021大厂面试真题:

image

只有系统,有方向的学习,才能在短时间内迅速提高自己的技术,只有不断地学习,不懈的努力才能拥有更好的技术,才能在互联网行业中立于不败之地。
《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》点击传送门,即可免费领取!

98390522)]

2021大厂面试真题:

[外链图片转存中…(img-gktR3Don-1711298390523)]

只有系统,有方向的学习,才能在短时间内迅速提高自己的技术,只有不断地学习,不懈的努力才能拥有更好的技术,才能在互联网行业中立于不败之地。
《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》点击传送门,即可免费领取!

  • 21
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值