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

简介: Google 以 Flutter 作为原生突破口,移动端即将统一了,这回google是认真了!

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 框架中完成合成则交由引擎负责。

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:
https://blog.csdn.net/androidstarjack/article/details/87720925

从目前的情况和节奏来看,这次 Google 是认真的,承前启后的为它的下一代操作系统 Fuchsia 提前铺了路! 所以,我还是建议,平常你没事的时候可以开始学习了,等到真正成熟的时候,你就会一马平川的。不知道,你看好 Flutter 吗?欢迎你在文章底下留言交流看法。

阅读更多

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

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

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

如果对技术开发比较感兴趣,可以关注我的公众号:终端研发部,id:codeGoogler

相关文章
|
iOS开发
Flutter与iOS原生通信方式
Flutter与iOS原生通信方式
472 2
|
3月前
|
开发者 监控 开发工具
如何将JSF应用送上云端?揭秘在Google Cloud Platform上部署JSF应用的神秘步骤
【8月更文挑战第31天】本文详细介绍如何在Google Cloud Platform (GCP) 上部署JavaServer Faces (JSF) 应用。首先,确保已准备好JSF应用并通过Maven构建WAR包。接着,使用Google Cloud SDK登录并配置GCP环境。然后,创建`app.yaml`文件以配置Google App Engine,并使用`gcloud app deploy`命令完成部署。最后,通过`gcloud app browse`访问应用,并利用GCP的监控和日志服务进行管理和故障排查。整个过程简单高效,帮助开发者轻松部署和管理JSF应用。
58 0
|
5月前
|
移动开发 小程序 安全
基础入门-APP架构&小程序&H5+Vue语言&Web封装&原生开发&Flutter
基础入门-APP架构&小程序&H5+Vue语言&Web封装&原生开发&Flutter
|
6月前
|
开发框架 前端开发 Android开发
【Flutter 前端技术开发专栏】Flutter 与原生模块通信机制
【4月更文挑战第30天】本文探讨了Flutter作为跨平台开发框架与原生Android和iOS交互的必要性,主要通过方法调用和事件传递实现。文中详细介绍了Flutter与Android/iOS的通信方式,数据传输(包括基本和复杂类型),性能优化,错误处理以及实际应用案例。理解并掌握这一通信机制对开发高质量移动应用至关重要,未来有望随着技术发展得到进一步优化。
72 0
【Flutter 前端技术开发专栏】Flutter 与原生模块通信机制
|
6月前
|
Dart 前端开发 Android开发
【Flutter前端技术开发专栏】Flutter与原生代码的集成与交互
【4月更文挑战第30天】本文探讨了如何在Flutter中集成和交互原生代码,以利用特定平台的API和库。当需要访问如蓝牙、特定支付SDK或复杂动画时,集成原生代码能提升效率和性能。集成方法包括:使用Platform Channel进行通信,借助现有Flutter插件,以及Android和iOS的Embedding。文中通过一个电池信息获取的例子展示了如何使用`MethodChannel`在Dart和原生代码间传递调用。这些技术使开发者能充分利用原生功能,加速开发进程。
104 0
【Flutter前端技术开发专栏】Flutter与原生代码的集成与交互
|
6月前
|
移动开发 前端开发 JavaScript
移动端 Hybrid 开发:RN、Flutter与Webview的抉择与融合
【4月更文挑战第6天】本文对比了移动端Hybrid开发的三种主流方案——React Native (RN),Flutter和Webview。RN基于JavaScript,适合React熟练的团队,适用于性能要求高、跨平台的中大型应用。Flutter,使用Dart语言,以其高性能和自定义UI适用于追求极致体验的项目。Webview适合快速移植Web应用至移动端,开发成本低但性能受限。选择时要考虑项目规模、性能需求、团队技术栈等因素,实际应用中常采用混合策略,如RN/Flutter+Webview、原生模块集成等,以实现最佳开发效果和长期技术规划。
465 0
|
开发框架 自然语言处理 小程序
多端/跨端/融合的移动端/小程序之Flutter
Flutter作为一种跨平台移动应用开发框架,以其出色的用户体验和丰富的功能,深受广大开发者的喜爱。
208 1
|
6月前
|
移动开发 前端开发 JavaScript
探究移动端混合开发技术:React Native、Weex、Flutter的比较与选择
移动端混合开发技术在移动应用开发领域日益流行,为开发者提供了更高效的跨平台开发方案。本文将比较三种主流混合开发技术:React Native、Weex和Flutter,从性能、生态系统和开发体验等方面进行评估,以帮助开发者在选择适合自己项目的技术时做出明智的决策。
390 2
|
6月前
|
移动开发 前端开发 weex
移动端混合开发技术:React Native、Weex、Flutter 之争
在移动应用开发领域,React Native、Weex 和 Flutter 是备受关注的混合开发技术。本文将对它们进行全面比较与评估,以帮助开发者做出明智的选择。我们将从开发生态、性能、跨平台能力和易用性等方面进行比较,为读者提供全面的参考和指导。
|
6月前
|
移动开发 Dart 前端开发
移动端混合开发技术:React Native、Weex、Flutter的比较与选择
移动应用的开发已经成为现代社会中的重要一环。本文将比较并评估三种主流的移动端混合开发技术:React Native、Weex和Flutter。通过对它们的特点、优势和劣势的分析,帮助开发者在选择适合自己项目的技术方案时做出明智的决策。