为什么嵌入式系统要使用 Flutter?
Flutter for Embedded Systems 是对 Flutter 框架的一场革命。它的分层架构、可移植代码等特性,以及在各种平台上使用单一 Dart 接口的能力,为 Flutter 和嵌入式系统市场展现了辉煌的未来。在这篇博文中,我们涵盖了 Flutter 嵌入式系统的方方面面,以及一些关于一些知名品牌如何转向 Flutter 基础架构以进行嵌入式 Flutter 开发的案例研究。此外,我们还给出了 Flutter 在嵌入式系统方面的前景,以及它将如何彻底改变信息娱乐、物联网和其他类似嵌入式系统的开发。
介绍
基于 Dart 的跨平台框架 Flutter 近年来获得了很大的重视。根据 2022 年 Stack Overflow 开发人员调查,尽管它对于市场来说还不够成熟或不够老,但在产品所有者中排名第六的框架。由于其跨平台兼容性,它越来越受欢迎的另一个领域是 Flutter Embedded。不仅是新产品所有者,许多知名人士也在他们的产品开发方面转向Flutter for Embedded。在我们跳到这个 Flutter Embedded 的全方位方面之前,让我们先看看“什么是嵌入式系统?”
什么是嵌入式系统?
顾名思义,嵌入式系统是软件和硬件的组合,它们协同工作以执行特定任务,这些任务可以独立存在,也可以作为涉及微处理器或基于微控制器的系统的更广泛系统的一部分。嵌入式系统还有一个集成电路,设计用于执行实时操作的计算。
它们还可能具有一些复杂性,从单个微控制器到具有连接外围设备和网络的一组处理器,从无用户界面到复杂的 GUI。但是,复杂性与其设计任务的复杂性成正比。目前,大约 98% 的微处理器用于嵌入式系统。
嵌入式系统的特点
为什么使用 Flutter 嵌入式系统?
在嵌入式系统方面,Flutter 的需求量大幅增加。然而,如果 Flutter 是业务要求和需求的理想选择,市场仍然存在两难选择。出色地!这个困境的答案存在于 Flutter 的特性中,而让它走在前列的特性是跨平台开发,它允许在多个平台上使用单个代码库,从而节省时间和金钱。
现在我们已经熟悉了 Flutter Embedded Systems 的特性。让我们看看为什么Flutter for Embedded Systems 是可行的:
带有 AGL 的 Easy Embedder API
任何由 Automotive Grade Linux 提供支持的信息娱乐系统都可以通过嵌入 API 来利用该技术。Flutter 引擎的架构使得支持嵌入到各种目标环境中变得相当简单。只需交叉编译引擎并将其封装在嵌入器中即可。得益于许多工程师都可以访问的 Embedder API,Flutter 应用程序可以轻松地与车载系统集成。
尽管 Flutter 的嵌入器 api 仍处于起步阶段,但它具有广泛的功能,使我们能够将有吸引力的 Flutter UI 用于各种设备,例如洗衣机、智能冰箱、物联网 (IoT) 设备等等。
持续发展的社区支持
没有大型开放生态系统的支持,没有人可以增强 Flutter 以支持他们的嵌入式案例。开发人员渴望加入开源 Flutter 社区,因为他们认为使用开源软件是对任何组织的嵌入式用户体验的良好投资。
Flutter 团队在过去两年实现了对嵌入式系统的支持,包括 Web、Linux、macOS 和 Windows 应用程序。这表明他们在充满活力的社区的帮助下实现了这一目标,并且嵌入 Flutter 的未来令人惊讶。
嵌入式系统的 Flutter 特性
分层架构
便携式代码
在各种平台上使用单一的 Dart 接口
为 Flutter 嵌入式系统优化的 Flutter Embedder
柔性屏和单屏全屏
对 x64 和 Arm64 的架构支持
后端支持 Wayland、DRM(GBM、EGLStream)
比 Linux 的 Flutter 桌面轻量级(没有 X11 和 GTK/GDK)
键盘、触摸、鼠标、剪贴板支持
API 与 Windows 版 Flutter 桌面的兼容性
用于媒体播放器等的外部纹理插件(Flutter 中的纹理组合)。
基于 Windows 的 Flutter 桌面
如果您计划使用恒温器、智能显示器或类似设备等低功耗硬件设备,则嵌入 Flutter 是可行的。此外,您可以将 Flutter 嵌入到新的操作系统或环境中,例如新的移动平台。但是,如果我们说 Flutter 是您的嵌入式系统的技术堆栈还不够,那么让我们转向一些市场巨头,如丰田和宝马,他们与我们的声明一致,以及他们如何与 Flutter 合作开发嵌入式系统。
想要开发可扩展的 Flutter 应用程序来发展您的业务?
作为一家著名的Flutter 应用程序开发公司,我们帮助您开发经济高效的 Flutter 应用程序。
为什么丰田选择 Flutter Embedded?
众所周知,丰田是一家重视客户的公司。因此,当屏幕上的信息娱乐系统出现在仪表板上时,他们会努力改善自己的驾驶体验。Toyota 自己研发车载技术,这也是他们对 Flutter 着迷并对 Flutter 如何有助于提升客户的用户体验感到兴奋的一个原因。
随着 Flutter 支持嵌入式设备,Toyota 的兴奋程度飙升,Toyota 提出与 Flutter 建立合作伙伴关系。丰田的客户与公司有着同等的联系。他们希望信息娱乐系统具有相同水平的性能,增强驾驶体验,并提供与丰田外观和感觉相匹配的屏幕体验。
Toyota 的团队更加坚定地选择了 Flutter 及其高性能渲染引擎和 AOT 编译,这帮助团队构建了一个优质的外观,感觉更像是智能手机应用程序,而不是传统的嵌入式系统。让我们看看导致TOYOTA选择Flutter的其他方面:
出色的性能与丰田的可靠性和一致性
为了与丰田汽车的整体质量相匹配,丰田客户希望获得可靠且高性能的车载用户体验。Flutter 的渲染引擎在有限的设置下表现良好,而 AOT 编译等功能为我们提供了车载技术所需的一致性。
与智能手机同等水平的触控技术
车内技术。得益于 Flutter,丰田的团队可以提供与客户对智能手机的期望相媲美的车内用户体验。每个人都可能回想起与他们的手机无关的负面触摸屏应用交互。这些应用程序经常让人觉得它们需要更舒适。使用 Flutter 的跨平台机制,丰田正在用它做的事情直接解决了这个问题。Flutter 在包装触摸机制方面做得非常出色,所以它们看起来总是很自然。
开发人员的人体工程学
了解了Flutter的性能特点后,Flutter的开发经验说服了他们。他们使用 Flutter 为管道提供的所有多平台技术,从设计到发布,尽管他们的应用程序是在单一目标平台上发布的。桌面支持与热重载相结合,提供了一种快速的开发方法,即使作为 alpha 功能也是如此。Flutter 支持广泛的发布目标,包括运行 iOS 和 Android 的平板电脑,这使得进行物理和虚拟用户测试成为可能。为了改进与产品设计师的反馈流程,他们可以使用网络支持来集成到设计工具中。
响应客户输入的更快迭代
丰田团队利用 Flutter 的最终目标是加速车载软件的开发,改善客户体验。得益于提供高生产力和低进入门槛的技术,他们可以在他们的设计和工程流程中开发一个更紧密的整体反馈循环。由于这些更快的迭代周期,他们可以更早、更频繁地收集和整合客户反馈,这有助于丰田为客户提供最好的体验。
宝马也选择了Flutter
著名汽车品牌 BMW 信任 Flutter,并在智能手机和车辆之间引入了一个关键接口。他们在许多国家介绍了它,并计划在许多其他国家展示它。然而,可扩展和通用的软件架构推动了 My BMW 应用程序内容的快速扩展和快速推出。
BMW 在内部使用 Flutter 执行了整个开发过程,这共同提供了更好的用户体验并可以在全球范围内访问其他功能。该应用程序涉及将 Amazon Alexa 集成到具有 7.0 操作系统的 BMW 中,并为具有 5.0 或 6.0 操作系统的 BMW 提供语音服务。
如何在不同设备上运行 Flutter 应用程序?
正如我们所讨论的,Flutter 广泛的跨平台功能使其成为开发人员调整现代解决方案的硬件和软件功能的便捷选择。
查看您从 Flutter 粉丝群获得的社区支持,这样您就可以创建出色的 Flutter Embedded 解决方案。
颤动网络支持
传统的 Web UI 可以在 Dart 中创建并转换为 JavaScript 代码。JavaScript 代码可以像典型的 Web 前端一样安装并连接到任何后端。UI 仍然使用浏览器技术渲染而不是本机渲染来渲染。
Flutter 嵌入式系统支持
这是在嵌入式系统上使用 Flutter 前端的最无缝方法。前端代码不是使用浏览器技术,而是用 Dart 编写,编译成本地代码(Java、Kotlin、C++、Swift 等),并使用本地图形引擎作为本地应用程序运行。
Flutter 应用程序如何与 UI 通信,尤其是在嵌入式中?
在设备上运行的 Flutter 应用程序需要一种机制来将触摸手势从屏幕传输到应用程序,并将用户界面传输到 UI。只有少数主要显示服务器协议具有此功能;Wayland 是最新的技术。X11 是较旧的技术。Flutter 必须支持这两种协议以支持所有流行的嵌入式 Linux 发行版和有关服务器协议的开发限制。
嵌入式 Flutter 的替代品
Flutter 在嵌入式系统领域的经验有限,需要比其他可用选项更加成熟。下面是 Flutter Embedded Systems 的两个有效替代方案,以及它们与 Flutter 之间的基本周向比较。
铬亭
Chromium Kiosk 模式或 Electron 应用程序可以在嵌入式平台上运行。尽管设置有所不同,这两个系统都使您能够使用众所周知的网络技术(HTML、JS 和 CSS)来开发网络应用程序。缺点是操作这些涉及大量开销,这可能会影响性能。例如,您必须运行整个桌面 Linux 才能在 kiosk 模式下使用 Chromium 浏览器。
然后,您的应用程序将在浏览器中运行,而不是在带有 flutter-pi 的“裸机”Linux 上运行。本机平台和外部设备之间的通信受限是另一个缺点。例如,由于 Javascript 从未打算处理此类任务,因此从 Javascript 到蓝牙模块的通信需要复杂的桥接。使其优于 Flutter Embedded Systems 的核心特征是成熟度。
Qt
接下来是 Qt。虽然 Qt 更专注于桌面和嵌入式设备,但它的功能与 Flutter 类似。您可以使用 C++(一种鲜为人知的主要语言)创建 Qt 应用程序。由于 Qt 改进了平台集成,与本机平台和外部设备的通信稍微简单了一些。Qt 基于 C++,提供了比 Flutter 更好的库;它比其他语言更成熟,而且我们知道 C++ 比 Dart 和其他语言更快,使 Qt 在嵌入式开发方面比 Flutter 更具优势。Qt 的唯一缺点是它只是部分免费。
Flutter 嵌入式系统的未来
Flutter 最初仅适用于 Android 和 iOS。随后,Flutter 团队增加了对 macOS、Windows 和 Linux 等桌面操作系统的支持。甚至包括创建 Web 应用程序的能力。这表明他们将来会继续支持许多流。随着即将发布的 Flutter 4.0,谷歌将宣布其对 Flutter 平台多年的承诺。
可用于 Flutter 开发的目标平台数量与该技术的能力和生产力保持同步增长。在可预见的未来,Flutter 将成为开发应用程序时使用的技术,无论平台、您正在制作的应用程序或您打算瞄准的目标市场如何。
根据官方文档,他们不支持自定义引擎嵌入器,因为他们无法修复其网站上指出的缺陷。由于 flutter 团队的昂贵维护负担,引擎嵌入器的更新将比 flutter 和 dart 版本慢。
关键要点
这就是我们在 Flutter Embedded Systems 的宝库中所拥有的,以及它在未来所代表的未来。如果您也是一名产品负责人,并且对选择 Flutter for Embedded Systems 进行信息娱乐项目开发是否可行感到困惑。我们的专家开发人员随时可以帮助您完成开发之旅。此外,您还可以聘请 Flutter Developer来帮助您获得信心并根据您的需要和要求继续进行 Flutter 开发。