as

Settings
Sign out
Notifications
Alexa
亚马逊应用商店
AWS
文档
Support
Contact Us
My Cases
新手入门
设计和开发
应用发布
参考
支持

适用于Vega的React Native应用架构

适用于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日