Google 为什么以 Flutter 作为原生突破口

Android 的前生今世

Android 系统

Android系统作为全球第一大系统,基于 Java 开发的移动端有着诸多的性能优势。
2018年前 H5 的性能瓶颈和 RN 的停更 导致业界对跨平台开发失去信心。
直到2018年10月Google推出首个 Flutter 跨平台解决方案,打破整个移动开发的方向。
为什么 Flutter 成为 Android 方向标

  1. 跨平台性:Flutter基于图像绘制引擎进行渲染,在不同平台下绘制效果是绝对一致的,能做到真正的跨平台,一处写处处运行
  2. 性能优异性:不同于H5通过DOM渲染 和RN映射组件,Flutter直接基于native进行绘制。性能上完全超过原生
  3. 热重载性: Android原生开发 会遇到 编译-打包-安装 三部曲。开发效率迟迟得不到提升。热重载技术在Flutter内完美体现

Flutter 详细介绍

  1. Dart 语法编译:Dart
    是一种强类型、跨平台的客户端开发语言。具有专门为客户端优化、高生产力、快速高效、可移植易学的风格。Dart主要由Google负责开发和维护
  2. Flutter
    插件:Flutter使用的Dart语言无法直接调用Android系统提供的Java接口,这时就需要使用插件来实现中转。Flutter官方提供了丰富的原生接口封装

Flutter 系统结构

Google 为什么以 Flutter 作为原生突破口

Skia 图像处理引擎

  1. 2005年Skia图像处理引擎成立,用来展示Chrome 火狐 和其他Google自家的产品使用。
  2. 2007年 第一个Android系统问世,于是Google开发者将Skia移植到Android平台。
  3. Skia作为一个2D的图形系统,包括绘图,渲染,显示图片都是用Skia完成。

原生开发会接触 SKia 吗?

Google 为什么以 Flutter 作为原生突破口

Skia 引擎详解

疑问: 是真的吗?我只接触过 Bitmap,原来 Bitmap 下面还有很多奥秘
Google 为什么以 Flutter 作为原生突破口

Google 为什么以 Flutter 作为原生突破口

Skia 引擎与 Flutter 有什么关系勒?

除了通过xml方式定义布局 或者继承View 显示在Android屏幕外 还有没有 方法呢?

Google 为什么以 Flutter 作为原生突破口

为什么 Flutter 会实现三大特性

Google 为什么以 Flutter 作为原生突破口

跨平台
Google 为什么以 Flutter 作为原生突破口
性能优异
Google 为什么以 Flutter 作为原生突破口
渲染流程
Google 为什么以 Flutter 作为原生突破口
React 渲染与 Flutter 渲染相同点
Google 为什么以 Flutter 作为原生突破口
React 渲染与 Flutter 渲染不同点

  1. 绘制树:ReactNative 基于 ReactShadow 的链式结构在内存中形成一个虚拟的 Dom 树,Flutter
    是通过引擎实现不同图层的渲染方式。
  2. 机制不一样:ReactNative 最终被反射成原生控件,而 Flutter 是底层通过引擎直接渲染,不存在映射的说法。

Flutter 渲染
在 Flutter 界面渲染过程分为三个阶段:布局、绘制、合成,布局和绘制在 Flutter 框架中完成合成则交由引擎负责。
Google 为什么以 Flutter 作为原生突破口
Flutter优势

Flutter 横空出世! 在 Flutter 的响应式框架中,控件树中的控件直接通过可移植的图形加速渲染引擎、⾼性能的本地 ARM 代码进⾏绘制,不再需要通过虚拟 DOM 或虚拟控件、真实 DOM 或平台控件这些中间对象来绘制。Flutter 响应式框架通过“⽆中间商赚差价”的⽅式直接利⽤硬件的所有性能,所以正如前⾯所说的,Flutter 应⽤的性能⽐原⽣ App 更加优秀。

个人见解

相对于几大跨平台框架,个人还是很看好 Flutter 的。毕竟是 Google 的亲儿子嘛,还是可以先入坑的,自己动手写一个 Flutter APP 出来。在不同设备上跑一下,自己体验一下。

关于flutter的问题,涉及到大量的概念和知识点,如果没有系统的学习,很容易会杂糅概念而辨识不清,在面试与实际工作中都会遇到困难。如果你从事Android开发,具备1年以上工作经验,希望深入浅出了解Android flutter、UI等技术要点,渴望实现技术和职业成长上的双重突破,那么以下福利就很适合你:

福利1 免费直播课程

《腾讯课堂Android高级开发工程师系列直播》

适听人群:Android初、中、高级开发工程师

3.20-3.23 连续7天每晚8点准时直播,持续进行

3月20日:突破sharedprefrence性能,急速存储应用数据

3月21日:基于Android一个小时实现人脸追踪

3月22日:架构师教你选择一个适合自己的app的架构

3月23日:Hook源码实现阿里无闪烁换肤

3月24日:揭秘Android开发效率提升十倍的利器——gradle

3月25日:移动平台AI——身份证实别离线实现方案实战

3月26日:Android进阶必学-APT编译期注解处理技术

福利2 Android开发资料包

该资料包中主要包括「Java语言进阶与Android相关技术核」、「2)App开发框架知识体系(app亦对象)」、「360° Android app全方位性能调优」、「Android前沿技术」、「NDK 模块开发」等内容,全方位扩充你的知识体系

Google 为什么以 Flutter 作为原生突破口
Google 为什么以 Flutter 作为原生突破口

想要参与Android进阶免费系列直播课

以及获取Android开发工程师资料包的同学,

点击加入:加入

免费课程,名额有限,先到先得~~