as

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

Vega SDK发布说明

Vega SDK发布说明

请在此处为您的Vega SDK使用体验评分

Vega SDK版本0.22

我们很高兴为您推出0.22版本,该版本引入了用于AI辅助性能诊断的MCP服务器和提示库,以及针对媒体资源管理的平台改进。媒体播放和直播、用户界面渲染和性能已更新,修复了60个错误。此外,“项目Kepler”现已正式更名为Vega!

公告

Kepler现更名为Vega

在所有平台上,Kepler的代号已更改为Vega。v0.23中将停止对kepler别名的支持。

需要采取行动: 在升级到v0.23之前,更新所有脚本和工作流程以使用vega命令而不是kepler命令。

Vega SDK管理器

新的SDK管理器让更新和维护Vega SDK版本变得更加容易。因此,我们弃用了KEPLER_SDK_PATH路径,SDK管理器将帮助实现这种环境变量过渡。为了向后兼容,Vega SDK Manager在此版本中创建了一个kepler别名。

需要采取行动: 使用主安装目录的二进制路径中的vega调用所有SDK工具,而不是依赖环境变量。此版本中提供了向后支持,但将在v0.23中停止该支持。

新功能

使用SDK管理器更轻松地进行版本升级

Vega SDK Manager通过命令行管理项目的SDK版本,其功能类似于Node.js的nvm或Python的pyenv。现在,您可以管理多个SDK版本并进行项目特定配置,并与CI/CD管道集成。有关更多信息,请参阅Vega SDK管理器

简化性能和崩溃诊断

Vega特定上下文的MCP服务器

新的模型上下文协议 (MCP) 服务器通过精心策划的性能问题诊断提示,为您的AI编码助手带来了Vega上下文: 第一帧时间和完全绘制时间。有关更多信息,请参阅设置Vega DevTools MCP服务器

性能分析

开发者现在可以衡量微小关键绩效指标,将第一视频帧时间 (TTFVF) 分解为“按下播放到播放器启动”和“播放器启动到第一帧”,从而帮助开发者优化其媒体播放器实现。基于人工智能的性能诊断可帮助开发者通过自然语言提示发现和解决性能问题。有关更多信息,请参阅衡量应用KPI

一键崩溃调试

Vega Studio现在会自动显示汇总崩溃报告 (ACR) 摘要。该报告包含ACR文件中的符号化堆栈跟踪和关键调试信息。有关更多信息,请参阅使用Vega Studio调试应用崩溃

在Vega Studio中记录设备日志

更好的设备日志记录的优点包括通过设备文件视图访问日志、源代码级日志筛选和更简洁的日志格式。通过将Vega虚拟设备映射到trackDevices中的模拟器并将模拟器节点更新为点击时loading,改进了自动设备检测。

重新连接Chrome DevTools

Chrome DevTools现在会在重新启动后自动重新连接到Vega应用,无需手动干预或配置即可在3秒钟内实现无缝重新连接。Vega TV应用简化了调试,因此开发者可以在5-10分钟内进行配置和调试。

改进了内存泄漏检测

我们通过新步骤改进了Vega应用的内存泄漏检测文档,以防止调试期间应用无响应 (ANR) 崩溃,并触发垃圾回收以进行准确的内存分析。有关更多信息,请参阅检测内存泄漏

改进

启用了开发者模式检测

Vega虚拟设备现在默认启用开发者模式,从而简化了开发工作流程。

CLI和Vega Studio现在可以检测设备上的开发者模式何时处于非活动状态,从而提供清晰的错误消息和指导,而不是一般故障信息。开发者模式支持通过inputd-cli进行输入注入,无需Appium即可进行快速自动化测试,并且开发者模式还得到了包括警报对话框在内的用户界面改进。

使用微小KPI确保应用流畅

新的性能KPI进一步定义了流畅度的衡量方式,确保通过认证的应用能够准确反映用户所感知的响应灵敏和顺畅的流畅度。此更新包括播放场景的输入键延迟,可检测并修复启动/停止时行为缓慢等问题。Activity Monitor性能算法现在允许跟踪文件通过并行运行来避免超时,并在出现故障时显示带有清晰错误消息的进度指示器。

有关更多信息,请参阅开发者论坛(仅提供英文版): Vega应用性能系列

构建和CI/CD基础架构

用户界面自动化包括用于系统内测试的Appium和图像比较库。

媒体和音频

通过资源管理防止播放失败

媒体资源管理现在可以解决资源受限设备的内存问题。媒体服务器为生命周期管理提供视频会话信息,因此后台应用可以清理媒体资源。这样可以防止在需要安全视频解码器的应用之间切换时出现播放失败。

适用于Vega的React Native和第三方库

React Native核心组件支持

  • TextInput现在包括autoFocusmultilineselectiononChangeText等基本属性。
  • Text组件添加了aria-labelselectableadjustsFontSizeToFit
  • ScrollView添加了呼声很高的功能,例如maintainVisibleContentPosition、滚动指示器和contentOffset
  • 为了更好地控制渲染,Image组件添加了progressiveRenderingEnabledresizeMethod

React Native API和库

  • 经用户同意,应用可以请求访问相机和蓝牙等敏感功能。
  • ToastKepler API添加了原生toast通知。
  • Turbo模块现在取代了慢速URL填充,显著提高了URLURLSearchParams操作的性能。
  • 借助新的Vega System Info API,开发者可以运行有关系统正常运行时间、操作系统详细信息、构建信息和硬件特性的查询。有关更多信息,请参阅@amazon-devices/kepler-system-info

已解决的问题

媒体播放和直播

  • 修复了影响视频开始时间的问题: 设置了startTime后无法开始播放,并且Mp3直到完全下载后才会开始播放。
  • 修复了有关大文件渐进式音频播放的问题: 在流式播放后10秒左右播放器中的内容冻结。
  • 修复了暂停期间的字幕渲染问题: 暂停视频时,隐藏式字幕消失。
  • 修复了网络节流行为,以便在带宽限制期间正确同步音频和视频流: 当视频在网络节流期间停止时,音频不会停止,当解除节流时,视频会以快进方式播放。
  • 改进了广告过渡期间的HLS AES-128处理。
  • 改进了DASH DRM多周期清单解析: 隐藏式字幕无法在DASH DRM直播中显示,并且使用DASH DRM多时段的应用在释放时会崩溃。
  • 改进了字幕定时同步: 播放30秒后字幕时间会出现偏差。
  • 改进了加密HLS流的音频处理: 使用nativeParseFromString播放直播TV时,AES加密的HLS内容的音频质量交叉,并且应用会崩溃。

应用框架和性能

  • 修复了影响内容播放的Fetch API处理差异: 在流式播放后10秒左右播放器中的内容冻结。
  • 修复了使用React Navigation库时导航期间的焦点丢失的问题: 在应用导航期间失去焦点。
  • 修复了MaskView组件的动画渲染问题: 使用MaskView时未应用Reanimated动画。
  • 改进了数字键盘输入的TextInput显示: 数字键盘TextInput上显示了额外的点。
  • 通过优化React-Navigation/Drawer重新渲染行为提高了滚动性能: React-Navigation/Drawer会导致不必要的大量重新渲染。
  • 改进了Sentry符号映射支持,以更好地进行调试。
  • 放宽了开发模式下的ANR超时时间: 在调试构建中,启动画面立即关闭。

用户界面 (UI) 和渲染

  • 修复了Lottie动画清理问题以防止内存泄漏: 循环播放的Lottie动画在卸载后会留下垃圾。
  • 通过正确的垂直同步延迟管理来纠正合成器的处理,修复了影响广告播放的视频层合成问题: 主视频会闪现在webview中播放的视频之中,以及在模态中使用动画时出现的不透明度问题。
  • 修复了模拟器上的文本渲染问题,改进了Mac操作系统上的着色器代码执行: 文本可能会消失并在不同的渲染中重新出现。
  • 提升了使用Fast Image组件时的缩略图质量: 使用Fast Image时,缩略图的质量会降低。
  • 通过增加图像请求的流量可见性改进了Charles代理: 在Charles代理中看不到图像流量。

平台服务

  • 修复了在同一进程内快速启动、停止和重启组件时出现的竞争情况,以提高内容启动器的深层链接可靠性: 无法运行内容启动器DeepLink,以及不能反映内容启动器-登录状态。
  • 固定账户登录集成指南,包含更正的实现细节: 正确的账户登录集成指南。
  • 提升了Login with Amazon响应结构的一致性: 来自identity-lwa-lib的异常响应结构。
  • 阐明了有关模块ID区分大小写的清单验证要求,以防止构建失败: 由于服务模块,清单验证失败。

开发者工具

  • 修复了屏幕截图功能以提供正确的图像格式: 屏幕截图 - 格式不正确,黑屏。
  • 使用双因素身份验证和更新的文档指南,改善了开发者的设备注册流程: 使用2FA时,虚拟设备注册失败。
  • 阐明了应用启动命令和弃用通知,以改善开发者体验: 启动应用 - vlcmvmsgr以及错误: 命令失败:vda -s emulator-5554无法在设备模拟器上安装.vpkg

已知问题

  • MediaSource对象与VideoPlayer对象分离时不会触发sourceclose事件,从而导致播放器在等待事件时冻结。
    • 没有已知的解决方法。
  • 使用亚马逊参考从亚马逊端口dash.js上的Dash.js播放器中提取字幕时,不会显示字幕。分辨率包括dash.js播放器的更新。
    • 解决方法: ShakaPlayer端口使用vtt文件并且可以显示隐藏式字幕。
  • 在不等待响应的情况下执行多个“向前搜索”操作会导致死锁情况。当尽可能快地按下快进大约2-3分钟时,seekwithRate API的执行时间过长,并导致ANR。
    • 没有已知的解决方法。
  • 当同一视频重播时出现“Error: Cannot create URL for blob!" (错误:无法为blob创建URL!)。根本原因是目前无法使用react-native-url-polyfill,因为它不支持createObjectURL
    • 没有已知的解决方法。
  • 对于像多米尼加共和国这样的地区,由于数据量大,一天的API响应需要10-15秒。如果它在这段时间内持续加载,则是一种不佳的用户体验。
    • 没有已知的解决方法。
  • 显示带有显示文字“none”的SVG图像。RN72不支持。
    • 解决方法: 在不需要显示组件时将其移除。
  • ucc中看不到可设定焦点的特性。应该处于相同的层次结构中或以某种方式链接以供Appium选择器检索。
    • 没有已知的解决方法。
  • 载有100张图像的启动画面完成加载需要5-6秒。此问题需要解决包含大量图像文件的启动画面的性能下降问题。
    • 解决方法是使用8张以下的图像作为启动画面。
  • 当使用lazy() 创建了LazilyComponent时,它会包装TargetComponent,但是惰性组件本身没有这样的样式。根本原因是lazy() 函数创建了一个暂停的新组件,当它解析时,它无法正确保留原始组件的样式。问题在于LazilyComponentTargetComponent的延迟包装版本,但延迟包装器可能无法正确保留样式。虽然此项可以在Android上运行,但它需要使用适用于Vega的React Native来解决这个问题。
    • 解决方法:在延迟加载的组件中复制样式可以解决样式问题,但需要为每个延迟加载的组件复制样式。
  • 元数据事件旨在出现于给定ID3 Emsg的PTS上,这样ID3 Emsg事件可能会被忽略,只需要侦听元数据。但是,由于4.14.1之前的Shaka版本存在缺陷,这些漏洞的出现时间不正确(使用发现的元数据内段的开始时间,而不是元数据的实际PTS)。此外,在尝试手动向元数据TextTrack(从video.textTracks获取,其中kind = metadata)中添加元数据提示时,会间歇性地引发异常。
    • 解决方法: 不要使用ID3。这并不理想,有时会发送错误的信标。
  • 导航时,会再次读出先前聚焦的元素,然后读出新元素。根本原因: 当网页加载时若没有任何明确聚焦的元素,默认情况下,rootWebArea会获得焦点。在这种情况下,随后焦点转移到任何组件(例如按钮或输入字段)都会产生意想不到的双焦点状态 - rootWebArea和新聚焦的组件同时保持聚焦。此错误还将影响VoiceView体验。如果rootWebArea元素没有散焦,即使焦点位于按钮上,VoiceView也会说出网页的全部内容。
    • 解决方法: 不要为了读取章节标题而对节点使用临时增强。
  • mediaElement.autoplay设置为true时,播放不会自动开始。
    • 解决方法: 如果mediaElement.autoplaytrue,则调用mediaElement.play() 开始播放。
  • 视频播放3秒后,最终用户可能会看到一个无休止的红色旋转器。低级别的Webplay (MSE/EME) 出现错误“管道错误解码”并停止播放。 仅当首先为SDR配置了同一个解码器,然后在播放期间收到重新配置HDR的请求时,才会出现问题。
    • 解决方法: 运行时不要从SDR-> HDR更改配置文件。
  • 对于播放中视频,管道正在缓冲音频和视频,而对于非播放中视频,由于视频的元数据存在问题,管道会缓冲视频但不缓冲音频,mp4播放不适用于某些内容。对于非播放中视频,音频队列永远不会达到100%,而视频队列可以。
    • 解决方法: 更正非播放中视频的元数据并将开始时间设置为0。
  • 使用Shaka播放器时,某些HLS流上Shaka的variantTrack中缺少originalVideoId。它已作为外部Shaka 4.13.2版本的一部分进行了更新,而Shaka播放器的Vega分支运行的是4.8.5。
    • 解决方法: 建议应用在更新发布之前保留本地补丁。
  • 在音轨之间切换时,应用在过渡期间观察到视频暂停/卡顿。似乎Vega并未正确处理MediaSource缓冲区的刷新操作。
    • 没有已知的解决方法。
  • 当通过onEndReached添加新数据时,带有numColumns的FlatList会重新计算整个网格布局,从而导致组件卸载和重新安装,进而导致焦点丢失。
    • 解决方法: 为了解决这个问题,使用两个嵌套的FlatList来实现一个解决方案,作为numColumns方法的替代方案。在这种架构中,外部的FlatList负责管理垂直滚动和分页,而内部FlatList则负责管理水平行布局。追加新数据时,现有行保持相同的引用,允许保留现有的行组件并将焦点保留在当前聚焦的行中。
  • 将Headless JS播放与Shaka播放器结合使用时,日志可能会显示错误,必填的查询映射未填充! 根本原因:兼容性检查似乎在无头服务中不起作用和/或它们没有正确创建映射。
    • 解决方法: 出现错误后播放确实可以正常运行。
  • 当应用使用单独的导航屏幕(每个导航屏幕都包含自己的模态)时,焦点不会恢复到带有“透明模态”的上一个屏幕。根本原因分析表明,navigation.goBack() 可以正确地从ExitScreen导航回LeftNavScreen,但是焦点正在恢复到底层的LeftNavScreen组件,而不是本应位于前台的透明模态窗口。
    • 解决方法: 在分离非活动屏幕错误时使用原生堆栈导航器。
  • 过渡到新屏幕后快速导航时,屏幕上的多个按钮显示聚焦状态。JS代码可以正确模糊和聚焦正确的组件,样式更新设置正确,但是用于重绘组件的原生PMI突变永远不会发生。
    • 解决方法: 注释掉它们的enableFreeze() 调用时,该错误不再出现。
  • getLocales() 按字母顺序返回区域设置,而不是按用户首选项顺序返回。
    • 解决方法: 您可以尝试使用JavaScript的Intl API来检测和更正区域设置顺序。

Last updated: 2026年1月6日