扣丁書屋

Flutter 2.0來了!成為跨平臺開發終極之選

下一代 Flutter 專為 Web、移動與臺式機環境構建而成。

昨天,谷歌正式發布 Flutter 的 2.0 版本。

作為 Flutter 的一次重大版本升級,Flutter 2 將幫助開發人員立足任意平臺創建起美觀、快速且能夠輕松移植的應用程序。在 Flutter2 的支持下,用戶可以使用相同的代碼庫將原生應用程序發布至 iOS、Android、Windows、macOS 以及 Linux 五大系統陣營之上。此外,Flutter 2 還能夠完美契合 Chrome、Firefox、Safari 以及 Edge 等網絡瀏覽器,甚至可以被嵌入至汽車、電視與智能家居當中,借此帶來最普遍、最具便攜性的計算體驗。

1專為 Web、移動與臺式機環境構建

在移動互聯網時代,Android 和 iOS 兩大陣營長期共存,再加上體系成熟的 Web 前端技術,導致出現同一個應用需多端重復開發的人力成本問題。對于一個大型企業而言,要想讓自己的服務覆蓋所有客戶,必須反復多次構建同一款應用程序。這種重復還缺乏良好的并行性——他們不會構建多種計費系統或者多種工資平臺。整個過程涉及巨大的浪費,而且往往會導致各種二階問題:如何將多個應用同時遷移至多個平臺,要求各個開發團隊只能以最慢的速度推進以實現彼此匹配等等。

針對跨平臺開發問題,當下還沒有比較完美的解決方案,這也導致框架層出不窮:小程序(WebView)、React Native 、Weex、Kotlin Native 等等。同時它們又都存在一定的缺陷,比如小程序(WebView)渲染耗時過長,白屏率會影響轉化收益,能實現的功能非常受限;再比如 React Native 的性能不足、問題排除難、維護成本高等。

2018 年 12 月 5 日,谷歌公開發布 Flutter 1.0 版本。

Flutter 通過自底向上自研框架來盡可能減少平臺差異,并且 “一出生”就以“UI 漂亮、像素級可控、性能流暢、可媲美原生性能”等特點吸引廣大開發者的眼球,自渲染引擎甚至具備開發游戲的能力。

雖然目標是提供快速且統一的跨平臺編碼能,但 Flutter 1.0 發布的時候,僅支持 Android 與 iOS 應用。之后兩年多,谷歌開始將 Flutter 的支持能力逐步擴展至 Web 應用程序、MacOS、Linux、Windows 乃至嵌入式設備當中。不過之前的支持僅處于早期開發階段,并未向開發人員全面公開,自然也談不到為生產級應用程序提供支持。但這一切正隨著 2.0 版本的落地而有所變化。

Flutter 的 Web 開發工具包自 2019 年以來一直處于測試階段,此番終于獲得了 Android 及 iOS 等環境的同等地位。對于桌面開發人員,谷歌還著手將面向 Windows、MacOS 以及 Linux 的 Flutter 過渡至“穩定”版本。

Flutter 產品經理 Tim Sneath 在采訪中表示,“對我們來說,這代表著一個巨大的里程碑。不僅代碼本身能夠滿足嚴苛的生產質量標準,同時也將軟件開發套件真正交付至每一位 Flutter 用戶手中?!?/p>

在應用程序的設計環節,開發人員需要針對平臺上的獨特因素做出諸多考量——包括用戶與設備之間的交互方式(例如在手機上進行觸摸與滑動、在臺式機上使用鍵盤加鼠標)、用戶查看內容時匹配的屏幕尺寸、乃至不同平臺慣常使用的編程語言等。正因為如此,谷歌需要投入不少精力逐步改進 Flutter 開發套件。

Sneath 表示,“為了達到這個階段,我們已經付出了大量努力,包括添加國際化支持,例如在 IME 編輯器中支持中文;為桌面支持設計出 TreeView 與 DataTable 等新的功能部件;同時為采用蘋果芯片的開發設備提供更好的支持?!?/p>

以 Linux 為例,Ubuntu 項目商業化公司 Canonical 透露,Flutter 目前已經成為其默認框架,用于為 Ubuntu 操作系統開發桌面與移動應用程序。去年 7 月,谷歌與 Canonical 已經共同發布公告,宣布 Flutter 將向 Linux 領域擴展,且 Canonical 工程師也將為 Flutter 項目貢獻代碼。

作為最新擴展的一部分,Canonical 還推出了基于 Flutter 的全新 Ubuntu 安裝器應用的早期演示。

Flutter 上的 Ubuntu 安裝器

Flutter 此次公布的其他重要更新,還包括 Google Mobile Ads SDK 的 beta 測試版。這套測試版之前一直處于早期試水階段,新版本將為 AdMob 以及 AdManager 提供多種廣告格式。谷歌還推出 Flutter 插件更新,全面涵蓋 Authentication、Crashlytics、云消息收發以及云存儲等多種 Firebase 服務。

2Dart: Flutter 背后的獨門絕技

Flutter 2 擁有靈活的多平臺與多設備可移植能力,而這種輕松過渡至 Web、桌面與嵌入式設備的優勢,在很大程度上要歸功于 Dart——針對多平臺開發并進行優化的谷歌編程語言。

在構建應用方面,Dart 提供一套獨特的功能組合:

  • 穩健的可移植表現,其編譯器能夠面向移動與臺式機設備生成高性能的英特爾與 ARM 機器碼,并為 Web 環境提供經過嚴格優化的 JavaScript 輸出。所有目標皆可使用相同的 Flutter 框架源代碼。
  • 支持有狀態熱重載的迭代開發,充分支持桌面與移動設備,同時提供現代 UI 編程中的異步、并發模式設計提供相應的語言構造。
  • 谷歌級性能水平,可跨越一切平臺實現良好性能表現,提供 sound null safety 以保證運行時與開發過程中的 null 約束能力。

從目前來看,還沒有哪種語言能夠像 Dart 這樣將所有功能優勢融合起來。也正因為如此,Dart 成為 GitHub 上發展速度最快的語言之一。

Dart 2.12 現已正式發布,也是自 2.0 版本之后我們推出的最大規模發行版,可充分支持 sound null safety。Sound null safety 有望消除 null 引用引發的異常,為開發及運行時提供良好保障,允許開發人員明確指定哪些類型中可以包含 null 值。最重要的是,這項功能并非空降落地:用戶可以按自己熟悉的方式將其逐步添加至代碼內,而后配合遷移工具實現 null 值保護。

此次更新還包含 FFI 穩定實現,允許用戶編寫出能夠與基于 C 語言的 API 進行互操作的高性能代碼;由 Flutter 編寫的全新集成化開發者與分析器工具;外加眾多性能與體量方面的改進,能夠在無需重新編譯的前提下進一步實現代碼升級。

3Flutter 生態現狀

去年 4 月,谷歌表示 Fluuter 的月度開發者用戶已經達到 50 萬。近一年之后,谷歌只是提到“采用率仍在不斷增長”,但并沒有提供任何更新數字。在本次發布中,谷歌強調 Google Play 軟件商店中已經存在 15 萬種 Flutter 驅動型應用程序。但蘋果 App Store 等外部商店擁有自己的統計系統,因此相關數據尚不明確。

Sneath 提到,“有趣的是,我們發現部分應用程序會面向特定移動平臺添加 Flutter 應用,之后再將其回滾至其他平臺?!?/p>

目前,世界各地的客戶都在積極嘗試使用 Flutter,包括微信、Grab、Yandex Go、Nubank、Sonos、Fastic、Betterment 以及 realtor.com 等高人氣應用。在谷歌,同樣有 1000 多名工程師正在使用 Dart 與 Flutter 構建應用產品,其中的代表包括 Stadia、Google One 以及 Google Nest Hub。

就在幾個月前,Google Pay 剛剛轉投 Flutter 的懷抱,借此在生產力與質量方面取得了重大進步。通過統一代碼庫,項目團隊消除了不同平臺之間的功能差異,并削減了超過 100 萬行代碼。Google Pay 還報告稱,如今團隊工程師們的效率大為提升、技術債務顯著減少,發布流程也變得更為統一(例如 iOS 與 Android 上的安全審查與試驗)。

另一方面,雖然 Flutter 希望提供快速且統一的跨平臺編碼能力,但對于體量更大、復雜度更高的企業及應用程序,對于 Flutter 這款相對年輕的框架而言,第三方軟件庫與軟件包的匱乏限制了開發人員的手腳。因此對于大多數企業而言,原生軟件開發方法仍然占據主流。

Sneath 提到,“生態系統不可能一夜之間構建完畢,從某些標準來看,Flutter 仍然是個年輕的平臺。但我們認為,超過 15000 個軟件包的涌現已經代表著 Nubank 與 Realtor.com 等廠商在填補這方面空白上做出的持續努力。我們為這種持續增長感到非常振奮?!?/p>

參考鏈接:

https://developers.googleblog.com/2021/03/announcing-flutter-2.html

https://venturebeat.com/2021/03/03/google-launches-flutter-2-0-to-target-developers-across-all-platforms/amp/


https://mp.weixin.qq.com/s/Nl2-TV4jc4Rlxsg-UHeJRQ

最多閱讀

如何有效定位Flutter內存問題? 1年以前  |  11676次閱讀
Flutter的手勢GestureDetector分析詳解 3年以前  |  7605次閱讀
Flutter插件詳解及其發布插件 2年以前  |  6293次閱讀
在Flutter中添加資源和圖片 3年以前  |  5144次閱讀
Flutter 狀態管理指南之 Provider 3年以前  |  4341次閱讀
發布Flutter開發的iOS程序 3年以前  |  4317次閱讀
Flutter for Web詳細介紹 3年以前  |  4190次閱讀
在Flutter中發起HTTP網絡請求 3年以前  |  3953次閱讀
使用Inspector檢查用戶界面 3年以前  |  3885次閱讀
Flutter Widget框架概述 3年以前  |  3261次閱讀
Flutter路由詳解 3年以前  |  3103次閱讀
JSON和序列化 3年以前  |  3026次閱讀
Flutter框架概覽 3年以前  |  2990次閱讀
推薦5個Flutter重磅開源項目! 1年以前  |  2951次閱讀
為Flutter應用程序添加交互 3年以前  |  2941次閱讀
處理文本輸入 3年以前  |  2844次閱讀
使用自定義字體 3年以前  |  2843次閱讀
編寫國際化Flutter App 3年以前  |  2831次閱讀

手機掃碼閱讀
18禁止午夜福利体验区,人与动人物xxxx毛片人与狍,色男人窝网站聚色窝
<蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <文本链> <文本链> <文本链> <文本链> <文本链> <文本链>