今年的 Google I/O 大會(huì)在位于加利福尼亞州山景城的總部附近舉辦,我們懷著無(wú)比激動(dòng)的心情面向全球直播了這場(chǎng)盛會(huì)!
就在三個(gè)多月前,我們?cè)诳夏醽唭?nèi)羅畢舉行的 Flutter Forward 大會(huì)上為 Flutter 和 Dart 推出了一個(gè)大膽的新路線圖。在此次 I/O 大會(huì)上,我們將通過(guò)介紹四個(gè)主題領(lǐng)域的最新動(dòng)態(tài),來(lái)分享我們?cè)趯?shí)現(xiàn)這一愿景方面取得的進(jìn)展,這四個(gè)主題分別為: 突破性的圖形性能、與 Web 應(yīng)用和平臺(tái)的無(wú)縫集成、對(duì)新興架構(gòu)的支持,以及對(duì)開(kāi)發(fā)者體驗(yàn)的關(guān)注。
您可能已經(jīng)了解到,F(xiàn)lutter 是一個(gè)界面工具包,它讓應(yīng)用開(kāi)發(fā)者只需編寫一套代碼,即可構(gòu)建移動(dòng)應(yīng)用、Web 應(yīng)用、桌面應(yīng)用和嵌入式設(shè)備應(yīng)用。您可以使用 Flutter 構(gòu)建精致美觀的應(yīng)用,完全掌控屏幕上的每一個(gè)像素。Flutter 具有如下獨(dú)特優(yōu)勢(shì):
-
快速。支持硬件加速圖形和原生編譯的機(jī)器代碼,可充分利用設(shè)備的各種功能。
-
高效。支持有狀態(tài)熱重載等技術(shù),讓您可立即看到代碼更改在應(yīng)用中的實(shí)際效果。
-
可移植。使用一套源代碼即可部署到多種平臺(tái),而不會(huì)出現(xiàn)意外情況。
-
開(kāi)源。它是一個(gè)完全開(kāi)源的工具包,您無(wú)需支付許可費(fèi),也不用為相關(guān)開(kāi)發(fā)工具付費(fèi)。
Flutter 持續(xù)發(fā)展
在 Google 乃至整個(gè)行業(yè)中,F(xiàn)lutter 的使用量都在持續(xù)增長(zhǎng)。在 Google,我們的團(tuán)隊(duì)已經(jīng)在移動(dòng)、Web 和桌面平臺(tái)上部署了 Flutter 應(yīng)用,示例包括:
-
Android 的最新應(yīng)用 "Nearby Share" 適配 Windows。這款應(yīng)用使用 Flutter 構(gòu)建,允許在 Windows 和 Android 設(shè)備之間無(wú)線分享照片和文檔:
https://www.android.com/better-together/nearby-share-app/
-
全新的 Play 管理中心應(yīng)用。這款應(yīng)用目前已發(fā)布公開(kāi) Beta 版,開(kāi)發(fā)者可以通過(guò)它查看應(yīng)用統(tǒng)計(jì)信息并回復(fù)應(yīng)用評(píng)價(jià):
https://play.google.com/store/apps/details?id=com.google.android.apps.playconsole
-
Google Cloud 移動(dòng)應(yīng)用。這款應(yīng)用讓您可以通過(guò)全新的 Flutter 賦能體驗(yàn)來(lái)監(jiān)控自己的服務(wù):
https://cloud.google.com/blog/products/management-tools/google-cloud-mobile-app-with-uptime-checks
-
Google 課堂練習(xí)集。這是一款在線新工具,用于創(chuàng)建和分發(fā)交互式作業(yè),為學(xué)生提供實(shí)時(shí)反饋和幫助:
https://workspaceupdates.googleblog.com/2023/04/practice-sets-for-google-classroom.html
我們?cè)?Flutter Forward 大會(huì)上宣布團(tuán)隊(duì)正在使用 Flutter 構(gòu)建新版本的 Google 課堂移動(dòng)應(yīng)用。新版本現(xiàn)已開(kāi)始在 iOS 上推出,Android 應(yīng)用更新版本中的新功能也即將推出。此版本的 Google 課堂使用最新的 Flutter 技術(shù),包括我們最新的 Impeller 圖形渲染引擎,可保證界面快速響應(yīng)、不卡頓。
-
我們?cè)?Flutter Forward 大會(huì)上宣布
https://www.youtube.com/watch?v=JVJF_M9bgj4
通過(guò)在 Flutter 中重寫 Google 課堂,我們提升了 Google 課堂的性能。該應(yīng)用的新版本比舊版本的冷啟動(dòng)時(shí)間更短,您可以觀看下面這則對(duì)比視頻了解詳情:
我們正在持續(xù)投入資源開(kāi)發(fā) package,以便將您的 Flutter 應(yīng)用運(yùn)用到 Google 開(kāi)發(fā)者生態(tài)系統(tǒng)的其他方面。這包括對(duì)原生廣告的 Google Ads 支持進(jìn)行了重大更新;新增了 Firebase 對(duì) Windows 平臺(tái)的支持,并改善了 Firebase 對(duì) Web 的支持;同時(shí)還新增了對(duì)更深入的 Android 互操作性的實(shí)驗(yàn)性支持。
- Google Ads 支持https://medium.com/flutter/2023-google-mobile-ads-updates-for-flutter-16b603df9ec9
- 新增了 Firebase 對(duì) Windows 平臺(tái)的支持,并改善了 Firebase 對(duì) Web 的支持https://github.com/firebase/flutterfire
- 更深入的 Android 互操作性https://io.google/2023/program/2f02692d-9a41-49c0-8786-1a22b7155628/
- SNCF Connecthttps://play.google.com/store/apps/details?id=com.vsct.vsc.mobile.horaireetresa.android&hl=en_US&gl=US
- SO VEGANhttps://apps.apple.com/us/app/so-vegan/id1572826611
- Rive 開(kāi)發(fā)的用于創(chuàng)建動(dòng)畫圖形的超快桌面應(yīng)用https://rive.app/downloads
- Agapéhttps://www.getdailyagape.com/
- 采用全新設(shè)計(jì)的精美 Global Citizen 應(yīng)用https://www.globalcitizen.org/en/content/new-global-citizen-app-impact-activism-every-day/
- 最新的 Ubuntu Linux 安裝程序https://9to5linux.com/first-look-at-ubuntu-23-04s-brand-new-desktop-installer-written-in-flutter
Impeller 帶來(lái)的突破性圖形性能
我們期待通過(guò) Flutter 為開(kāi)發(fā)者和設(shè)計(jì)人員提供強(qiáng)大的功能,以實(shí)現(xiàn)令人驚嘆的圖形體驗(yàn)。在過(guò)去的幾年里,我們一直在重建圖形渲染架構(gòu)以提高速度和性能,現(xiàn)在終于取得了成果,我們將這款新引擎命名為 Impeller。
"我們期待通過(guò) Flutter 為開(kāi)發(fā)者和設(shè)計(jì)人員提供強(qiáng)大的功能,從而實(shí)現(xiàn)令人驚嘆的圖形體驗(yàn)。"
自從在 iOS 上引入 Impeller 以來(lái),我們不斷擴(kuò)大測(cè)試范圍并加深與早期采納者的合作,以驗(yàn)證生產(chǎn)質(zhì)量并進(jìn)一步調(diào)整性能。隨著現(xiàn)下 Flutter 3.10 的發(fā)布,我們很高興地宣布: Impeller 現(xiàn)在將在 iOS 設(shè)備上默認(rèn)開(kāi)啟,只需遷移到最新版本的 Flutter 即可大幅提升應(yīng)用的性能。
-
Impeller 現(xiàn)在將在 iOS 設(shè)備上默認(rèn)開(kāi)啟
https://github.com/flutter/flutter/issues/122223
-
Vulkan
https://www.vulkan.org/
-
現(xiàn)代 Android 設(shè)備
https://developer.android.google.cn/about/dashboards#Vulkan
與 Web 應(yīng)用的無(wú)縫集成
正如我們?cè)?Flutter Forward 大會(huì)上介紹的那樣,我們的目標(biāo)與大多數(shù)現(xiàn)有的 Web 框架有所不同。我們?yōu)?Web 構(gòu)建的 Flutter 的實(shí)現(xiàn)方式表明,F(xiàn)lutter 明顯不是為了設(shè)計(jì)成通用的 Web 框架。已經(jīng)有很多現(xiàn)有的 Web 框架,如 Angular 和 React,在這一領(lǐng)域表現(xiàn)的非常出色。然而,F(xiàn)lutter 是第一個(gè)圍繞 CanvasKit 和 WebAssembly (這兩個(gè)技術(shù)特別適合用于打造復(fù)雜的應(yīng)用體驗(yàn)) 等新興 Web 技術(shù)進(jìn)行架構(gòu)設(shè)計(jì)的框架。
-
CanvasKit
https://skia.org/docs/user/modules/canvaskit/
-
WebAssembly
https://webassembly.org/
"Flutter 是第一個(gè)圍繞 CanvasKit 和 WebAssembly 等新興網(wǎng)絡(luò)技術(shù)進(jìn)行架構(gòu)設(shè)計(jì)的框架。"
自最初 Flutter 推出 Windows 平臺(tái)支持以來(lái),我們一直在努力提高其性能、可用性和互操作性。
影響感知性能的一個(gè)主要因素是加載時(shí)間,即從用戶請(qǐng)求頁(yè)面到頁(yè)面可交互所用的時(shí)間間隔。在此版本中,我們?nèi)〉昧孙w躍性的進(jìn)展,這要?dú)w功于在所有瀏覽器上縮減了 CanvasKit 的大小,并對(duì)基于 Chromium 的瀏覽器進(jìn)行了其他方面的優(yōu)化。在 Flutter 3.10 中,CanvasKit 的大小縮減到 1.5MB (之前版本中的大小為 2.7MB)。圖標(biāo)字體也去除了未使用的字形,在大多數(shù)情況下,其大小縮減至原來(lái)的百分之一。得益于這些優(yōu)化,我們使用模擬數(shù)據(jù)線連接將默認(rèn)計(jì)數(shù)器應(yīng)用的加載時(shí)間縮短了 42%。
正如 Flutter Forward 大會(huì)上預(yù)告的那樣,我們現(xiàn)在支持在現(xiàn)有 HTML 網(wǎng)頁(yè)中嵌入 Flutter 內(nèi)容,而不是讓 Flutter 占據(jù)整個(gè)頁(yè)面。此外,F(xiàn)lutter 也不需要使用內(nèi)嵌框架。在 Flutter 3.10 中,我們引入了元素嵌入功能。借助該功能,您可以像在頁(yè)面上集成任何其他 CSS 元素一樣集成 Flutter 內(nèi)容。例如,您可以應(yīng)用復(fù)雜的 CSS 過(guò)渡和轉(zhuǎn)換。若想開(kāi)始體驗(yàn),不妨試試這些使用 JavaScript 或?qū)?Flutter 封裝在 Angular 組件中的示例應(yīng)用。
-
支持在現(xiàn)有 HTML 網(wǎng)頁(yè)中嵌入 Flutter 內(nèi)容
https://flutter-forward-demos.web.app/#/
-
JavaScript
https://github.com/flutter/samples/tree/main/web_embedding/element_embedding_demo
-
Angular 組件
https://github.com/flutter/samples/tree/main/web_embedding/ng-flutter
Flutter 3.10 繼續(xù)專注于發(fā)展突破性的圖形性能,還支持 Web 上的 fragment 著色器。自定義著色器可用于提供超出 Flutter SDK 所提供的豐富圖形效果。著色器是一種使用類似于 Dart 的小型語(yǔ)言 (稱為 GLSL) 編寫的程序,它會(huì)在用戶的 GPU 上執(zhí)行。如需了解更多信息,請(qǐng)查看我們關(guān)于著色器的文檔以及新發(fā)布的 Codelab。
- fragment 著色器https://docs.flutter.dev/development/ui/advanced/shaders
- GLSLhttps://www.khronos.org/opengl/wiki/Core_Language_(GLSL)
- 關(guān)于著色器的文檔https://docs.flutter.dev/ui/advanced/shaders
- 新發(fā)布的 Codelabhttps://codelabs.developers.google.com/codelabs/flutter-next-gen-uis#0
借助 WebAssembly 實(shí)現(xiàn)對(duì)新架構(gòu)的早期支持
WebAssembly (通??s寫為 Wasm) 作為適用于現(xiàn)代瀏覽器而無(wú)關(guān)平臺(tái)的二進(jìn)制指令格式已經(jīng)日漸成熟。在 Web 應(yīng)用上,F(xiàn)lutter 一直使用 Wasm 來(lái)分發(fā) CanvasKit 運(yùn)行時(shí),而 Dart 框架和應(yīng)用代碼歷來(lái)都被編譯為 JavaScript。我們將感興趣的目標(biāo)從 JavaScript 轉(zhuǎn)向 Wasm 已經(jīng)有一段時(shí)間了。然而,直到最近,Wasm 仍然缺乏對(duì) Dart 等垃圾回收語(yǔ)言的原生支持。
- WebAssemblyhttps://webassembly.org/
- 現(xiàn)代瀏覽器https://caniuse.com/wasm
-
WasmGC
https://github.com/WebAssembly/gc/blob/main/proposals/gc/Overview.md
WebAssembly 具有將原生代碼的性能帶到 Web 的潛力,這一點(diǎn)讓我們興奮不已。Dart 的 JavaScript 編譯器已在 Google 的數(shù)百萬(wàn)行代碼中使用,已經(jīng)生成了執(zhí)行速度快、優(yōu)化良好的 JavaScript。然而,切換到 Wasm 將為我們提供原生代碼的效率和 JavaScript 的可移植性,這將進(jìn)一步提高我們?cè)?Web 上的性能。在一些早期的基準(zhǔn)測(cè)試中,我們看到執(zhí)行速度提高到原來(lái)的 3 倍,而執(zhí)行速度的提升會(huì)轉(zhuǎn)化為更豐富的基于 Web 的體驗(yàn)。此外,借助 Wasm 我們能夠與用其他語(yǔ)言 (如 Kotlin 和 C++) 編寫的代碼更輕松地集成在一起。
"WebAssembly 具有將原生代碼的性能帶到 Web 的潛力,這一點(diǎn)讓我們興奮不已。"
在翹首以盼瀏覽器支持變得更加普遍的同時(shí),我們?cè)陬A(yù)發(fā)布渠道中引入了對(duì)將 Flutter 應(yīng)用編譯為 WebAssembly 的預(yù)覽支持。我們希望您能在自己的應(yīng)用中試用該功能,并盡早與我們分享反饋。如需了解詳情,您可以訪問(wèn) flutter.dev/wasm:
https://flutter.dev/wasm
對(duì)開(kāi)發(fā)者體驗(yàn)的持續(xù)關(guān)注
一方面我們希望通過(guò)前面列出的突破性的圖形性能和更豐富的網(wǎng)絡(luò)支持讓更多用戶滿意,另一方面我們也在這個(gè)版本中為提升開(kāi)發(fā)者的速度和效率進(jìn)行了許多改進(jìn)。并且我們?cè)敿?xì)的技術(shù)文檔記錄了對(duì) Flutter 本身的數(shù)百項(xiàng)改進(jìn),這將引起目前 Flutter 開(kāi)發(fā)者的極大興趣。
- 我們?cè)敿?xì)的技術(shù)文檔記錄了對(duì) Flutter 本身的數(shù)百項(xiàng)改進(jìn)https://medium.com/flutter/whats-new-in-flutter-3-10-b21db2c38c73
但在這個(gè)版本中,對(duì)核心開(kāi)發(fā)者體驗(yàn)最顯著的改進(jìn)是發(fā)布了 Dart 3,包含在 Flutter 3.10 中。
- Dart 3https://dart.cn
"Dart 3 完成了為 Dart 生態(tài)系統(tǒng)帶來(lái)可靠的空安全的漫長(zhǎng)旅程。"
Dart 3 引入了許多其他新功能,包括記錄、模式和類修飾符,這將提高 Dart 代碼的可讀性和流暢性。歡迎前往 Dart 3 博客,了解更多信息和示例。Flutter 本身已經(jīng)在利用這些新的 Dart 3 功能,因此隨著這些功能的推出,您會(huì)看到我們自己的代碼庫(kù)得到了改進(jìn)。我們相信您會(huì)喜歡在自己的代碼中使用這些功能。
- Dart 3 博客https://medium.com/dartlang/announcing-dart-3-53f065a10635
SLSA 和軟件供應(yīng)鏈安全
在當(dāng)今時(shí)代,我們不得不采取措施來(lái)防止對(duì)關(guān)鍵軟件基礎(chǔ)設(shè)施的威脅。因此,除了前面列出的功能外,我們的工程團(tuán)隊(duì)還將安全方面的投入列為今年的工作重點(diǎn)。這項(xiàng)投入涵蓋安全測(cè)試、自動(dòng)化和供應(yīng)鏈安全。
- 今年的工作重點(diǎn)https://medium.com/flutter/flutter-in-2023-strategy-and-roadmap-60efc8d8b0c7
"我們的團(tuán)隊(duì)已將安全方面的投入列為工作重點(diǎn)。"我們將通過(guò)開(kāi)展以下工作,進(jìn)一步增強(qiáng)企業(yè)采用 Flutter 的信心:
-
開(kāi)源安全基金會(huì) (OpenSSF) 最佳實(shí)踐計(jì)劃是幫助項(xiàng)目遵守安全和漏洞管理最佳實(shí)踐的實(shí)用基準(zhǔn)。很高興地宣布,我們已經(jīng)達(dá)成了這個(gè)計(jì)劃合格水平的全部合格要求,并繼續(xù)努力朝著符合白銀級(jí)和黃金級(jí)標(biāo)準(zhǔn)的方向前進(jìn)。
-
Flutter 還在所有 Flutter 關(guān)鍵庫(kù)上啟用了 OpenSSF Scorecards 和 Dependabot。OpenSSF Scorecards 是一種靜態(tài)分析工具,用于檢查您的庫(kù)對(duì)最佳實(shí)踐的遵守程度,并在這些實(shí)踐沒(méi)有被遵守時(shí)發(fā)現(xiàn)問(wèn)題。Dependabot 可監(jiān)控項(xiàng)目依賴項(xiàng)中是否存在漏洞,并創(chuàng)建拉取請(qǐng)求以便在必要時(shí)更新它們。利用這些工具,F(xiàn)lutter 團(tuán)隊(duì)已經(jīng)在我們的網(wǎng)站和 Codelab 中發(fā)現(xiàn)并解決了 300 多個(gè)漏洞。
-
Flutter 和 Dart SDK 以及這些 SDK 的發(fā)布工作流程最近已達(dá)到 SLSA L1 等級(jí)。SLSA (軟件制品的供應(yīng)鏈等級(jí)) 框架可幫助開(kāi)源項(xiàng)目保持強(qiáng)大的供應(yīng)鏈安全性。達(dá)到 SLSA L1 等級(jí)是朝著保護(hù) Flutter 開(kāi)發(fā)者日常使用的工具邁出的重要一步。
-
最后,我們對(duì)基礎(chǔ)架構(gòu)進(jìn)行了多項(xiàng)安全改進(jìn),包括遷移到更安全的構(gòu)建和測(cè)試環(huán)境,同時(shí)限制對(duì)這些環(huán)境的訪問(wèn)。此外,我們還改進(jìn)了 Flutter 框架和引擎工件的日志記錄和審核功能,為我們的工件提供了卓越的保護(hù)。這些改進(jìn)讓 Flutter 團(tuán)隊(duì)更深入地了解我們生成的工件在構(gòu)建流程中的處理方式。
-
最佳實(shí)踐計(jì)劃
https://bestpractices.coreinfrastructure.org/en
-
全部合格要求
https://bestpractices.coreinfrastructure.org/en/projects/5631
-
白銀級(jí)
https://bestpractices.coreinfrastructure.org/en/projects/5631?criteria_level=1
-
黃金級(jí)
https://bestpractices.coreinfrastructure.org/en/projects/5631?criteria_level=2
-
OpenSSF Scorecards
https://securityscorecards.dev/
-
Dependabot
https://github.com/dependabot/dependabot-core
-
SLSA L1
https://slsa.dev/spec/v1.0/levels#build-l1
一個(gè)凝聚了開(kāi)發(fā)者全員智慧的開(kāi)源項(xiàng)目
此版本中還包含數(shù)以千計(jì)的其他更新,我們希望這些內(nèi)容會(huì)讓現(xiàn)有的 Flutter 開(kāi)發(fā)者滿意。但值得注意的是,這些貢獻(xiàn)者中有相當(dāng)一部分是 Google 以外的開(kāi)發(fā)者,貢獻(xiàn)內(nèi)容包括開(kāi)發(fā)新功能;改進(jìn)文檔;開(kāi)發(fā)軟件包,將 Flutter 擴(kuò)展到我們從未想象到的領(lǐng)域;提交可重現(xiàn)的問(wèn)題報(bào)告和功能請(qǐng)求,為我們提供了有關(guān)如何改進(jìn) Flutter 的新視角。
Flutter 不只是一個(gè) Google 項(xiàng)目,而是一個(gè)全員參與的項(xiàng)目。我們非常感謝社區(qū)的多樣性和熱情參與,讓 Flutter 蛻變至此。很高興能與您一起完成這一使命,F(xiàn)lutter 將邁向更加光明的未來(lái)!
Betterment 開(kāi)發(fā)者故事: 使用 Flutter 規(guī)?;瘶?gòu)建理財(cái)應(yīng)用
?點(diǎn)擊屏末|閱讀原文|即刻訪問(wèn) Flutter 開(kāi)發(fā)者社區(qū)中文資源
原文標(biāo)題:在 I/O 看未來(lái) | Flutter 和 Dart 最新進(jìn)展
文章出處:【微信公眾號(hào):谷歌開(kāi)發(fā)者】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
-
谷歌
+關(guān)注
關(guān)注
27文章
6171瀏覽量
105484
原文標(biāo)題:在 I/O 看未來(lái) | Flutter 和 Dart 最新進(jìn)展
文章出處:【微信號(hào):Google_Developers,微信公眾號(hào):谷歌開(kāi)發(fā)者】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論