Android 的前生今世
Android 系统
Android 系统作为全球第一大系统, 基于 Java 开发的移动端有着诸多的性能优势. 2018 年前 H5 的性能瓶颈和 RN 的停更 导致业界对跨平台开发失去信心. 直到 2018 年 10 月 Google 推出首个 Flutter 跨平台解决方案, 打破整个移动开发的方向.
为什么 Flutter 成为 Android 方向标
跨平台性: Flutter 基于图像绘制引擎进行渲染, 在不同平台下绘制效果是绝对一致的, 能做到真正的跨平台, 一处写处处运行
性能优异性: 不同于 H5 通过 DOM 渲染 和 RN 映射组件, Flutter 直接基于 native 进行绘制. 性能上完全超过原生
热重载性: Android 原生开发 会遇到 编译 - 打包 - 安装 三部曲. 开发效率迟迟得不到提升. 热重载技术在 Flutter 内完美体现
Flutter 详细介绍
Dart 语法编译: Dart 是一种强类型, 跨平台的客户端开发语言. 具有专门为客户端优化, 高生产力, 快速高效, 可移植易学的风格. Dart 主要由 Google 负责开发和维护
Flutter 插件: Flutter 使用的 Dart 语言无法直接调用 Android 系统提供的 Java 接口, 这时就需要使用插件来实现中转. Flutter 官方提供了丰富的原生接口封装
Flutter 系统结构
Skia 图像处理引擎
2005 年 Skia 图像处理引擎成立, 用来展示 Chrome 火狐 和其他 Google 自家的产品使用.
2007 年 第一个 Android 系统问世, 于是 Google 开发者将 Skia 移植到 Android 平台.
Skia 作为一个 2D 的图形系统, 包括绘图, 渲染, 显示图片都是用 Skia 完成.
原生开发会接触 SKia 吗?
Skia 引擎详解
疑问: 是真的吗? 我只接触过 Bitmap, 原来 Bitmap 下面还有很多奥秘
Skia 引擎与 Flutter 有什么关系勒?
除了通过 xml 方式定义布局 或者继承 View 显示在 Android 屏幕外 还有没有 方法呢?
为什么 Flutter 会实现三大特性
跨平台
性能优异
渲染流程
React 渲染与 Flutter 渲染相同点
React 渲染与 Flutter 渲染不同点
绘制树: ReactNative 基于 ReactShadow 的链式结构在内存中形成一个虚拟的 Dom 树, Flutter 是通过引擎实现不同图层的渲染方式.
机制不一样: ReactNative 最终被反射成原生控件, 而 Flutter 是底层通过引擎直接渲染, 不存在映射的说法.
Flutter 渲染
在 Flutter 界面渲染过程分为三个阶段: 布局, 绘制, 合成, 布局和绘制在 Flutter 框架中完成合成则交由引擎负责.
来源: https://juejin.im/post/5c91f0f25188256b7463868e