Google 以 Flutter 作為原生突破口,移動端即將統一了

codeGoogle發表於2019-04-01

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: blog.csdn.net/androidstar…

從目前的情況和節奏來看,這次 Google 是認真的,承前啟後的為它的下一代作業系統 Fuchsia 提前鋪了路! 所以,我還是建議,平常你沒事的時候可以開始學習了,等到真正成熟的時候,你就會一馬平川的。不知道,你看好 Flutter 嗎?歡迎你在文章底下留言交流看法。

閱讀更多

資本寒冬下的android面經,面試必備

Flutter基礎-環境搭建及demo執行

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

相信自己,沒有做不到的,只有想不到的

在這裡獲得的不僅僅是技術!

Google 以 Flutter 作為原生突破口,移動端即將統一了

如果對技術開發比較感興趣,可以關注我的公眾號:終端研發部,id:codeGoogler

相關文章