Google 以 Flutter 做为原生突破口,移动端即将统一了

image

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 系统结构

image

Skia 图像处理引擎

  1. 2005年Skia图像处理引擎成立,用来展现Chrome 火狐 和其余Google自家的产品使用。
  2. 2007年 第一个Android系统问世,因而Google开发者将Skia移植到Android平台。
  3. 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 框架中完成合成则交由引擎负责。android

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的好处呢, 我认为有以下几点:

一、若是咱们之后想在Google的新系统上跑程序的话, 用Flutter来编写是必定没错的. 固然最近的报导显示, Fuschia原生支持ART, 所以Android程序应该也能够. 不过直接上Flutter我认为更好.浏览器

二、Flutter用Dart, 学习Flutter的同时会使咱们掌握一门新的语言. 买一送一.前端框架

三、Flutter天生支持iOS风格的控件, 称为Cupertino, 这样咱们能够一套设计, 一套code跑在两个系统上.服务器

四、学习Flutter的过程会改变手机端app开发的思惟. 毕竟这个亲只有一个activity. 全程跟个游戏引擎同样. 60帧每秒绘图.weex

五、Hot reload. 极大地加速了咱们的开发效率. 试过了, 绝对会爱上它.

六、Flutter提供method channel给Android和iOS. 其实咱们能够只用Flutter来开发UI. 其余底层逻辑能够封装Android和iOS分别的lib package. 而后直接Rx封装写回method channel. 也是一种新的开发模式.

七、性能更好, 兼容性更好, 开发起来更有乐趣, 这才是程序员的人生. 而Flutter都能知足.

如何学习Flutter: http://www.javashuo.com/article/p-anrgiulg-br.html

从目前的状况和节奏来看,此次 Google 是认真的,承前启后的为它的下一代操做系统 Fuchsia 提早铺了路! 因此,我仍是建议,日常你没事的时候能够开始学习了,等到真正成熟的时候,你就会一马平川的。不知道,你看好 Flutter 吗?欢迎你在文章底下留言交流见解。

阅读更多

资本寒冬下的android面经,面试必备

Flutter基础-环境搭建及demo运行

一份完整的Android Studio搭建Flutter教程

若是对技术开发比较感兴趣,能够关注个人公众号:终端研发部,id:codeGoogler

相关文章
相关标签/搜索