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

image
image

Skia 圖像處理引擎

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

原生開發會接觸 SKia 嗎?

image
image

Skia 引擎詳解

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

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

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

為什么 Flutter 會實現三大特性

image
image

跨平台

image
image

性能優異

image
image

渲染流程

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

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

image
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 Studio搭建Flutter教程

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM