将第三方库移植到Vega
欢迎使用适用于Vega的React Native开发! 本指南将帮助您浏览基本资源和最佳实践,了解如何针对React Native和Vega构建高性能应用而开发库和服务。下面我们深入探讨针对Vega构建库的最关键方面。
通过使您的库和服务与Vega兼容,您可以确保它们与平台无缝集成,并可供不断增长的Vega应用开发者社区使用。这让您可以扩大自己的库和服务在亚马逊设备上的覆盖范围和采用率。本文概述了将库移植到Vega时应考虑的事项。
支持的第三方库和服务
要了解有关当前Vega支持的库的更多信息,请参阅Vega支持的库和服务。
记得定期查看Vega官方文档和我们的开发者论坛,了解最新的更新和最佳实践。如果您需要支持并有疑问,请在问答部分提交您的问题。要请求提供任何缺失的功能,请使用功能请求部分。
开始使用
作为适用于Vega的React Native库开发者,首先要熟悉Vega平台和开发环境。
审核Vega开发者文档
- 访问开始使用Vega页面,了解Vega SDK和开发工具概述。
- 阅读适用于Vega的React Native,了解其概述。
- 浏览适用于Vega开发的React Native架构页面,了解为Vega构建应用时的设计选项和限制。
- 请继续访问Vega SDK发布说明,了解SDK和产品的更新版本。
- 访问疑难解答页面,以解决任何问题。
安装Vega SDK并设置开发环境
- 按照安装Vega SDK和开发者工具指南中的步骤下载最新的Vega SDK并设置开发工具,包括Vega Studio VS Code扩展。
将您的库移植到Vega
从您的库的package.json开始,它是您所有依赖项的可靠来源。除了支持Javascript/Typescript和React Native之外,亚马逊还移植了许多React Native第三方库和支持服务。您的库很可能属于库架构部分中提到的库架构之一。
特定于平台的依赖项
作为一个树外平台,Vega并不隐式地与原生iOS和Android库兼容。必须为Vega重写特定于平台的实现。Vega确实支持标准C/C++库以及其他OSS库,只要它们唯一的依赖项是标准C/C++库即可。参见Turbo模块,了解如何创建和构建Turbo模块,为适用于Vega的React Native应用构建React Native绑定。
如果您的库需要特定于Vega的原生API,我们建议您使用Vega提供的JavaScript API。这些API是使用您目前无法使用的原生API实现的。例如,如果您利用Android的AdvertisingIdClient.getAdvertisingIdInfo() 来获取广告ID,那么在Vega上您将需要使用AdIdRetriever.fetchAdvertisingId()。
如果您需要访问原生API,请在Vega开发者论坛上提出请求。
此外,我们还移植了许多热门的React Native社区库,这些库抽象了常见的用例(例如设备元数据、存储),有助于提升您的开发速度。
库架构
以下是基于各种库所拥有的依赖项类型的库类别。您的库主要属于下文讨论的架构之一。下面来看看不同类型库架构的一些示例
使用JavaScript/Typescript库
如果您的库纯粹依赖于JS/TS标准API,并且不直接或传递地使用React Native或平台API,那么它应该在适用于Vega的React Native上开箱即用,因为它们不需要原生链接。请参阅已经测试过的库列表,了解与Vega的兼容性。
适用于Vega的React Native利用Hermes JavaScript引擎,在构建过程中将JavaScript代码(包括库)预编译成字节码。大多数没有底层特定于平台依赖项的纯JavaScript/TypeScript库可以直接与Hermes一起使用,但是某些Hermes功能可能不受支持,您应该测试自己的库的兼容性。适用于Vega的React Native不是基于浏览器的环境,如果您的库使用文档对象模型 (DOM) / Web API(例如文档),您将需要为Vega寻找替代方案或对它们进行polyfill。
- lodash - 这是一个纯粹的JavaScript实用工具库,没有任何特定于平台的依赖项。这个库在适用于Vega的React Native上开箱即用。
- react-native-uuid - 这是针对UUID的纯TypeScript实现,没有任何特定于平台的依赖项。这个库在适用于Vega的React Native上开箱即用。
利用其他React Native库
如果您的库依赖于其他React Native库,请访问支持的第三方库页面,查看亚马逊移植的所有可用适用于Vega的React Native库和Expo库。这些库都在“@amazon-devices”命名空间下。了解如何导入亚马逊移植的库非常重要。我们建议使用Vega模块解析器预设 (VMRP) 而不是标准的NPM别名,将第三方库替换为其Vega平台移植的等效库。使用此预设,即可开始将Vega用于已在iOS或Android上运行的应用。有关更多详细信息,请参阅相应页面。
另请参阅Vega开发者论坛中列出的支持的第三方服务。如果您的库依赖于核心React Native组件和API(例如Platform),请确保适用于Vega的React Native支持它们。
以下是一些依赖于其他React Native库的示例。
- launchdarkly/react-native-client-sdk - 这是一个纯粹的TypeScript React Native库,为React Native应用提供功能Launch Darkly的功能标记管理。该库在适用于Vega的React Native上开箱即用,在react-native-async-storage上有依赖项。
使用特定于平台的API
如果您的库依赖原生代码、OSS库或平台原生API,请参阅特定于平台的依赖项,了解如何使用特定于平台的API为原生依赖项编写和构建Turbo模块。
- react-native-device-info - 这是一个React Native库,为React Native应用提供设备信息。该库具有适用于每个平台(例如iOS、Android)的原生代码实现。对于适用于Vega的React Native应用,该库由亚马逊移植,具有Vega的原生实现,使用等效于Vega的API来检索设备信息(例如设备型号、版本和制造商)。
- sentry/react-native - 这是一个React Native库,为React Native应用提供Sentry的崩溃报告和错误监控。这个库充当React Native和Sentry的原生iOS和Android SDK之间的包装器/桥。该库不可立即用于适用于Vega的React Native应用,必须在sentry-native的帮助下使用特定于Vega的实现进行移植。
- react-native-fast-image - 这是一个React Native库,用于在React Native应用中加载和缓存图像。这个库是原生SDWebImage (iOS)(仅提供英文版)和Glide (Android) 库(仅提供英文版)的包装器。该库不可立即用于适用于Vega的React Native应用,必须由亚马逊使用Vega等效API通过Vega的原生实现来移植。
用户界面组件库
如果您的库通过扩展现有的React Native核心组件(例如View或Text)来提供自定义用户界面组件。Vega提供了更多的用户界面组件,这些组件可以在您的库中供使用。此外,您的库可能依赖图标集或主题的补充库。有关图标的信息,请参阅亚马逊移植的react-native-vector-icons和react-native-svg。如果您需要直接使用平台原生用户界面组件,请参阅特定于平台的依赖项。
- shopify-flash-list - 此库提供一个高速度、高性能的列表组件。它和React Native提供的FlashList类似。它使用React Native View组件。
Javascript播放器
如果您的库是媒体播放器或提供媒体分析,请参阅W3C媒体API。Vega提供react-native-w3cmedia作为React Native组件,用于播放基于文件和基于URL的媒体。阅读该部分,了解所有支持的播放和流媒体内容。您的库可以使用此API来实现自己的播放器,或使用API作为媒体播放事件的挂钩来收集媒体分析。借助此API可支持以下播放器。以下是利用API实现播放器的几个示例。
- Shaka播放器
- Dash.js
- Hls.js
- Bitmovin
- Brightcove
- THEOplayer
- Akta提供的Lura播放器
测试您的库
请务必对Vega库的移植情况进行全面测试,并使用最新的Vega SDK版本进行测试,以确保其与Vega保持兼容。设置Vega SDK后,您可以将自己的库集成到我们的一个示例应用中,以便在Vega上进行测试。验证功能和非功能测试案例。编写单元测试、组件测试、快照测试和端到端测试。
范围
以下是测试中需要涵盖的一些领域:
- 核心功能 - 验证API功能、性能(例如CPU和内存使用情况、用户界面流畅度)、错误处理和设备兼容性(模拟器和硬件)。
- Vega SDK兼容性 - 与最新版本Vega SDK的兼容性。确保在旧版本Vega SDK上运行的应用开发者工具有向后兼容性。
- React Native版本兼容性 - 与React Native 0.72的兼容性。有关支持的API,请参阅适用于Vega的React Native参考。
- 设置和安装 - 确认您的库的程序包安装和设置说明。如果您利用Turbo模块,则需要确保构建配置和自动链接按预期运行。
- 第三方库冲突 - 如果您的库依赖于在适用于Vega的React Native移植库下列出的任何库,请使用Vega模块解析器预设来避免兼容性问题。
报告问题 - 您可以在问答部分提交问题。对于疑似错误,请使用错误报告部分。
示例应用
您可以将您的库与我们的示例应用之一集成以进行测试。在测试库时,请务必考虑Vega虚拟设备和硬件之间的区别。如果您想熟悉如何从头开始创建用于测试库的Vega应用,请参考利用Vega开发。
如果您想访问设备场以在Vega设备上测试您的库,请在Vega开发者论坛上提交申请。
Appium
Vega SDK支持Appium,这是一款适用于原生、移动和混合应用的第三方测试自动化框架。借助Appium,您可以在不同的测试级别执行用户界面 (UI) 测试自动化,其中包括集成测试、端到端测试和功能测试。有关更多详细信息,请参阅适用于Vega的Appium集成。
开发者工具
React开发工具可帮助您在Vega测试应用中调试和分析React组件渲染。这对于调试组件库很有用。
CI/CD
自动化构建和部署流程对于保持一致、高质量的软件版本至关重要。对于使用Vega SDK的团队来说,将其集成到持续集成 (CI) 管道中可以大幅简化您的开发工作流程。请参阅Vega开发者论坛中的将Vega SDK集成到持续集成管道中以简化开发。
调试
访问调试您的应用和应用性能中心部分,了解可用于调试崩溃和性能问题的工具。尽管这些部分是为应用量身定制的,但这些部分可用于使用与您的库集成的测试应用调试库。最重要的是,您可以使用Vega Studio来逐行调试和分析崩溃报告。您还可以使用Charles代理在Vega应用中检查网络流量。React开发工具可帮助您在Vega测试应用中调试和分析React组件渲染。
分发您的库
一旦您的库得到实现并与Vega兼容,那么您应该能够将您的更改发布到现有的面向公众的分发机制中。例如,要将您的程序包发布到npm注册表,请参阅npm的创建和发布程序包页面以获取指导。
我们建议您更新库docs/Readme,使其包括SOP(标准操作程序),供库维护者/贡献者以及应用开发者了解如何使用该库。
通知应用开发者
如果您已移植库以增加对Vega的支持,请在此处提交详细信息,以便将您的库添加到Vega支持的库和服务以及支持的第三方库和服务页面。您也可以发布一篇知识库文章来展示您的库以及如何开始使用。
常见问题解答
- 如何为React Native创建库? 有关为React Native应用构建库的指南,请参阅React Native的创建库页面。您可以为您的Vega专属代码创建一个
kepler文件夹。 - Vega支持哪个版本的React Native? 适用于Vega的React Native目前支持React Native 0.72。
- Vega支持React Native的新架构吗? Vega支持新架构,其中包括结构和Turbo模块。
- 如何查找设备元数据? Vega提供平台API、标识符API和react-native-device-info的端口,供开发者查找设备元数据。
- 如何申请Vega的新功能/API? 要请求提供任何缺失的功能,请使用功能请求部分。您也可以在问答部分提交问题,以获得亚马逊工程师的指导。
- 如何报告Vega的可疑错误? 对于疑似错误,请使用错误报告部分。
- Vega支持WebCrypto API吗? 我们已经部分实现了WebCrypto API,可通过Vega Crypto库获得。
- Vega是否提供捕获应用生命周期事件的方法? React Native的AppState API可以在应用的状态发生变化时通知您。
- Vega是否提供捕获视频分析的方法? 我们已经在React Native组件中为应用开发者实现了W3C媒体API,您可以使用这个API作为媒体播放事件的挂钩。
- 如何确保您的库一直与Vega兼容? 我们发布了新的Vega SDK版本,其中包含新功能、修复和改进。我们建议针对每个版本测试您的库,以确保它与Vega保持兼容。
- 亚马逊移植的库有范围吗? 有。亚马逊移植的所有库都在
“@amazon-devices”命名空间下。有关如何将默认名称替换为Vega平台移植的等效项,请参阅Vega模块解析器预设。
Last updated: 2025年10月1日

