移動開發技術手段從原始的原生應用開發,到 Google 和 Apple 各自推出新的語言 Kotiln、Swift,而後又發展到各類跨平臺 Hybrid App 開發,如 React Native、Weex、小程序等等。不過這些方案或多或少都有一些侷限性和缺點,因而 Google 推出了新的跨平臺移動應用開發技術:Flutter。 爲何說 Flutter 將是將來的主流跨平臺開發框架? Google 的 Flutter 開發應用的體驗和流暢度基本和原生體驗一致,感受不到不流暢和卡頓。 咱們知道在移動平臺上,原生應用的體驗最好、流暢度最高、性能也最好。而目前的跨平臺技術和框架的流暢度和體驗遠遠達不到原生的體驗,多少都會卡頓和丟幀,可是 Google 官方說 Flutter 能夠達到120 FPS。 Flutter 最出色的地方就是自建了繪製引擎,使得跨平臺開發一套代碼能夠創造出和原生應用相同的體驗。而且 Flutter 開發效率很是高,SDK 裏全部的佈局、控件都組件化,採用 React 方式。 Flutter 的開發不只僅侷限於移動跨平臺,目前已經支持 Web 開發、後端開發、PC 桌面應用開發(內測中)、嵌入式開發(內測中)。 這也是 Flutter 變得愈來愈受關注,愈來愈多大公司和開發者進行使用的緣由之一。 Flutter 支持多種開發工具的插件化使用,這就大大的豐富了各類開發工具能夠進行 Flutter 的開發和調試,也知足了不一樣開發者的開發習慣。 同時 Flutter 不但作到了一套代碼邏輯實現 Android 和 iOS 平臺的跨平臺運行,並且無需像 React Native 等技術那樣,部分和原生交互的邏輯須要寫兩套代碼邏輯,Flutter 只需寫一套代碼,大部分功能官方 SDK 裏已經支持,並在不斷更新拓展。並且若是須要一些與原生交互的部分,都是經過插件化形式使用,依然是一套代碼邏輯多平臺兼容。後面將會詳細講解。 接下來,咱們就開始咱們的認識 Flutter 技術之旅吧。本文將主要介紹:ios
Flutter 的誕生 目前各類跨平臺方案的對比 Flutter 特色 Flutter 框架結構 Flutter社區活躍度和趨勢小程序
1 Flutter 的誕生後端
Flutter 發佈api
( 圖片來自 Google 開發者官方 )微信
Flutter是 Google 於 2015 年 5 月 3 日推出的免費開源跨平臺開發框架,能夠快速開發 Android 和 iOS 應用,同時也將是將來的 Google Fuchsia OS 下開發應用的主要技術框架。將來的 Flutter 的開發不只僅侷限於移動跨平臺,目前已經支持 Web 開發、後端開發、PC 桌面應用開發(內測中)、嵌入式開發(內測中)。 Flutter 的第一個版本 SDK 運行在 Android 操做系統上,被稱做「Sky」。第一個開發者版本在 2015 年的 Flutter 開發者會議上被公佈,而且對外宣稱 Flutter 的開發的應用目標爲實現 120FPS的渲染性能,原生的渲染性能通常爲 80FPS。因爲以前一直是開發版本,因此 Flutter 不溫不火,只有少數的一些公司和 Google 內部在嘗試使用。 終於在 2018 年 12 月 5 日,Google Flutter 團隊正式發佈了 Flutter 1.0 正式版,正式版的發佈意味着 Flutter 在通過開發、測試、應用上已經基本上穩定和知足大部分開發需求了。這也使得Flutter 在發佈正式版後,更多的大公司、開發者紛紛轉型使用和學習 Flutter 進行跨平臺應用的開發。 目前在 Google 內部,Flutter 已經被普遍用於多個產品,好比 Google Ads 已經將其產品的 iOS 版本和 Android 版本轉向使用 Flutter。在正式版本以前,全世界已經有多個公司開始使用 Flutter 來開發應用,包括 Abbey Road Studios、阿里巴巴、Capital One、Groupon、Hamilton、京東、Philips Hue、Reflectly 以及騰訊等。而正式版的功能基本上已經比較完善,其餘的擴展更強大的功能 Google 官方也正在規劃擴展開發。目前 Flutter 1.5 穩定版已經於 2019 年 5 月 8 號發佈,這樣的更新頻率,給更多的開發者和公司增長了動力。Flutter 勢必也將成爲將來的跨平臺開發主流趨勢! 接下來回顧下 2018 年和 2019 年 Flutter 的發展狀況:架構
2 月底在世界移動大會 (MWC)上宣佈了第一個 Beta 版發佈; 5 月的 Google I/O 大會上發佈了 Beta 3; 6 月底的 GMTC 宣佈了首個發佈預覽版; 9 月的谷歌開發者大會(Google Developer Days)上,發佈預覽版 2。 12 月宣佈發佈正式穩定 1.0 版; 2019年 2 月宣佈發佈穩定版 1.2 版本 SDK。 2019年 5 月宣佈發佈穩定版 1.5 版本 SDK。框架
做爲 Flutter 1.0 以後的首次更新, Flutter SDK 1.2 穩定版圍繞如下幾點進行了重點優化與改進:函數
提高核心框架的穩定性、性能和質量; 改進現有 Widget 視覺效果和功能; 爲 Flutter 開發者提供全新的基於 Web 的調試工具。工具
Flutter 分支組件化
目前 Flutter 的社區很是活躍,Flutter 在 Github 最受歡迎的開源軟件中排名前 50,國內也有大量的開發者開始使用 Flutter 構建跨平臺 (Android & iOS) 的應用,如:阿里巴巴、騰訊、京東等都使用 Flutter 發佈了本身的應用。 Google 官方 Flutter 團隊計劃,將來也將支持 Flutter Web 和 Flutter PC 的應用移植開發,讓咱們拭目以待吧! 2 目前各類跨平臺方案的對比 目前咱們在開發應用時,須要同時兼容 iOS 和 Android 兩種平臺時有兩種技術選擇:走原生開發路線,把界面和邏輯在不一樣平臺分別實現;抑或用同一套代碼兼容多個平臺,但這每每意味着運行速度和產品體驗的損失。除了原生外,目前跨平臺技術通常是混合開發,如採用 H五、React Native、Weex、小程序等技術實現跨平臺應用。不過這些或多或少都能感受到卡頓和體驗不流暢,而且開發和學習成本很是高,並且都有各自的侷限性。 Flutter 的出現就是爲咱們提供了一套一箭雙鵰的解決方案:既能用原生代碼直接調用的方式來加速圖形渲染和 UI 繪製,又能同時運行在兩大主流移動操做系統上,而且體驗和流暢度和原生基本一致、開發效率也很是高、學習難度和成本低。 那麼接下來看下幾種方案的對比狀況:
技術 性能 開發效率 渲染方式 學習成本 可擴展性
Flutter 高,接近原生體驗 高 Skia 高性能自繪引擎 低,Widget 組件化 高,採用插件化的庫進行擴展
RN/Weex/小程序 有延遲,通常 通常,複雜、效率低 JS 驅動原生渲染 高,複雜 通常
原生應用 高 通常 原生渲染 高,須要學習 Android 和 iOS 原生 API 高
從上面的對比能夠看出,Flutter 的優點明顯:高體驗度、高開發效率、低學習成本、高可擴展性,將來 Google Flutter 團隊還將使 Flutter 支持 PC 和 Web 的跨平臺開發,真正全平臺。 在 Flutter 1.0 正式版本還沒有推出以前,已經有成百上千的基於 Flutter 開發的應用在 Apple Store 和 Google Play 上架,相信 Flutter 將會被愈來愈多的開發者和公司所接受和採用。 3 Flutter 特色 Flutter 是一個框架,基於 Dart 語言編寫,語言風格和 React 很像。Flutter 裏幾乎都是採用組件的形式進行構建應用和功能的,組件採用現代響應式框架構建,中心思想是用組件(Widget)構建你的 UI。 一切對象都是組件,Flutter 能夠說是全新的技術和平臺框架,學習和開發起來並不難,開發應用的效率也相對於原生提高了不少,而且運行速度和原生幾乎沒太大差異,遠遠高於 HTML 的應用的渲染速度。Flutter 的引擎使用 C++ 開發,基礎庫由 Dart 編寫,提供了用 Flutter 構建應用所需的基本的類和函數。 咱們看下 Flutter 官方的架構圖:
Flutter 官方架構圖
( Flutter 官方架構圖 - 來自 Flutter 官方網站 )
能夠看出核心引擎是使用 C++ 編寫,上層採用 Dart 語言編寫的 SDK,採用 React 風格組件化方式。而且提供了 Material 和 Cupertino 兩套風格的 UI Widget,使用起來很是方便。 那麼接下來咱們詳細瞭解下 Flutter 的特色:
Flutter 的一個重要的特色就是速度快。它基於 Skia 2D 硬件加速圖形引擎,該引擎也一樣用在了 Chrome 和 Android 平臺。媲美原生應用的速度,讓用戶體驗和流暢度作到更好。Flutter 的代碼基於 Dart 平臺,能夠被編譯成 iOS 和 Android 平臺上 32 位和 64 位的 ARM 代碼。 Flutter 很是高效。Flutter 引入了 Stateful Hot Reload(保持應用狀態的熱重載),這個革命性的新特性可讓移動開發者和設計師們時時快速預覽應用程序。經過 Stateful Hot Reload,無需從新啓動應用,就能夠在程序運行的時候直接看到代碼修改以後的效果。在Flutter官方的用戶反饋中,不少開發者表示這個特性使得開發效率提高了三倍以上。 Flutter 是開放的、開源的。Flutter 是一個基於 BSD-style 許可的開源項目,全球數百位開發者在爲Flutter貢獻代碼。Flutter 的插件生態系統平臺也已經很是的豐富,有數千款插件已經發布,避免了重複造輪子。因爲 Flutter 應用程序使用標準的 Android 和 iOS 的編譯打包工具 (build tools),所以它的開放性還體如今咱們可使用原生開發資源和技術。好比,咱們依然能夠在 Android 上使用 Kotlin 或者 Java,在 IOS 上使用 Swift 或者 Objective-C 來寫邏輯或者界面,使得能夠Flutter和原生混合開發。 Flutter 提供了兩套 UI Widget 風格庫:Material 和 Cupertino,這使得咱們能夠方便的快速構建 Android 和 iOS 不一樣平臺風格的應用,大大提高了開發效率。組件化開發風格也使得繪製UI的效率大大提高,學習成本也下降了不少。 Flutter 支持多種開發工具進行開發,好比 Visual Studio Code、Android Studio、IntelliJ 或其餘開發工具,只須要安裝相關的插件便可。
Visual Studio Code 預覽
Google Flutter 團隊官方也宣佈,Flutter Web SDK(Hummingbird)已經在研發中,咱們先來簡單的看下其架構:
Flutter Web SDK(Hummingbird)
目前在 Google I/O 2019 大會當天 Flutter Web SDK 已經正式發佈,並且開發出的 Web 性能很是高。 4 Flutter 社區 看一個技術和語言的發展狀況和支持狀況看它的相關資源、社區等也很是重要。Flutter 技術已經被不少大公司採用,具體案例列表,能夠在官方查看:flutter.dev/showcase 或https://itsallwidgets.com。
ShowCase
(來自 Flutter 官方:flutter.dev/showcase ) 咱們看下 Flutter 官方 GitHub 的更新狀況:
Flutter 官方 Github
開發者平時能夠關注 Github 的更新動態,官方更新頻率也是很快的,這點很是好,也令關注者和使用者對 Flutter 的將來更加有信心,由於社區和生態、更新頻率對開發者很是的有幫助。 遇到問題除了使用搜索引擎搜索外,也能夠在官方 GitHub 的 Issues 裏進行搜索或者提問。 咱們再看下官方版本的更新頻率:
Flutter官方 Github
Flutter官方 Github
除了這些之外,咱們還能夠在官方的倉庫進行查找第三方插件庫進行使用:pub.dartlang.org/。
Flutter 官方 Pub
裏面有很是多的插件庫供咱們使用,還配備有相關文檔,固然咱們也能夠提交本身的開源插件庫到上面。
Flutter 官方 Pub
5 Flutter 將來規劃 就目前而言,Flutter 的首要目標平臺是 iOS 和 Android,但 Flutter官方團隊也在不斷探索將 Flutter 拓展到手機端之外的更多平臺上,如 Web、PC、嵌入式等平臺。實現真正的跨平臺:一套代碼規範多平臺運行。 事實上,Flutter 的設計理念就是但願它能夠做爲一個靈活且便攜的 UI 工具包,以適應各類須要繪製屏幕內容的平臺。 其中 Flutter 的一些進展已經公佈,Flutter Desktop Embedding(google/flutter-desktop-embedding )就是其中的一個,這是一個使 Flutter 運行於 macOS、Linux 和 Windows 等桌面操做系統的項目。前不久,官方嘗試在樹莓派平臺運行了 Flutter 應用,以非正式和探索的形式向用戶展現 Flutter 是有可能運行在一些沒有完整桌面環境的小型設備中的。 除了這些,還有 Flutter Web(Hummingbird)。Hummingbird 是一個基於 Web 實現的 Flutter 運行時環境。它利用了 Dart 語言能被編譯成 JavaScript 的特性。這個項目讓 Flutter 應用程序可以無需改動就運行在標準 Web 平臺,目前還在開發測試中:
Hummingbird
Flutter 團隊也於 2019 年 1 月 27日發佈了 2019 年 Flutter 規劃路線。 如下幾點 Flutter 今年會着重關注:
核心和基礎 易用性 生態系統 移動端以外的支持 動態更新 工具鏈
固然,咱們也能夠提一些反饋給官方:
經過 Issues:flutter/issues/new/choose
郵件羣組:flutter-dev
Flutter 目前有四個版本: master、dev、beta 和 stable,質量和穩定性從前向後依次遞增,發佈速度固然也會是依次相對放緩。 官方計劃每月發佈一個 beta 版本,這個發佈一般會是在月初,整年會發布四個較大的正式 (stable) 版本。在生產環境裏,仍是建議你們使用 Flutter 的正式版本。 這個是官方的版本發佈流程:flutter/wiki/Release-process 若是你們對 Flutter 每月將會發布什麼感興趣的話,能夠在官方 GitHub 上的 milestones 頁面查看:flutter/milestones
Flutter Future
( 圖片來自 Google 開發者官方 )
總結 Flutter 現已進入 GitHub Top 20 軟件庫,經過這門課程但願你們能夠對 Flutter 進一步瞭解,而且對它充滿信心,也但願你們有所收穫。 Flutter 成爲將來主流跨平臺開發框架技術已經勢在必行,它開發高效、性能優秀、更新頻率快、插件三方庫支持多、Google 團隊的技術支持給力、一套代碼多終端運行,這些都很是的吸引人。 你們能夠:
去官方 GitHub 查看官方動態,或者去 Flutter Pub 查看下倉庫的使用方法,以便對 Flutter 有更加深刻的瞭解。 熟悉 Flutter 特色和將來趨勢,作好後續課程的學習和開發的準備。
入門 Flutter,掌握將來技術主流的主動權!
小編這呢,給你們推薦一個優秀的iOS交流平臺,平臺裏的夥伴們都是很是優秀的iOS開發人員,咱們專一於技術的分享與技巧的交流,你們能夠在平臺上討論技術,交流學習。歡迎你們的加入(想要進入的可加小編微信)。
小編微信號:17336563535
來源:本文爲第三方轉載,若有侵權請聯繫小編刪除。