為什么嵌入式系統(tǒng)要使用 Flutter?

yanding 2023-05-29 744

Flutter for Embedded Systems 是對(duì) Flutter 框架的一場(chǎng)革命。它的分層架構(gòu)、可移植代碼等特性,以及在各種平臺(tái)上使用單一 Dart 接口的能力,為 Flutter 和嵌入式系統(tǒng)市場(chǎng)展現(xiàn)了輝煌的未來(lái)。在這篇博文中,我們涵蓋了 Flutter 嵌入式系統(tǒng)的方方面面,以及一些關(guān)于一些知名品牌如何轉(zhuǎn)向 Flutter 基礎(chǔ)架構(gòu)以進(jìn)行嵌入式 Flutter 開(kāi)發(fā)的案例研究。此外,我們還給出了 Flutter 在嵌入式系統(tǒng)方面的前景,以及它將如何徹底改變信息娛樂(lè)、物聯(lián)網(wǎng)和其他類(lèi)似嵌入式系統(tǒng)的開(kāi)發(fā)。

介紹

基于 Dart 的跨平臺(tái)框架 Flutter 近年來(lái)獲得了很大的重視。根據(jù) 2022 年 Stack Overflow 開(kāi)發(fā)人員調(diào)查,盡管它對(duì)于市場(chǎng)來(lái)說(shuō)還不夠成熟或不夠老,但在產(chǎn)品所有者中排名第六的框架。由于其跨平臺(tái)兼容性,它越來(lái)越受歡迎的另一個(gè)領(lǐng)域是 Flutter Embedded。不僅是新產(chǎn)品所有者,許多知名人士也在他們的產(chǎn)品開(kāi)發(fā)方面轉(zhuǎn)向Flutter for Embedded。在我們跳到這個(gè) Flutter Embedded 的全方位方面之前,讓我們先看看“什么是嵌入式系統(tǒng)?”

什么是嵌入式系統(tǒng)?

顧名思義,嵌入式系統(tǒng)是軟件和硬件的組合,它們協(xié)同工作以執(zhí)行特定任務(wù),這些任務(wù)可以獨(dú)立存在,也可以作為涉及微處理器或基于微控制器的系統(tǒng)的更廣泛系統(tǒng)的一部分。嵌入式系統(tǒng)還有一個(gè)集成電路,設(shè)計(jì)用于執(zhí)行實(shí)時(shí)操作的計(jì)算。

它們還可能具有一些復(fù)雜性,從單個(gè)微控制器到具有連接外圍設(shè)備和網(wǎng)絡(luò)的一組處理器,從無(wú)用戶(hù)界面到復(fù)雜的 GUI。但是,復(fù)雜性與其設(shè)計(jì)任務(wù)的復(fù)雜性成正比。目前,大約 98% 的微處理器用于嵌入式系統(tǒng)。

嵌入式系統(tǒng)的特點(diǎn)

為什么嵌入式系統(tǒng)要使用 Flutter?

為什么使用 Flutter 嵌入式系統(tǒng)?

在嵌入式系統(tǒng)方面,F(xiàn)lutter 的需求量大幅增加。然而,如果 Flutter 是業(yè)務(wù)要求和需求的理想選擇,市場(chǎng)仍然存在兩難選擇。出色地!這個(gè)困境的答案存在于 Flutter 的特性中,而讓它走在前列的特性是跨平臺(tái)開(kāi)發(fā),它允許在多個(gè)平臺(tái)上使用單個(gè)代碼庫(kù),從而節(jié)省時(shí)間和金錢(qián)。

現(xiàn)在我們已經(jīng)熟悉了 Flutter Embedded Systems 的特性。讓我們看看為什么Flutter for Embedded Systems 是可行的:

帶有 AGL 的 Easy Embedder API

任何由 Automotive Grade Linux 提供支持的信息娛樂(lè)系統(tǒng)都可以通過(guò)嵌入 API 來(lái)利用該技術(shù)。Flutter 引擎的架構(gòu)使得支持嵌入到各種目標(biāo)環(huán)境中變得相當(dāng)簡(jiǎn)單。只需交叉編譯引擎并將其封裝在嵌入器中即可。得益于許多工程師都可以訪(fǎng)問(wèn)的 Embedder API,F(xiàn)lutter 應(yīng)用程序可以輕松地與車(chē)載系統(tǒng)集成。

盡管 Flutter 的嵌入器 api 仍處于起步階段,但它具有廣泛的功能,使我們能夠?qū)⒂形Φ?Flutter UI 用于各種設(shè)備,例如洗衣機(jī)、智能冰箱、物聯(lián)網(wǎng) (IoT) 設(shè)備等等。

持續(xù)發(fā)展的社區(qū)支持

沒(méi)有大型開(kāi)放生態(tài)系統(tǒng)的支持,沒(méi)有人可以增強(qiáng) Flutter 以支持他們的嵌入式案例。開(kāi)發(fā)人員渴望加入開(kāi)源 Flutter 社區(qū),因?yàn)樗麄冋J(rèn)為使用開(kāi)源軟件是對(duì)任何組織的嵌入式用戶(hù)體驗(yàn)的良好投資。

Flutter 團(tuán)隊(duì)在過(guò)去兩年實(shí)現(xiàn)了對(duì)嵌入式系統(tǒng)的支持,包括 Web、Linux、macOS 和 Windows 應(yīng)用程序。這表明他們?cè)诔錆M(mǎn)活力的社區(qū)的幫助下實(shí)現(xiàn)了這一目標(biāo),并且嵌入 Flutter 的未來(lái)令人驚訝。

嵌入式系統(tǒng)的 Flutter 特性

  • 分層架構(gòu)

  • 便攜式代碼

  • 在各種平臺(tái)上使用單一的 Dart 接口

  • 為 Flutter 嵌入式系統(tǒng)優(yōu)化的 Flutter Embedder

  • 柔性屏和單屏全屏

  • 對(duì) x64 和 Arm64 的架構(gòu)支持

  • 后端支持 Wayland、DRM(GBM、EGLStream)

  • 比 Linux 的 Flutter 桌面輕量級(jí)(沒(méi)有 X11 和 GTK/GDK)

  • 鍵盤(pán)、觸摸、鼠標(biāo)、剪貼板支持

  • API 與 Windows 版 Flutter 桌面的兼容性

  • 用于媒體播放器等的外部紋理插件(Flutter 中的紋理組合)。

  • 基于 Windows 的 Flutter 桌面

如果您計(jì)劃使用恒溫器、智能顯示器或類(lèi)似設(shè)備等低功耗硬件設(shè)備,則嵌入 Flutter 是可行的。此外,您可以將 Flutter 嵌入到新的操作系統(tǒng)或環(huán)境中,例如新的移動(dòng)平臺(tái)。但是,如果我們說(shuō) Flutter 是您的嵌入式系統(tǒng)的技術(shù)堆棧還不夠,那么讓我們轉(zhuǎn)向一些市場(chǎng)巨頭,如豐田和寶馬,他們與我們的聲明一致,以及他們?nèi)绾闻c Flutter 合作開(kāi)發(fā)嵌入式系統(tǒng)。

想要開(kāi)發(fā)可擴(kuò)展的 Flutter 應(yīng)用程序來(lái)發(fā)展您的業(yè)務(wù)?
作為一家著名的Flutter 應(yīng)用程序開(kāi)發(fā)公司,我們幫助您開(kāi)發(fā)經(jīng)濟(jì)高效的 Flutter 應(yīng)用程序。

為什么豐田選擇 Flutter Embedded?

眾所周知,豐田是一家重視客戶(hù)的公司。因此,當(dāng)屏幕上的信息娛樂(lè)系統(tǒng)出現(xiàn)在儀表板上時(shí),他們會(huì)努力改善自己的駕駛體驗(yàn)。Toyota 自己研發(fā)車(chē)載技術(shù),這也是他們對(duì) Flutter 著迷并對(duì) Flutter 如何有助于提升客戶(hù)的用戶(hù)體驗(yàn)感到興奮的一個(gè)原因。

隨著 Flutter 支持嵌入式設(shè)備,Toyota 的興奮程度飆升,Toyota 提出與 Flutter 建立合作伙伴關(guān)系。豐田的客戶(hù)與公司有著同等的聯(lián)系。他們希望信息娛樂(lè)系統(tǒng)具有相同水平的性能,增強(qiáng)駕駛體驗(yàn),并提供與豐田外觀和感覺(jué)相匹配的屏幕體驗(yàn)。

Toyota 的團(tuán)隊(duì)更加堅(jiān)定地選擇了 Flutter 及其高性能渲染引擎和 AOT 編譯,這幫助團(tuán)隊(duì)構(gòu)建了一個(gè)優(yōu)質(zhì)的外觀,感覺(jué)更像是智能手機(jī)應(yīng)用程序,而不是傳統(tǒng)的嵌入式系統(tǒng)。讓我們看看導(dǎo)致TOYOTA選擇Flutter的其他方面:

為什么嵌入式系統(tǒng)要使用 Flutter?

出色的性能與豐田的可靠性和一致性

為了與豐田汽車(chē)的整體質(zhì)量相匹配,豐田客戶(hù)希望獲得可靠且高性能的車(chē)載用戶(hù)體驗(yàn)。Flutter 的渲染引擎在有限的設(shè)置下表現(xiàn)良好,而 AOT 編譯等功能為我們提供了車(chē)載技術(shù)所需的一致性。

與智能手機(jī)同等水平的觸控技術(shù)

車(chē)內(nèi)技術(shù)。得益于 Flutter,豐田的團(tuán)隊(duì)可以提供與客戶(hù)對(duì)智能手機(jī)的期望相媲美的車(chē)內(nèi)用戶(hù)體驗(yàn)。每個(gè)人都可能回想起與他們的手機(jī)無(wú)關(guān)的負(fù)面觸摸屏應(yīng)用交互。這些應(yīng)用程序經(jīng)常讓人覺(jué)得它們需要更舒適。使用 Flutter 的跨平臺(tái)機(jī)制,豐田正在用它做的事情直接解決了這個(gè)問(wèn)題。Flutter 在包裝觸摸機(jī)制方面做得非常出色,所以它們看起來(lái)總是很自然。

開(kāi)發(fā)人員的人體工程學(xué)

了解了Flutter的性能特點(diǎn)后,F(xiàn)lutter的開(kāi)發(fā)經(jīng)驗(yàn)說(shuō)服了他們。他們使用 Flutter 為管道提供的所有多平臺(tái)技術(shù),從設(shè)計(jì)到發(fā)布,盡管他們的應(yīng)用程序是在單一目標(biāo)平臺(tái)上發(fā)布的。桌面支持與熱重載相結(jié)合,提供了一種快速的開(kāi)發(fā)方法,即使作為 alpha 功能也是如此。Flutter 支持廣泛的發(fā)布目標(biāo),包括運(yùn)行 iOS 和 Android 的平板電腦,這使得進(jìn)行物理和虛擬用戶(hù)測(cè)試成為可能。為了改進(jìn)與產(chǎn)品設(shè)計(jì)師的反饋流程,他們可以使用網(wǎng)絡(luò)支持來(lái)集成到設(shè)計(jì)工具中。

響應(yīng)客戶(hù)輸入的更快迭代

豐田團(tuán)隊(duì)利用 Flutter 的最終目標(biāo)是加速車(chē)載軟件的開(kāi)發(fā),改善客戶(hù)體驗(yàn)。得益于提供高生產(chǎn)力和低進(jìn)入門(mén)檻的技術(shù),他們可以在他們的設(shè)計(jì)和工程流程中開(kāi)發(fā)一個(gè)更緊密的整體反饋循環(huán)。由于這些更快的迭代周期,他們可以更早、更頻繁地收集和整合客戶(hù)反饋,這有助于豐田為客戶(hù)提供最好的體驗(yàn)。

你可能喜歡閱讀:

為什么你應(yīng)該使用 Flutter 構(gòu)建可擴(kuò)展的應(yīng)用程序?

寶馬也選擇了Flutter

著名汽車(chē)品牌 BMW 信任 Flutter,并在智能手機(jī)和車(chē)輛之間引入了一個(gè)關(guān)鍵接口。他們?cè)谠S多國(guó)家介紹了它,并計(jì)劃在許多其他國(guó)家展示它。然而,可擴(kuò)展和通用的軟件架構(gòu)推動(dòng)了 My BMW 應(yīng)用程序內(nèi)容的快速擴(kuò)展和快速推出。

BMW 在內(nèi)部使用 Flutter 執(zhí)行了整個(gè)開(kāi)發(fā)過(guò)程,這共同提供了更好的用戶(hù)體驗(yàn)并可以在全球范圍內(nèi)訪(fǎng)問(wèn)其他功能。該應(yīng)用程序涉及將 Amazon Alexa 集成到具有 7.0 操作系統(tǒng)的 BMW 中,并為具有 5.0 或 6.0 操作系統(tǒng)的 BMW 提供語(yǔ)音服務(wù)。

為什么嵌入式系統(tǒng)要使用 Flutter?

如何在不同設(shè)備上運(yùn)行 Flutter 應(yīng)用程序?

正如我們所討論的,F(xiàn)lutter 廣泛的跨平臺(tái)功能使其成為開(kāi)發(fā)人員調(diào)整現(xiàn)代解決方案的硬件和軟件功能的便捷選擇。

查看您從 Flutter 粉絲群獲得的社區(qū)支持,這樣您就可以創(chuàng)建出色的 Flutter Embedded 解決方案。

顫動(dòng)網(wǎng)絡(luò)支持

傳統(tǒng)的 Web UI 可以在 Dart 中創(chuàng)建并轉(zhuǎn)換為 JavaScript 代碼。JavaScript 代碼可以像典型的 Web 前端一樣安裝并連接到任何后端。UI 仍然使用瀏覽器技術(shù)渲染而不是本機(jī)渲染來(lái)渲染。

快速閱讀:

Flutter For Web:終極指南

Flutter 嵌入式系統(tǒng)支持

這是在嵌入式系統(tǒng)上使用 Flutter 前端的最無(wú)縫方法。前端代碼不是使用瀏覽器技術(shù),而是用 Dart 編寫(xiě),編譯成本地代碼(Java、Kotlin、C++、Swift 等),并使用本地圖形引擎作為本地應(yīng)用程序運(yùn)行。

Flutter 應(yīng)用程序如何與 UI 通信,尤其是在嵌入式中?

在設(shè)備上運(yùn)行的 Flutter 應(yīng)用程序需要一種機(jī)制來(lái)將觸摸手勢(shì)從屏幕傳輸?shù)綉?yīng)用程序,并將用戶(hù)界面?zhèn)鬏數(shù)?UI。只有少數(shù)主要顯示服務(wù)器協(xié)議具有此功能;Wayland 是最新的技術(shù)。X11 是較舊的技術(shù)。Flutter 必須支持這兩種協(xié)議以支持所有流行的嵌入式 Linux 發(fā)行版和有關(guān)服務(wù)器協(xié)議的開(kāi)發(fā)限制。

嵌入式 Flutter 的替代品

Flutter 在嵌入式系統(tǒng)領(lǐng)域的經(jīng)驗(yàn)有限,需要比其他可用選項(xiàng)更加成熟。下面是 Flutter Embedded Systems 的兩個(gè)有效替代方案,以及它們與 Flutter 之間的基本周向比較。

鉻亭

Chromium Kiosk 模式或 Electron 應(yīng)用程序可以在嵌入式平臺(tái)上運(yùn)行。盡管設(shè)置有所不同,這兩個(gè)系統(tǒng)都使您能夠使用眾所周知的網(wǎng)絡(luò)技術(shù)(HTML、JS 和 CSS)來(lái)開(kāi)發(fā)網(wǎng)絡(luò)應(yīng)用程序。缺點(diǎn)是操作這些涉及大量開(kāi)銷(xiāo),這可能會(huì)影響性能。例如,您必須運(yùn)行整個(gè)桌面 Linux 才能在 kiosk 模式下使用 Chromium 瀏覽器。

然后,您的應(yīng)用程序?qū)⒃跒g覽器中運(yùn)行,而不是在帶有 flutter-pi 的“裸機(jī)”Linux 上運(yùn)行。本機(jī)平臺(tái)和外部設(shè)備之間的通信受限是另一個(gè)缺點(diǎn)。例如,由于 Javascript 從未打算處理此類(lèi)任務(wù),因此從 Javascript 到藍(lán)牙模塊的通信需要復(fù)雜的橋接。使其優(yōu)于 Flutter Embedded Systems 的核心特征是成熟度。

Qt

接下來(lái)是 Qt。雖然 Qt 更專(zhuān)注于桌面和嵌入式設(shè)備,但它的功能與 Flutter 類(lèi)似。您可以使用 C++(一種鮮為人知的主要語(yǔ)言)創(chuàng)建 Qt 應(yīng)用程序。由于 Qt 改進(jìn)了平臺(tái)集成,與本機(jī)平臺(tái)和外部設(shè)備的通信稍微簡(jiǎn)單了一些。Qt 基于 C++,提供了比 Flutter 更好的庫(kù);它比其他語(yǔ)言更成熟,而且我們知道 C++ 比 Dart 和其他語(yǔ)言更快,使 Qt 在嵌入式開(kāi)發(fā)方面比 Flutter 更具優(yōu)勢(shì)。Qt 的唯一缺點(diǎn)是它只是部分免費(fèi)。

Flutter 嵌入式系統(tǒng)的未來(lái)

Flutter 最初僅適用于 Android 和 iOS。隨后,F(xiàn)lutter 團(tuán)隊(duì)增加了對(duì) macOS、Windows 和 Linux 等桌面操作系統(tǒng)的支持。甚至包括創(chuàng)建 Web 應(yīng)用程序的能力。這表明他們將來(lái)會(huì)繼續(xù)支持許多流。隨著即將發(fā)布的 Flutter 4.0,谷歌將宣布其對(duì) Flutter 平臺(tái)多年的承諾。

可用于 Flutter 開(kāi)發(fā)的目標(biāo)平臺(tái)數(shù)量與該技術(shù)的能力和生產(chǎn)力保持同步增長(zhǎng)。在可預(yù)見(jiàn)的未來(lái),F(xiàn)lutter 將成為開(kāi)發(fā)應(yīng)用程序時(shí)使用的技術(shù),無(wú)論平臺(tái)、您正在制作的應(yīng)用程序或您打算瞄準(zhǔn)的目標(biāo)市場(chǎng)如何。

根據(jù)官方文檔,他們不支持自定義引擎嵌入器,因?yàn)樗麄儫o(wú)法修復(fù)其網(wǎng)站上指出的缺陷。由于 flutter 團(tuán)隊(duì)的昂貴維護(hù)負(fù)擔(dān),引擎嵌入器的更新將比 flutter 和 dart 版本慢。

關(guān)鍵要點(diǎn)

這就是我們?cè)?Flutter Embedded Systems 的寶庫(kù)中所擁有的,以及它在未來(lái)所代表的未來(lái)。如果您也是一名產(chǎn)品負(fù)責(zé)人,并且對(duì)選擇 Flutter for Embedded Systems 進(jìn)行信息娛樂(lè)項(xiàng)目開(kāi)發(fā)是否可行感到困惑。我們的專(zhuān)家開(kāi)發(fā)人員隨時(shí)可以幫助您完成開(kāi)發(fā)之旅。此外,您還可以聘請(qǐng) Flutter Developer來(lái)幫助您獲得信心并根據(jù)您的需要和要求繼續(xù)進(jìn)行 Flutter 開(kāi)發(fā)。


The End