宝马 (BMW)

BMW

在宝马集团使用 Flutter 扩展以客户为中心的产品开发

目标

多年来,宝马(BMW)的移动应用团队主要专注于其车辆配套应用——BMW & MINI Connected 应用的 iOS 版本。然而,在 2018 年,他们意识到其 iOS 和 Android 产品在功能和设计上的差异已经变得过大。他们需要找到一种方法,确保无论使用何种移动操作系统或属于 BMW 与 MINI 哪个品牌,都能为所有消费者提供相同的功能,同时又不能显著增加成本或降低功能开发的迭代速度。除了整合 iOS 和 Android 的复杂性之外,宝马集团在产品端还必须应对更多的复杂挑战。由于不同国家和地区的法规与本地需求各异,宝马集团的移动应用在 45 个以上的国家和地区存在着多种多样的变体。

在解决这一问题时,团队设定了两个目标。从业务角度来看,他们希望能够根据客户反馈和业务目标,在所有品牌、平台和地区同时发布产品,并具备相同的功能。为此,他们希望创建一个对开发者友好、具备可扩展性且性能优异的平台,从而实现安全的实验和持续部署。

为什么选择 Flutter?

由于为 Android 组建与 iOS 规模相当的开发团队(从而导致成本和工作量翻倍)的做法不可行,他们对跨平台解决方案进行了评估。一个小规模工作组评估了包括 Flutter 在内的多个跨平台框架。起初,团队担心 Flutter 在宝马所需的业务规模上尚不够成熟,因此他们针对其他每个框架都设计了几个概念验证(PoC)。然而,当团队为了追求更好的用户体验而决定放弃基于 Web 的内容时,所有其他平台都显得力不从心。

他们的解决方案

2019 年 10 月,部分宝马工程师在慕尼黑会面,探讨如何推进 Flutter 的应用。他们很快意识到,不再受限于特定平台将使他们能够采用一种更灵活、基于领域的组织结构:一个团队可以专注于连接状态和通信抽象,少数团队负责应用的核心平台端,而更多的团队则可以自由地专注于为最终用户开发创新功能。Flutter 最终获得了批准,团队开始为不同的平台、国家和品牌重写所有的应用变体——但这一次,他们使用的是单一代码库。

“新的应用平台建立在三大支柱之上:易用性、安全性和可靠性。它基于反馈和客户的使用行为,提供了一套跨越所有品牌的、设计统一的功能。”

宝马集团离线平台副总裁 Nicolai Kraemer 博士

成果

项目启动不到一年,My BMW App 便于 2020 年 7 月正式上线,并已在五大洲的 47 个国家和地区确立了地位。它作为一个通用接口,为用户提供了手机、车辆与数字世界之间的无缝体验。My BMW App 不仅为驾驶员与车辆之间提供了直接的交互界面,还是与宝马经销商及宝马品牌沟通的渠道。

宝马集团的移动开发者们建立了一个内部称为“Mobile 2.0 平台”的平台,实现了针对每个品牌、市场和操作系统的自动化构建、自动化测试以及向移动端和后端环境的自动化部署。这意味着每天都会触发多次构建,并且每次应用构建都会自动生成、测试和部署 96 个变体。截至 2021 年 10 月,每个应用变体已经构建了超过 10,000 个版本。“一次构建,随处设计”的能力使团队能够更快地采取行动。但快速的周转并不是团队对转向 Flutter 感到兴奋的唯一原因。他们不再需要担心管理多个代码库,这有效地解决了功能不一致的问题。

现在,所有 BMW 和 MINI 客户都能享受到统一的体验,无论他们使用什么平台访问该应用——这也改善了用户反馈,特别是对于此前服务不足的 Android 应用而言。总而言之,通过转向 Flutter,团队能够更快速地响应、保持一致性并令用户感到满意。