Meta分享:MobileConfig如何快速创新Quest、Ray-Ban眼镜
用MobileConfig解锁混合现实设备的潜能
(映维网Nweon 2024年06月17日)MobileConfig允许开发者在Meta的数据中心管理移动应用的配置参数。一旦中央服务器的参数值发生变化,数十亿应用设备将自动获取并应用新值,无需更新应用程序。远程管理的配置参数可用于各种用途,如A/B测试、功能推出和应用个性化。MobileConfig自2015年以来就一直服务于世界使用最广泛的应用程序,包括Facebook、Instagram和Messenger。
在下面这篇博文中,Meta描述了MobileConfig如何在Meta Quest和Ray Ban Meta智能眼镜实现快速创新:
混合现实中的配置挑战
可靠的配置和实验对于一致性、开发速度、安全性和整体可靠性至关重要。
随着MR生态系统的发展,Meta推出了更多的应用程序。它们通常需要共享配置值,但由于缺乏常见的配置使用模式,所以存在一定的Anti-Patterns反模式,即工程师重新发明轮子或构建针对每个应用程序的特定获取配置的方法。我们同时看到了应用和服务在启动过程中需要尽早检索值的使用模式,而这使得相关问题更加复杂。所述挑战增加了MR配置和实验的挑战性。
MobileConfig
在MobileConfig中,配置定义为具有特定数据类型的一组参数,可以控制应用行为的不同方面。开发者决定在创建参数时使用的数据类型(Boolean、int、double、string)。MobileConfig提供了一个跨平台客户端库和API,允许开发者轻松读取诸多不同应用和服务中的每个配置参数。它同时提供了一套完整的后端工具,允许开发者根据客户端上下文(如区域或设备类型)精确控制给定参数接收的值。
MobileConfig有数个用例,包括feature flag、A/B测试和发布管理。开发者可以使用MobileConfig通过将新feature放在配置参数后面,将其与应用发布分开以控制新feature的发布。配置参数可以绑定到A/B测试,并为特定用户启用,同时监视性能或参与度等关键应用指标。
或者,参数可以用作feature flag,允许开发者在开发过程中控制谁可以访问相关功能。一旦功能支持MobileConfig,开发者就可以在不接触客户端代码的情况下进行所有更改。
将MobileConfig扩展为MR中的一个平台
鉴于其在移动应用开发方面的经验,很明显,Meta的设备需要一个配置系统来快速行动、实现实验和远程控制系统的各个方面。这家公司认为,MobileConfig将是满足平台需求的最佳解决方案,因为它的可靠性和性能已经经过验证,并拥有用于故障排除和调试的现有工具套件,以及安全发布更改的能力。
Meta通过一个Android服务(MobileConfigService)集中了所有配置请求,从而产生了不需要获取配置、报告遥测或知晓后端协议的轻量级客户端。他们同时集中了服务身份验证,使设备上的应用程序能够在有或没有用户信息的情况下利用基于会话的配置。在这里,凭借设备级的一致性,服务能够同时在多个应用和服务中进行实验,简化了新应用的onboarding流程,并允许它们通过IPC与领先的服务进行通信而无需提供额外的身份验证或build-tooling。
另外,Meta在Windows等平台的MobileConfig之上构建了库,以允许在MobileConfigneneneba API无法按原样构建的情况下获取配置。总的来说,团队避免了重新发明轮子,并在MR端获得了一致的用户体验。
将MobileConfig扩展到Meta的设备家族
MobileConfig服务的再利用能够帮助优化开发流程,并改进其他低功耗设备的功能。Meta从未打算在微控制器上使用MobileConfig库。然而,团队将它们重新调整为轻型客户端,并删除了依赖项以降低总体内存占用。另外,优化了开发者的创作流程,开发者无需standard buck integration就可以瞄准设备。这可以让Meta的低功耗设备通过蓝牙和Wi-Fi进行通信和消费配置。
诸如Ray-Ban Meta智能眼镜这样的设备具有用于控制产品各个方面的多个微控制器架构,包括电源和摄像头等。在这种情况下,Meta使用了多种技术和协议,如IPC和SPI,以将配置值同步到各个组件。在特定硬件由于语言限制而无法运行核心MobileConfig库的情况下,依然可以重用高效的缓存设计和数据结构来提供配置值。团队从开发者的经验中提取了相关细节,从而实现了统一的配置工作流程。
现在的设备,特别是低功耗设备,并不总是接到互联网,它们依然需要独立于设备版本运行实验和推出功能。Meta的设计选择帮助创建了一个无缝的配套应用体验,使用了与其他应用系列相同的移动配置库,令低功耗设备能够实现相同的功能套件。这种灵活性大大加快了开发过程,使得能够更快、更高效地向客户提供尖端技术。
利用有限的连接和稀缺的资源实现未来的设备
在MR设备方面取得成功后,团队整合了将MobileConfig作为一个集中平台的努力,目标是确保下一代设备具有相同的一套功能。新一代的设备具有不同的挑战,所以MobileConfig需要具有高性能并进行优化。
Meta已经优化了相关的服务,使其仅在特定条件下运行(例如充电或使用Wi-Fi)。即便配置与服务器同步,libs都能确保电池不会耗尽。为减少内存和CPU的使用,团队同时创建了自定义的IPC API。这可以在新安装的应用程序上启用动态配置集,以从集中式MobileConfig服务获取配置值。
在这样一个受约束的环境中,团队成功地在操作系统级别实现了定制AOSP Java和Native API的实验,同时保持了与使用Meta工具的其他应用相同的用户体验。他们同时开发了一种定制工具来支持开发者在有限的屏幕空间内快速高效地使用配置,从而进一步释放开发人员的效率。未来一代设备的进步使得团队能够提供一流的服务,令其有别于竞争对手,并提供显著的商业价值。
展望未来
Meta的基础设施正在赋能新一代设备,帮助开发者快速行动。随着团队构建更多的设备和应用,他们将继续把MobileConfig作为一个集中式平台。