适用于Vega的React Native应用架构
本文档概述了适用于Vega的React Native (RNV) 架构,并可在为Vega构建应用时作为设计选择和限制的参考。有关React Native框架的更多详细信息,请参阅React Native架构文档(仅提供英文版)。
适用于Vega的React Native (RN) 是用于Vega设备的React Native框架的树外分支,为开发React Native应用提供熟悉的功能。适用于Vega的React Native包括对React Native核心组件和API的支持,以及开发者最常使用的一组社区支持的库。此外,对于特定于电视的功能(例如焦点管理),适用于Vega的React Native整合了大多数React Native tvOS功能。
架构原则
对等
适用于Vega的React Native采用React Native生态系统的跨平台原则,旨在提供与RN API和流行库对等的功能。RNV支持超过80%的RN核心组件和API。此外,RNV还移植了40多个在RN生态系统中流行的RN库。这种支持允许用户在Vega OS和其他操作系统平台上重复使用代码。RNV还包括RN tvOS中的API,用于支持特定于电视设备的焦点管理和事件处理功能。此外,在合理的情况下,RNV包括特定RN平台独有的特定API,例如BackHandler (Android)、SafeAreaView (iOS)。
此外,Vega SDK支持常用RN工具以及其他开发和测试实用工具,以加快应用开发,同时支持高性能运行时。React Dev Tools、Chrome Dev Tool、Flashlight等都可以与RNV一起使用。您可以将现有工作流程与这些工具结合,进行跨平台工作。
性能
适用于Vega的React Native是亚马逊从头开始设计而成的,旨在优化亚马逊设备上的性能。您的应用应符合Vega的性能KPI要求。
亚马逊使用React Native的新架构构建了RNV,并受益于RN核心框架的所有改进。新架构包括对以下内容的支持:
- 同步布局和事件
- 并行渲染
- 通过JSI实现快速JavaScript和原生互操作,包括对Turbo模块的支持。
Vega系统映像捆绑了RNV的RN框架和运行时,而不是将其捆绑在应用程序包中。Vega生命周期管理器利用系统捆绑库来预热分配给应用的冷启动进程。这缩短了第一帧的时间和应用的总体加载时间。此外,Vega将RN运行时保存在共享内存空间中,这样可以减少运行多个应用时的系统内存占用。
RNV还支持应用可以处理的资源压力事件,以有效管理其应用中的资源利用率。开发者可以确保其应用在不影响系统性能的情况下继续运行,并为用户提供不间断的流畅体验。
Vega的图像系统使用智能缓存来提高性能。它跟踪哪些用户界面组件可见且处于活动状态,然后优化RAM和磁盘上的内存使用情况。这有助于快速加载和显示图像。该系统还直接在显卡内存中管理图像,以减少处理负载。RNV应用自动受益于这些性能功能。
多配置文件和多模态
适用于Vega的React Native支持多种亚马逊设备,包括电视和智能音箱。它使用灵活的布局来适应不同的屏幕尺寸上的内容。平台API可帮助应用在运行时适应不同的设备类型。在应用构建过程中,您还可以使用Vega的构建工具为特定设备自定义功能。
您的用户可以通过不同的方式控制亚马逊设备:通过语音、触摸或遥控器。适用于Vega的React Native (RNV) 自动支持所有这些控制方法。它的组件可与触摸屏和遥控器方向键配合使用。该框架还包括Alexa语音控制,允许用户使用语音命令浏览应用和控制媒体。特别是对于电视应用,RNV提供了特殊工具来处理遥控器导航和焦点管理。
基于标准构建
RNV使用熟悉的网页标准来构建应用功能。虽然它的目标是与React Native的常用API相匹配,但它还采用了W3C的核心功能标准。例如,RNV使用W3C标准进行媒体播放,因此可以轻松使用许多现有的JavaScript媒体播放器。在即将发布的版本中,RNV将增加对WebCrypto和WebWorkers的支持,同样基于网页标准。通过使用这些广泛采用的标准,RNV可以轻松地在Vega应用中使用许多最初为网页浏览器创建的JavaScript库。
实现
亚马逊将适用于Vega的React Native构建为React Native框架的树外实现,用于支持运行Vega OS的设备。RNV移植了React Native软件堆栈,包括React Common、Yoga和适用于Vega OS的Hermes,以便在Vega的原生用户界面框架上运行。RNV使用React Native的新架构,仅支持JSI进行JavaScript到Native的接合。RNV还支持新的结构渲染器,用于同步布局和效果改进以及并行渲染。此外,RNV支持为Vega平台通过Turbo Native模块和Fabric Native组件进行原生集成。
内置于操作系统中,动态地链接
RNV通过将整个React Native运行时捆绑到Vega OS中(该操作系统在运行时与应用动态链接),从而提供独特的架构选择。或者,现有的Vega平台将运行时与应用二进制文件静态链接,并与应用代码捆绑在一起。
这种固定的应用架构选择优化了运行Vega OS的设备的磁盘存储、启动和应用切换时间以及内存使用情况。移除React Native运行时会将应用程序包的大小减少超过10MB。从操作系统加载运行时还让Vega平台能够使用它预热进程池,从而为React Native应用带来更短的启动时间。
RNV还允许您通过拆分捆绑将主要的JavaScript代码与React和React Native库分开。拆分捆绑将应用的大小减少了1-2兆字节,并确保它在设备的操作系统上正常运行。当应用启动时,它会加载这些单独的React和React Native组件以及应用自身的代码。这种方法类似于标准React Native运行时的工作方式。
API和ABI稳定性
在Vega操作系统中加入React Native会带来一些挑战。当React Native发布带有重大更改的新版本时,应用可能会停止正常运行。此外,每个新版本都需要重新编译JavaScript代码,因为Hermes(JavaScript引擎)会更改其处理代码的方式。其他使用React Native的平台通过将React Native运行时打包到每个应用中来避免这些问题,确保应用始终使用其构建时使用的版本。
当前的Vega操作系统使用React Native版本0.72,并计划很快更新到更新的版本。您需要检查哪些React Native版本在Vega设备上可用,并相应地设置您的应用。这有助于确保应用在当前和未来的Vega设备上都能正常运行,同时保持与旧版本兼容。
RNV提供两种主要的解决方案来处理兼容性问题:
-
双Bundle包装: RNV在每个应用中都包含已编译的和原始的JavaScript代码。这意味着,如果设备使用新版本的JavaScript引擎 (Hermes) 进行更新,则亚马逊应用商店可以在安装过程中自动重新编译该应用的代码。
-
版本控制系统: 您可以指定应用依赖项的最低要求版本和首选版本。这有助于亚马逊应用商店确定哪些设备可以运行该应用。RNV还提供了一种名为
isPresentOnOS的工具,用于检查设备上是否有特定的依赖项版本可用。
这些功能有助于确保应用在不同的Vega设备版本上继续运行。
RNV团队正在与Meta (Facebook) 合作,让React Native更加稳定。Meta最近发布了其第一个稳定的适用于React Native的JavaScript API,并计划稳定所有平台上的其他功能。很快,Meta将努力使Hermes JavaScript引擎向后兼容。完成后,RNV应用将在所有版本的Vega操作系统上正常运行。
版本控制和升级
Vega计划每年发布一次新版本的RNV。该系统将同时支持三个版本,为期三年。这使您可以在准备就绪时更新应用,同时保持应用在不同的设备版本上正常运行。您可以在设置中指定应用需要哪个RNV版本。
为了节省设备存储空间和内存,将仅预加载两个最新版本。我们正在创建工具,以帮助您在版本之间更轻松地升级应用。我们还在寻找解决方案,以帮助无法在三年内更新应用的开发者。
Last updated: 2025年10月21日

