Fuchsia F31 版本说明

日期:2026 年 7 月 22 日

版本:F31

音频

针对音频进行了以下更新:

  • PacketStream API 和设备注册表支持 在音频设备注册表和虚拟音频驱动程序中引入了 fuchsia.audio.device.PacketStream API,以处理比特率范围。
  • 移除了已废弃的 ActivityReporter API 从音频服务中移除了已废弃的 ActivityReporter FIDL 方法和数据结构,为移除 fuchsia.media/AudioRenderUsage 枚举做准备。
  • 音频驱动程序检查指标增强:通过跟踪缓冲区事件和计算未完成的缓冲区数量来增强驱动程序诊断,同时通过省略非必要字段来优化输出。
  • audio-driver-ctl 实用程序改进 升级了 audio-driver-ctl 工具,以支持 64 位 devfs 条目,并在未明确指定音频设备的情况下自动选择第一个可用的音频设备。
  • 唯一 ID FIDL 定义:根据 Zircon 音频头文件添加了 unique_id.fidl 结构,并将 BUILTIN_SPEAKERS 属性重命名为 BUILTIN_SPEAKER,以确保正确性。
  • FDomain 库添加:引入了 Rust 音频库和 ffx_optional_moniker 逻辑的 FDomain 版本。

蓝牙

针对蓝牙进行了以下更新:

构建

针对 build 进行了以下更新:

  • 针对 FIDL 和 IDK 的 Bazel 迁移:将大量 FIDL 库迁移到 Bazel,并扩展了 IDK Bazel 规则以支持静态库和多架构预构建。此外,还通过舍弃 _tool 后缀简化了宿主工具目标名称。
  • Bazel 主机测试规则 引入了用于定义 Bazel 主机测试的新规则(host_testhost_go_testhost_rust_testhost_py_test)。这些封装容器可确保与 fx test 等 Fuchsia 测试运行程序的兼容性,从而简化将现有测试迁移到 Bazel 图的过程。
  • 编译器和链接器设置更新:默认情况下为 Clang 构建的 ELF 目标启用了调用图部分,并为 LTO 下的 Rust 和共享库强制执行了 TLSDESC。驱动程序现在会动态链接到 libc++,从而显著减小二进制文件的大小。
  • 问题排查和错误报告功能增强:通过解析 fint 中的 Ninja 错误日志,简化了 CI 失败消息;默认情况下,将 fxtdump 捆绑在一起以供检查轨迹文件。此外,还添加了一个实验性 buildminder TUI 工具,用于以交互方式监控 build 事件。

组件框架

针对组件框架进行了以下更新:

  • SDK 中提供的 Realm Builder 子软件包分片。现在,realm_builder_subpackage.shard.cml 分片已导出,开发者可以在其配置中使用 realm builder 子软件包。
  • 为子软件包提供启动解析器支持。启动解析器现在支持解析子软件包,从而允许具有 fuchsia-boot 方案的组件利用子软件包子项。
  • Scudo 环境变量的系统级配置。组件管理器现在支持 scudo_options 字段来注入运行时设置,从而让开发者可以更精细地控制各个设备的内存分配器行为。
  • 平台和 SDK 现在都使用编号句柄来路由日志接收器。在大多数情况下,日志接收器现在通过 PA_LOG_SINK 句柄(而非命名空间)进行路由,这应能缩短组件启动延迟时间。
  • 组件开发者工具和 CLI 增强功能。route 命令已添加到设备端 component 二进制文件中,ffx component show 现在会列出用于构建组件的源文件,ffx component storage delete, 中修复了删除子目录中项的 bug,并重构了 ffx component doctor 以显示字典的内容。
  • Rust 中的结构化配置序列化。fuchsia-component Rust crate 现在支持序列化结构化配置,以改进驱动程序组件测试。
  • 会话框架 API 迁移和调试更新。会话组件已软迁移到 ShutdownWatcherRegister,并添加了一个新的调试快捷方式,可通过连续按 5 次侧边按钮来触发崩溃报告并重新启动。

诊断

针对“诊断”功能进行了以下更新:

显示

针对展示广告进行了以下更新:

驱动程序框架

针对驱动程序框架进行了以下更新:

FIDL

针对 FIDL 进行了以下更新:

反馈

我们针对反馈功能进行了以下更新:

  • 提高了报告上传可靠性和快照管理功能。对于较慢的连接,上传超时时间已增加到 3 分钟,并且反馈现在仅保留最旧和最新的每小时快照,同时自动清理无效条目,从而优化存储空间。
  • 添加了新的重启和关机原因分类。反馈现在会跟踪 SUSPENSION_FAILUREBATTERY_DRAINED 事件,并系统地记录关机操作,以在冷启动时保留安全关停和恢复出厂设置 (FDR) 状态。
  • 增强了运行时和正常运行时间持久性,以提高可靠性。系统正常运行时间现在会在关机期间定期持久保存并以原子方式保存,从而在内核的重启日志丢失时提供可靠的后备方案,并防止在突然断电期间发生数据损坏。
  • 改进了组件的重启能力。在主进程崩溃时重新开始反馈,并将重新启动日志信息持久保存到 /tmp,以便在首次启动后轻松提取。
  • 扩大了配置覆盖范围,并添加了诊断注释。反馈引入了 build.compilation_mode 注释以实现更清晰的诊断,将 remote_device_id_provider 迁移到结构化配置,为外部检查器提供渠道更新,并保留最小的启动 ID 时间轴以排查短启动问题。

固件

固件进行了以下更新:

  • 系统映像哈希保护 隔离的 pkg-cache 现在使用 system.base_merkle 来保护主要产品 blob 免受垃圾回收的干扰,以实现系统映像哈希保护。
  • Gigaboot Fastboot TCP6 改进 gigaboot fastboot TCP6 服务器现在会根据 MAC 地址动态选择有效网卡,以提高网络可靠性。
  • 恢复参数解析修复恢复参数解析现在会忽略空值和初始“恢复”字符串,以防止出现错误的未知实参错误。
  • GBL 预建版本和 NUC 更新 更新了 GBL 预建版本,并使 NUC 目标与新 API 保持一致,以成功恢复 fastboot 功能。
  • Android 恢复功能对齐:添加了 --prompt_and_wipe_data 恢复实参,以显示包含重试和恢复出厂设置选项的启动失败菜单。

图形和 GPU

针对图形和 GPU 进行了以下更新:

本地化

针对 I18n 进行了以下更新:

  • 简化了 ICU build 配置。Bazel ICU 代码库已更新为直接读取生成的 icu_build_config.gni 文件,从而不再依赖于 shell 脚本。

IoT、Matter 和 Thread

我们针对 IOT、Matter 和 Thread 进行了以下更新:

  • 在 Inspect 中扩展了线程遥测和诊断功能:在 Inspect 和 telemetry.fidl 中扩展了 OpenThread 诊断数据,以纳入深层网络事件历史记录、活跃路由状态和节点可观测性指标。这可让开发者全面了解 Thread 网络行为,从而更轻松地调试 Thread 现场问题。
  • Thread 多播转发支持:更新实现以支持 Wi-Fi 和 Thread 网络之间的多播转发。这样一来,便可在网络边界之间实现无缝多播通信和设备发现。
  • Thread 前缀委托 (PD) 稳定性修复 修复了因 Wi-Fi 接口在离线和在线状态之间切换而导致的 Thread 前缀委托客户端崩溃问题。这可确保在网络连接发生变化时,前缀请求稳定且会话清理得当。
  • 针对 IPv6 链路本地 RDNSS 的 DNS 解析修复:在使用 IPv6 链路本地 RDNSS 时,通过将范围 ID 正确附加到上游 DNS 服务器地址,解决了 DNS 查询传输失败的问题。这可恢复 IPv6 链路本地网络的可靠 DNS 解析。
  • 升级到 Thread 1.4 并启用网络诊断 TLV 将 OpenThread 堆栈升级到版本 1.4,并启用了动态网络诊断供应商 TLV。这样可以准确填充供应商软件版本,从而改进网络诊断和遥测日志记录。
  • 改进了 mDNS 服务发布可靠性:通过引入具有重试机制的状态化重新发布,消除了 meshcop mDNS 发布系统中的竞态条件。这可确保 Thread 设备可靠地传播和发现 mDNS 服务。
  • OpenThread 更新:将 OpenThread 更新为 2026 年 3 月 23 日的上游提交。

内核

针对内核进行了以下更新:

  • 可重启序列 (RSEQ) 支持 在 x86、arm64 和 riscv64 架构中添加了 zx_thread_set_rseq 系统调用。rseq 关键部分中被抢占的线程现在可以通过中止处理程序正确重启。
  • 关键截止时间调度程序配置文件:为截止时间配置文件添加了“关键”标志,以便在 CPU 超额订阅期间优先处理这些配置文件,而不是正常的截止时间配置文件。

Netstack

针对 Netstack 进行了以下更新:

平台驱动程序

平台驱动程序进行了以下更新:

  • 输入设备遥测增强功能。fuchsia.input.report.DeviceDescriptor 添加了设备遥测字符串(制造商、产品、序列),以提高输入设备识别能力。
  • USB 堆栈 FIDL 迁移和 DFv2 更新。将 USB 堆栈迁移到了 DFv2,并使用新的 UsbFunction FIDL 接口替换了 Banjo 协议。这包括 USB 功能的异步拆解,以消除重新配置竞态条件。
  • USB 政策和 Starnix 集成。添加了 USB 政策组件和 Starnix 模块,以跟踪 USB 设备状态。此功能通过 sysfs 节点将 USB 状态变化正确地公开给 Android 应用。
  • 外围设备驱动程序增强功能。推出了支持有效电源域的 dw-spi 驱动程序,并发布了用于高级电压调节器交互的 vreg-ctl CLI 工具。此外,还在 SDHCI 中启用了加密 IO 请求,并优化了 I2C 核心请求以异步运行。

电源管理

针对电源管理进行了以下更新:

  • 引入了直接租用 API 和 ElementControl 功能:添加了直接 LeaseToken API 以打开没有关联元素的租用,以及一个 initial_lease_token 以在创建时立即获取租用。 此外,ElementControl.AddDependency 现在允许安全地向现有元素添加依赖项,而不会中断正在进行的租约。
  • 简化了电源框架 API 并移除了机会性依赖项:通过标准化所有依赖项并消除 DependencyType 枚举,移除了机会性依赖项机制。将租赁 API 迁移到了 Topology.Lease(停用 LeaseHelperLessor.Lease),将 GetApplicationActivityLease 替换为了 GetWakeLease,并引入了 AcquireLongWakeLease
  • 改进了系统活动管理器 (SAG) 暂停转换:SAG 现在使用 TerminalStateWatcher API 在关机、mexec 或重启进程期间明确阻止暂停。还改进了挂起逻辑,以在关闭渠道时丢弃待处理的阻塞器,并在挂起时请求 CPU 提升,从而提高恢复性能。
  • 重新设计了电池计算并引入了 CPU 能耗跟踪:全面改进了电池计算(欺骗、拼接和完全充电时间),以提供更准确的充电估计值,并在 FIDL 中将 remaining_capacity_uah 重命名为 remaining_charge_uah。在 CpuManager 中添加了 CpuStatsRecorder,以通过 Inspect 公开 CPU 负载和能耗指标。
  • 添加了唤醒锁定监控功能并增强了暂停驱动程序 API:Starnix 现在会跟踪唤醒源的活跃时间,以便提供对长时间运行的唤醒锁定的可观测性。此外,还引入了 DeviceDidNotSuspendError 以便轻松检测到暂停失败,并要求驱动程序明确初始化其暂停行为,而不是使用默认行为。
  • 改进了电池用户体验和诊断功能:修复了电量耗尽的设备开始充电时界面电池电量突然跳动的问题,并为电量极低事件添加了 CrashReporter 功能。Inspect 现在会同时记录原始电池电量和处理后的电池电量,以提高诊断能力。
  • 改进了系统活动调控器 (SAG) 的稳定性。通过防止在关机和重新启动转换期间暂停,提高了电源管理功能的稳健性。SAG 现在会自动针对卡住的暂停阻塞器或重复的暂停失败提交崩溃报告。

Rust

针对 Rust 进行了以下更新:

软件交付

我们针对软件交付进行了以下更新:

  • 存储主机迁移已完成:Paver 和存储依赖项已完全迁移到现代 storage-host 架构,从而可以完全移除所有旧版非存储主机代码路径和测试。
  • 移除了过时的 WriteVolumes 接口WriteVolumes 接口和关联的 PayloadStream 协议已从 Paver API 中移除,因为它们不再用于当前设备。
  • 针对子软件包重构了 Fuchsia 网址类型:引入了特定的启动网址类型,并分离了软件包和组件网址,以在启动解析器中实现子软件包解析支持。
  • 无软件包更新使用已签名的清单:无软件包更新已迁移为使用已签名的 protobuf 清单格式,而不是之前的旧版 OTA 清单格式。
  • 系统更新程序的配置功能迁移:将 concurrent_package_resolvesconcurrent_blob_fetches 设置迁移到配置功能,以简化更新配置管理。
  • 在更新程序中支持范围限定的 IPv6 地址:系统更新程序已从 url::Url 迁移到 http::Uri,以正确解析和处理范围限定的 IPv6 地址。
  • 系统映像 OTA 恢复回退:软件包缓存现在可确保即使系统映像损坏,OTA 仍可在恢复模式下继续进行,仅在明确需要时才会失败。
  • 针对软件包解析器的沙盒 HTTP 连接:软件包解析器 TUF 客户端和自动客户端现在使用 fuchsia.net.http/Loader.Fetch 进行 HTTP 连接,从而提供更好的网络隔离和沙盒化。
  • 为更新扩展程序添加了 FDomain 支持:在软件包更新 FIDL 扩展程序、模拟安装程序和服务器套接字中引入了 FDomain 支持。
  • 将 serve-archive 标记为实验性ffx repository serve-archive 命令已重命名为 kebab-case 并标记为实验性。
  • 系统映像哈希保护 隔离的 pkg-cache 现在使用 system.base_merkle 来保护主要产品 blob 免受垃圾回收的干扰,以实现系统映像哈希保护。

Starnix

针对 Starnix 进行了以下更新:

存储

存储空间进行了以下更新:

测试

针对测试进行了以下更新:

  • fx test 开发者体验增强功能 fxtest 现在会自动启动无头模拟器以进行设备测试(如果没有连接设备),并添加了 --show-affected-tests--run-affected-tests 标志,以便轻松测试本地更改。现在,测试输出中包含系统日志。它还通过在端到端测试中省略 --e2e 时尽早失败来提高执行安全性,同时扩展了对 Python、Mobly 和 Bazel 主机测试的测试枚举支持。
  • Honeydew 和 Lacewing 架构变更 基于 Mobly 的测试框架已迁移到异步架构,引入了 AsyncFuchsiaBaseTest 并要求控制流使用异步函数。为防止在端到端测试中滥用 API,FuchsiaDevice 抽象基类已重命名为 DeviceKnobs,并且现在可以准确地将测试跳过报告为测试失败。
  • 覆盖率和 ResultDB 洞见更新:开发者现在可以使用 ffx coverage 中的 --export-jsonfx coverage 中的 --json-output-path 导出原始 JSON 覆盖率数据。此外,通过将嵌入式失败原因提升到顶级测试并填充 DisplayName 元数据,还可提高 ResultDB 可见性,从而减少对深层日志分析的需求。
  • 性能和测试 CLI 工具 新的 CLI 工具可简化本地工作流程,引入 fx test-category 来查询目录元数据,并引入 test_filterer 来动态构建经过过滤的任务请求,以用于预提交重试。此外,perfcompare 脚本还开源了用于下载和提取性能指标的工作流辅助程序。

计时

针对时间管理功能进行了以下更新:

  • PullSource FIDL 协议添加了 Shutdown 方法。这样,Timekeeper 就可以在停止之前请求时间源托管其检查数据。
  • 修复了 Starnix HrTimerManager 启动期间出现的系统级挂起问题。 现在,初始化失败会记录在日志中并以清晰的方式发出信号,从而防止计时器子系统无限期地阻塞命令。
  • 将 Starnix 时钟操作性能提升了大约 3 倍。 Starnix 现在使用内存映射时钟进行标准 UTC 查找,以显著降低 CPU 使用率。
  • 新增了对定期实时时钟 (RTC) 更新和实验性初始化策略的支持。Timekeeper 现在可以保持最新的 RTC 读数,并且可以选择接受次优的 UTC 值。
  • 修复了时间轴初始化引用不正确的问题。现在,RTC 读取会无条件刷新,以防止在系统启动期间使用过时的正常运行时间参考。
  • 为时钟实现启用了 Rust Next 绑定。这使时钟组件现代化,并允许 clockimpl 与供应商树中的最新 Rust 绑定一起使用,同时将 Amlogic RTC 驱动程序迁移到 Rust。

工具链

针对工具链进行了以下更新:

  • 修复了 fx roll-compiler 行为:更新了脚本,以正确包含之前被省略的 linux-arm64 Clang 工具链。
  • 改进了 Bazel 和 Clang 工具链集成:增强了 Bazel fuchsia_clang_ext 模块以支持 CIPD 确保文件,并使 Bazel Clang 警告与 GN 保持一致。
  • 切换到 NS2 的预构建 Go 工具链:更新了构建流程,以严格使用由滚动器提供的支持 Fuchsia 的预构建 Go 工具链。

工具

工具进行了以下更新:

  • V2 二分引擎和自动化 将实验性 v2 二分引擎提升为默认引擎,引入了 --script 标志,用于在每个步骤中进行自动化验证测试。还添加了对将 PIB 和 BIB 集直接传递到 ffx product-bundle create 的支持。
  • 对 Check-Licenses 工具 V2 进行大修:将 check-licenses CLI 重构为具有隔离子命令的模块化流式传输流水线。此次大修显著提高了内存用量、并发安全性和可维护性,同时还添加了一个新的指标框架。

fx

ffx

  • FFX 和 Fuchsia 控制器 FDomain 迁移 移植了大量 ffx 插件和 fuchsia-controller,以使用 FDomain 作为底层传输。 此迁移可改进核心工具的内部架构和稳定性。
  • 模拟器 (ffx emu) 改进:模拟器进程现在以守护式会话运行,以便在终端关闭后继续运行。此外,x64 输入强制执行 VirtIO,arm64 QEMU 安全启动,并且 ffx emu show 支持新的 --instance 标志。
  • FFX 驱动程序诊断和拓扑 添加了 ffx driver doctor 以诊断绑定问题,并将详细的驱动程序列表拆分为专用 show 命令。驱动程序工具现在会公开完整的拓扑路径,并包含用于管理复合设备的命令。
  • FFX 组件和代码库改进:现在,运行 ffx component run 会在需要时自动启动临时软件包服务器。添加了 ffx repository serve-archive,以便通过前台服务器轻松提供软件包归档 (.far)。
  • 增强了 ffx log 输出格式和稳定性。该命令现在会遵循 log_cmd.color 配置,在严格模式下停用颜色,并在输出流关闭时干净地终止。
  • FFX 插件简称 FFX 现在支持缩写的子命令名称(例如,ffx t l 代表 ffx target listffx c s 代表 ffx component show)。这可大幅提升 CLI 人体工程学设计和整体开发者速度。
  • fx testffx test 添加了 syslog 捕获支持。新的 --capture-syslog 标志可在测试作业期间捕获系统日志(默认情况下为 fx test 启用)。

zxdb

跟踪记录

针对跟踪功能进行了以下更新:

  • 跟踪数据传输压缩:在跟踪数据传输期间添加了 zstd 压缩支持,将平均下载速度提高了 2.6 倍,并将传输的数据大小减少了 5.3 倍。
  • 手动缓冲区刷新 APITraceController FIDL 中添加了 RequestBufferFlush 方法,并在 NEXT 中添加了新的刷新 API,以允许客户端更稳定地流式传输较小的数据块。
  • Trace Provider V2 协议 引入了提供程序 V2 协议和用于协商共享内存版本的注册 API,使跟踪会话能够同时支持 V1 和 V2 提供程序。
  • 中止正在运行的轨迹会话:向 ffx trace stop 添加了 --abort 选项,用于强制终止正在运行的会话而不保存结果,从而确保干净的内部拆解。
  • Tracefs 性能改进 通过在所有 CPU 之间条带化事件,改进了 tracefs 性能,显著缩短了平均读取和写入时间。
  • 归一化 CPU 使用率指标:添加了用于计算归一化 CPU 利用率的解析和结构,方法是在跟踪性能指标中跟踪动态电压和频率调节 (DVFS) 处理速率。
  • LargeBlob 解析修复 修复了 FXT 解析器中 32 位大小字段被错误截断的问题,该问题之前导致大型分析器堆栈转储失败。 LargeBlob
  • 跟踪会话生命周期和终止可靠性 通过防止异步循环关闭竞争和在断开连接时一致地丢弃状态来提高跟踪会话终止可靠性,以避免会话挂起。
  • 类别跟踪功能增强:默认启用 kernel:power 类别以跟踪可变的 CPU 速度,并修复了 starnix 类别的事件计数和误报警告问题。
  • 内存压力跟踪记录:为 pressure_signaler 组件启用了跟踪记录,以正确发出 memory_pressure 计数器。
  • 启动时 Starnix 轨迹连接 为 Perfetto 消费者线程实现了重试逻辑,以处理在 Starnix 完全启动之前启动轨迹会话的情况。

界面

界面进行了以下更新:

视频

以下是针对视频功能进行的更新:

  • 打开了 CodecFactory 和 StreamProcessor 协议。将协议标记为开放,并添加了 handle_unknown_method 支持,以确保向后兼容性。
  • 从 TimelineFunction FIDL 中移除了默认值。fuchsia.media.TimelineFunction 中移除了 @allow_deprecated_struct_defaults,以支持 Python FIDL 绑定和媒体端到端测试。
  • 为最低配置提供媒体会话支持。fuchsia.media.UsageReporter 设置为可选,以便 media_session 可以在最低配置下运行,而无需全栈音频。

WLAN 和连接

WLAN 和连接方面进行了以下更新: