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

相關文章
相關標籤/搜索