天天看點

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

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 系統結構

Skia 圖像處理引擎

  1. 2005年Skia圖像處理引擎成立,用來展示Chrome 火狐 和其他Google自家的産品使用。
  2. 2007年 第一個Android系統問世,于是Google開發者将Skia移植到Android平台。
  3. Skia作為一個2D的圖形系統,包括繪圖,渲染,顯示圖檔都是用Skia完成。

原生開發會接觸 SKia 嗎?

Skia 引擎詳解

  • 疑問: 是真的嗎?我隻接觸過 Bitmap,原來 Bitmap 下面還有很多奧秘

Skia 引擎與 Flutter 有什麼關系勒?

  • 除了通過xml方式定義布局 或者繼承View 顯示在Android螢幕外 還有沒有 方法呢?

為什麼 Flutter 會實作三大特性

跨平台

性能優異

渲染流程

React 渲染與 Flutter 渲染相同點
Flutter 渲染

在 Flutter 界面渲染過程分為三個階段:布局、繪制、合成,布局和繪制在 Flutter 架構中完成合成則交由引擎負責。

之前,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