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 系统结构
image
Skia 图像处理引擎
2005 年 Skia 图像处理引擎成立, 用来展示 Chrome 火狐 和其他 Google 自家的产品使用.
2007 年 第一个 Android 系统问世, 于是 Google 开发者将 Skia 移植到 Android 平台.
Skia 作为一个 2D 的图形系统, 包括绘图, 渲染, 显示图片都是用 Skia 完成.
原生开发会接触 SKia 吗?
image
Skia 引擎详解
疑问: 是真的吗? 我只接触过 Bitmap, 原来 Bitmap 下面还有很多奥秘
image
Skia 引擎与 Flutter 有什么关系勒?
除了通过 xml 方式定义布局 或者继承 View 显示在 Android 屏幕外 还有没有 方法呢?
image
为什么 Flutter 会实现三大特性
image
跨平台
image
性能优异
image
渲染流程
image
React 渲染与 Flutter 渲染相同点
image
Flutter 渲染
在 Flutter 界面渲染过程分为三个阶段: 布局, 绘制, 合成, 布局和绘制在 Flutter 框架中完成合成则交由引擎负责.
image
之前, Google 发布了 Flutter 前端框架的 1.0 版本. 有同学要问, Flutter 是什么东东? Flutter 是 Google 基于 Dart 语言的一款前端框架, 目前可以在 Android 和 iOS 平台进行编译运行, 其运行效率可以媲美原生应用, 这也是区别于 JS 类跨平台框架, 如 weex,Taro,React Native 等的最大优势, 同时, Dart 语言最早也是 Google 发布出来想要改进 JS 的语言, 所以 Dart to JS 是不成问题的. 据悉, Flutter 接下来也是要通过编译为 JS 打通 web 端开发的. 至此, Flutter 不但可以跨主流移动操作系统 iOS 和 Android, 还可以通过浏览器和类似 PWA 的应用, 打通主流桌面操作系统 Windows,MacOS 和 Linux.
Google 已经研发两年多的, 最新打算用来取代 Android 的移动操作系统 Fuchsia OS, 根本前端就是用 Flutter 框架写的, 如果 Fuchsia 系统发布, 那 Flutter 和 Dart 一定是一跃成为首选前端编程语言和框架, 只是苦了广大程序员, 又有新东西要学了......
还有就是 Google 的 Go 语言增长势头迅猛, 伴随其媲美 C++ 的效率, 极简的服务器并发编程, 高效的服务器运行效率和现代化的编程特性和方式, 国内外大部分公司都对其进行了应用, 用来取代之前的一些接口和服务器应用. 其中 Docker 就是最著名的例子. 而 Go 语言早已突破 1.x 阶段, 正稳步迈向 2.0 阶段.
我们可以清晰地看到 Google 的布局和野望, Dart 主攻前端和移动端, Go 主攻服务器端. 前后端通吃, 不同于微软的 C# 和苹果的 OC 和 Swift,Google 的布局似乎更加全面, 应用和影响也更加广泛. Google 统一前后端开发江湖的野望也会在一定程度上实现, 至少, 开源的语言和有实力的靠山公司, 会比别家实现的好.
现在开始玩 Flutter 的好处呢, 我认为有如下几点:
1, 如果我们以后想在 Google 的新系统上跑程序的话, 用 Flutter 来编写是一定没错的. 当然最近的报导显示, Fuschia 原生支持 ART, 因此 Android 程序应该也可以. 不过直接上 Flutter 我认为更好.
2,Flutter 用 Dart, 学习 Flutter 的同时会使我们掌握一门新的语言. 买一送一.
3,Flutter 天生支持 iOS 风格的控件, 称为 Cupertino, 这样我们可以一套设计, 一套 code 跑在两个系统上.
4, 学习 Flutter 的过程会改变手机端 App 开发的思维. 毕竟这个亲只有一个 activity. 全程跟个游戏引擎一样. 60 帧每秒绘图.
5,Hot reload. 极大地加速了我们的开发效率. 试过了, 绝对会爱上它.
6,Flutter 提供 method channel 给 Android 和 iOS. 其实我们可以只用 Flutter 来开发 UI. 其他底层逻辑可以封装 Android 和 iOS 分别的 lib package. 然后直接 Rx 封装写回 method channel. 也是一种新的开发模式.
7, 性能更好, 兼容性更好, 开发起来更有乐趣, 这才是程序员的人生. 而 Flutter 都能满足.
如何学习 Flutter:
从目前的情况和节奏来看, 这次 Google 是认真的, 承前启后的为它的下一代操作系统 Fuchsia 提前铺了路! 所以, 我还是建议, 平常你没事的时候可以开始学习了, 等到真正成熟的时候, 你就会一马平川的. 不知道, 你看好 Flutter 吗? 欢迎你在文章底下留言交流看法.
来源: https://www.cnblogs.com/gooder2-android/p/10634910.html