Fuchsia F30 版本说明

日期:2026 年 4 月 7 日

版本:F30

无障碍设置

针对无障碍功能进行了以下平台更新:

  • 增强了无障碍日志记录功能。针对多指和多点按缩放操作扩展了日志记录,以改进放大功能的调试。

音频

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

  • PacketStream API 和 FIDL 改进。引入了 PacketStream API,以支持 AAC 和 SBC 等编码音频流式传输格式。为了支持非 PCM 音频格式,更新了 FIDL 协议,引入了可扩展的联合 (Format2/SupportedFormats2),并弃用了 Composite 协议的封闭版本,转而使用新的开放版本。

  • 新增了大量诊断和检查功能。扩展了驱动程序和 AudioDeviceRegistry (ADR) 的检查诊断功能,以纳入环形缓冲区指标、调度延迟和时钟域注释。这些新增内容会按会话保留,并进一步汇总到新的 diagnostics_summary 部分,从而显著改进开发者问题排查和性能分诊。

  • FFX 音频 CLI 工具改进。增强了 ffx audio CLI 工具,在设备信息输出中显示设备名称,并修复了帮助中的文本渲染错误。此外,ffx audio play 现在可以正确地将无障碍输入路由到 Accessibility 使用模式,而不是 Background

  • 性能优化和驱动程序修复。重新为音频目标启用了链接时优化 (LTO),以提升性能。此外,通过在 aml-g12 驱动程序中强制执行连续 VMO 大小的页面舍入,修复了驱动程序兼容性问题,以符合更严格的系统调用 API 要求。

蓝牙

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

  • 可配置的 RFCOMM 最大数据包大小。基于每个 DLC 协商 max_packet_size,以正确符合 RFCOMM 5.5.3 规范。

  • 在 BondingData 中持久保留设备类。BondingData FIDL 结构体添加了一个可选的设备类别字段,使 bt-gap 能够在系统重启后保持该字段的值。

  • AVRCP 连接和音量。通过按需启动 AVRCP 控制和浏览连接来提高效率,并集成 bt-avrcp-vol- control 组件以轻松管理客户端的音量控制

  • MAP OBEX 连接稳定性。通过在 MAS 传输连接后立即启动 OBEX CONNECT 并正确等待客户端启动的 OBEX DISCONNECT,提高了设备兼容性。

  • Sapphire Autosniff bug 修复。通过在主动配对期间和 A2DP 处于活动状态时抑制 autosniff 行为,解决了某些头戴式耳机出现的严重音频跳过问题。

  • Sapphire 数据包过滤增强功能。AdvertisingPacketFilter::Config 添加了明确的传送模式,并强制执行默认 RSSI 下限,以防止控制器错误地忽略有效对等设备。

  • 基础架构和可观测性更新。添加了新的程序集配置,以动态将配置文件请求路由到 bt-rfcomm,并针对 GATT 配置文件发现失败引入了诊断跟踪。

构建

针对 build 进行了以下更新:

  • 为 Rust 启用了 LTO,并清理了优化配置。 默认情况下,将扩展的链接时优化 (LTO) 应用于 Rust 代码库,以提高运行时性能并减小二进制文件大小。还针对特定核心目标启用了 LTO,现在可以单独调整优化级别。

  • 将构建系统迁移到了 Rust 2024 版。更新了全局 Rust 工具链配置,以利用新版并为 Rust 二进制文件设置 max- page-size 链接实参。

  • 高级 Bazel 迁移和改进的 IDK 工具。引入了新的 Bazel 规则,以简化 IDK 预构建,并从 SDK 中移除了已弃用的 fuchsia_fidl_llcpp_library() 规则。调试符号现在在首次 bazel build 期间生成,以节省开销。

  • 从构建系统中移除了旧版 macOS 支持。从工具链、测试脚本、映像定义和 SDK 生成封装容器中移除了 macOS 兼容性配置。

  • 向 Build API 添加了新的客户端命令。引入了 affected_testsshould_file_changes_trigger_build,以识别受影响的测试并智能地触发基础设施构建。我们还改进了 file_to_test_package 工具,使其使用 gn refs 以提高精确度。

  • 提升了构建图性能和远程执行稳定性。通过使用经验性 build 数据为 Ninja 边权重设定初始值来优化任务调度,并为重复的 GN 输出添加了错误检查。解决了 Breakpad 符号生成方面的增量 build 问题,并支持通过 RBE 在 C++ 编译中远程使用 fsatrace

钴蓝

Cobalt 进行了以下更新:

  • Rust 2024 迁移。已将 Cobalt 代码库迁移到 Rust 2024 版。

  • 将 STRUCT 字段标记为实验性。将标记为 STRUCT 的指标和报告字段标记为实验性,以避免使用混淆;开发者应避免使用这些字段。

  • 修复了同步脚本。解决了 sync_with_fuchsia.py 辅助脚本的问题。

组件框架

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

  • 增强了 fuchsia.component.sandbox。更新了 DirConnector API 以支持传递标志和子目录,并向 CapabilityStore 添加了 CreateServiceAggregate

  • 功能路由需要指定目标。功能路由现在明确要求指定目标 (WeakInstanceToken),以确保在组件图中始终能够准确识别请求的发起者。

  • 组件控制器更新。fuchsia.component.Controller 添加了 OpenExposedDir,从而可以直接从子组件的控制器打开其公开的目录。

  • CML target_availability 功能。cmc 中引入了 target_availability,以在编译期间省略功能提供,前提是其目标已从组装的清单中排除。

  • 检查日志记录中是否存在路由错误。Component Manager 现在公开了一个 routing_errors Inspect 节点,用于捕获最近的路由失败,以便更好地进行设备端诊断。

  • 严格的 bootfs 条目处理。如果组件管理器无法从 userboot 接收 bootfs 条目,现在会立即退出,而不是继续执行启动序列。

  • StorageAdmin 协议已弃用。fuchsia.sys2.StorageAdmin 协议移至 fuchsia.component.StorageAdmin 协议。此更改允许在 fuchsia.git 之外使用 fuchsia.component.StorageAdmin

  • 默认情况下,在工程 build 上停用了跟踪。在 eng build 的组件管理器中默认停用了跟踪,以防止因阻塞 trace-provider IPC 而导致随机启动停滞。需要此功能的开发者可以通过汇编标志重新启用跟踪。

诊断

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

显示

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

  • 修复了显示引擎事件中的竞态条件。添加了同步功能,以防止协调器和引擎驱动程序之间的并发访问导致潜在的驱动程序崩溃。

  • 更新了 Intel 显示屏的页面大小确定方式。intel-display 驱动程序中移除了硬编码的 PAGE_SIZE 常量,并将其替换为运行时页面大小确定,以支持 RFC 0016。

驱动程序框架

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

FIDL

针对 FIDL 进行了以下更新:

反馈

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

  • 网域配置迁移。反馈配置已迁移到新的网域配置 (feedback_config.json),并移除了 persisted_logs_num_files 等未使用的标志。

  • 增强了关停和重新启动跟踪功能。通过以下方式改进了重新启动注释和崩溃签名:跟踪启动过程中的所有关机操作;通过汇编实现可配置的自发重新启动原因;修复了无原因的 Starnix 关机的归因。

  • 优化了采用 FXT 格式的日志提取。反馈现在使用 FXT 格式而非 JSON 从 Archivist 获取日志,从而绕过不必要的序列化,显著优化性能和内存用量。

  • 可配置的报告存储区大小。报告存储区大小限制现在可通过程序集进行配置,对于 large_disk 产品,该限制已增加到 10 MiB,以防止大型 minidump 超出存储空间。

  • 改进了崩溃快照。从崩溃快照中移除了未使用的 build.snapshot.xml 附件,并修复了导致 log.kernel.previous_boot.txt 被错误排除的 use-after-move bug。

固件

固件进行了以下更新:

  • 恢复:BCB 处理。添加了对 --sideload 引导加载程序控制块 (BCB) 实参的支持,恢复功能现在会在启动时从 /misc 分区读取并清除引导加载程序消息,以防止连续意外启动到恢复映像。

  • 恢复:移除了 fastboot 界面。从手动菜单中移除了 fastboot,因为该功能可在恢复模式下原生访问

  • 恢复:标准化关机和重启 API 用法。将恢复重新启动处理迁移到关机 API,从而能够准确跟踪关机原因,以改进崩溃报告和指标。

  • 恢复:系统改进。向恢复组件公开了 bootfs 实参,以支持在存储操作期间进行启动 slot 识别,并实现了可靠的死锁检测。

图形和 GPU

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

  • GPU 驱动程序中支持的动态页面大小。在图形驱动程序中,将硬编码的 PAGE_SIZE 宏替换为运行时方法,以支持动态变化的启动时页面大小。

  • 改进了 Mali 驱动程序电源管理。msd-arm-mali 驱动程序中集成了一个 SuspendBlocker,以便在进入系统挂起状态之前正确清空任务队列。

本地化

针对 I18n 进行了以下更新:

  • 将迁移的 ICU 数据同步到 fuchsia_sync。ICU 数据库现在使用 fuchsia_sync 来改进死锁检测,并通过移除锁中毒来减少内存开销。

IoT、Matter 和 Thread

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

内核

Zircon 内核进行了以下更新:

  • 强制执行 VMO 页面对齐 (RFC-0238)。强制执行严格的页面对齐大小,以创建物理和连续 VMO,并过渡到安全地将新添加的页面清零。
  • 运行时内存页大小支持 (RFC-0016)。从 Zircon 公共头文件中移除了编译时 PAGE_SIZEZX_PAGE_SIZE 宏,要求开发者使用显式运行时页面大小检查。

Netstack

针对 Netstack 进行了以下更新:

平台驱动程序

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

  • Rust 驱动程序管理器端口。将核心驱动程序管理器组件移植到 Rust,引入了固件崩溃报告和跨驱动程序主机的内存归因跟踪。

  • 电源感知型驱动程序拓扑。为每个驱动程序注册了一个电源元素,并创建了一个专用存储元素,为高级电源感知拓扑跟踪奠定了基础。

  • USB DWC3 控制器的鲁棒性。解决了多个 DWC3 控制器稳定性问题,修复了传输资源分配问题,并确保持续中断处理,以防止系统挂起阻塞。

  • 网络设备 FIDL 迁移。virtiodwmacgvnic 驱动程序的基础网络设备接口从 Banjo 迁移到 FIDL,同时为 virtio 添加了 DFv2 端口。

  • Virtio 链接状态修复。修复了 virtio 网络驱动程序问题:重启时未读取链路状态,导致 netstack 在设备挂起后无法接收到错误的状态。

  • DWMAC 稳定性增强。通过增加设备重置超时时间消除了极端情况下的故障,并修复了 DWMAC 驱动程序中因绑定失败而触发的调度程序崩溃。

  • SDMMC 和 SDIO 系统挂起修复。修正了 SDHCI 总线空闲逻辑,并解决了因错误回退到高速模式而导致 SDIO 中出现严重系统挂起的问题。

  • 存储分区转发。引入了 block-relay 组件,该组件通过为每个指定的分区生成节点,将 GPT 分区无缝转发到驱动程序框架。

  • 平台总线 IOMMU 支持。向平台总线协议添加了 RegisterIommu API,用于配置和构建多个 IOMMU。

  • 中断唤醒向量政策变更。现在,明确要求主板驱动程序通过元数据设置中断唤醒向量。完全移除了对传递 ZX_INTERRUPT_WAKE_VECTOR 标志的客户端驱动程序的支持。

  • Sysmem 填充约束。添加了 pad_for_block_sizepad_beyond_image_size 缓冲区限制,以帮助需要超出图片边界的额外字节进行系统优化的参与者。

电源管理

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

  • 引入了 fuchsia.power.cpu FIDL 库,并重构了 CPU 性能限制。新的 DomainController 协议在 Starnix 中将 CPU 作为散热设备公开,而 CPU 提速逻辑现在使用 fuchsia.hardware.cpu.ctrl:Device API 来支持 RPPM。

  • 将单个 SetBoost FIDL API 替换为多路复用 Boost API。 新协议允许通过多个来源同时提升系统,直到返回的 EventPair 句柄被丢弃。

  • 移除了 Power Broker 框架中对机会性依赖项的所有支持。现在,断言依赖项是唯一受支持的要求类型,可简化声明跟踪和租赁突发情况。

  • 提高了电池电量百分比和充电电流指标的准确性。现在,速率限制器可平滑处理电池电量下降,并且 FIDL API 现在会返回以微安 (µA) 为单位的充电电流,并更新“Charging”字段名称。

  • 重构了电池遥测和内部处理。Battery Manager 现在会在内部强制执行事件排序,以防止丢弃更新,并且仅在发生有意义的更改时才会在 Inspect 中记录电压、容量和充电时间估计值。

  • 添加了硬件触发点监控功能,并增强了热日志记录功能。 引入了 TrippointWatcher 协议,用于直接监控硬件触发点,并更新了温度记录,以准确跟踪最高温度。

  • 将核心电源服务迁移到统一的关机 API。之前的重新启动和关机方法已被弃用,取而代之的是 Shutdown,以确保系统会普遍记录关机原因。

  • 添加了检查持久性功能,并改进了系统可观测性。power_state_recorder 现在可以在重启时将检查历史记录持久保存到磁盘,而新的唤醒租约事件和健康节点则可改进时间轴工具和启动监控。

  • 在系统活动管理器 (SAG) 中将 Suspender 连接逻辑设为异步。这样可防止 SAG 在等待 Suspender 连接时阻止启动,从而允许在启动驱动程序之前提取驱动程序令牌。

Rust

针对 Rust 进行了以下更新:

安全

针对安全性进行了以下更新:

  • Scrutiny 配置更新。向 Scrutiny 政策添加了 component_tree_config 和启动实参配置,从而能够提取动态字典和内核实参,以进行准确的功能路由审核。

  • Sealing Keys API 更新。针对 Keymint 密封密钥引入了 DeleteAllKeys 函数,以支持全面的密钥删除操作。

  • TEE 管理器依赖项解析。tee_manager 移至基本软件包集,并将其配置为使用基本解析器,从而防止在软件包解析期间出现无法解锁永久性存储的依赖关系循环。

  • 加密 API 和证书更新。轮替了 TLS 根证书,并将代码库逻辑迁移到了新的 fuchsia-merkle API,取代了已弃用的 MerkleTree 方法。

软件交付

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

Starnix

针对 Starnix 进行了以下更新:

存储

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

  • 统一了对 FIDL 协议的屏蔽。已将 Volume、Partition 和 Block 协议统一为单个 fuchsia.storage.block.Block FIDL 协议,以将块组件与驱动程序框架分离。

  • Blobfs 停止将 blob 作为文件提供。Blob 不再通过 fuchsia.io/File 提供,必须通过 BlobReader 访问,并通过 BlobCreatorBlobWriter 写入。此外,还移除了在线压缩和 VMEX 功能。

  • 改进了 Blob 卷刷写性能。通过让客户端对载荷进行非稀疏化处理,刷写新 blob 卷的速度显著提高(从 120 多秒降至 40 秒以下)。

  • 公开了 Blobfs 覆盖配置。已向 Blobfs 和 SDK 添加 OverwriteConfiguration FIDL 功能,使产品能够控制 blob 覆盖状态和格式设置。

  • Fxfs 32 位对象 ID 和缓存。新的 Starnix 卷将 inode ID 限制为 32 位(引入了不可回滚的 Fxfs 版本更改),并缓存对象键以大幅提升 GetAttributes 性能。

  • Fxfs 内存优化。Fxfs 将 Merkle 验证的内存用量减少了至少 75%,现在将可变文件的后备 VMO 命名为“fxfs-file”,以帮助进行内存分析。

  • 强化了 F2FS 同步。修复了孤立回收期间的竞态条件,并改进了 vnode 层次结构同步,以可靠地为打开的孤立文件保留数据块。

  • 改进了块驱动程序框架。新的 block-relay 组件直接将系统 GPT 分区转发到驱动程序框架。块服务器实现还改进了强制单元访问 (FUA) 处理,并将请求处理移至专用线程,以防止并发问题。

  • 系统级存储空间行为更新。统一了 read_dirents 以便始终为小缓冲区返回 ZX_ERR_BUFFER_TOO_SMALL,并移除了硬编码的 PAGE_SIZE 假设,转而采用动态检查来提高可移植性。

测试

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

  • fx 测试超时、统计信息和可靠性。fx test 现在将超时委托给 test_manager 以收集回溯,在调试期间自动停用超时,并添加了 --pr stats 标志。还修复了导致临时软件包服务器在出错后泄漏的 bug。

  • 关闭和重新启动 API 迁移。废弃了各个测试接口(例如 honeydewsl4f)中的 PerformReboot,取而代之的是 ShutdownShutdownOptions。这使客户端能够指定明确的关机原因,从而改进了重启原因跟踪。

  • Lacewing 和 Honeydew 的功能。添加了对在测试期间通过 device.register_for_on_device_ip_change() 处理目标 IP 更改的支持。串行接口还新增了一个 read 方法,用于直接从串行端口读取字节。

  • 调试和系统目标改进。更新了 test_manager 以递归方式附加 DebugAgent,确保测试领域内的所有组件都得到覆盖。此外,debug_block 设备现在可以作为系统测试目标公开。

计时

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

  • Starnix /dev/rtc0 实现。在 Starnix 中添加了被动 /dev/rtc0 设备,消除了虚假的 rtc0 打开错误。

  • 精细的闹钟驱动程序错误。在闹钟 FIDL API 中引入了精细的驱动程序错误,以改进不可恢复的错误报告。

  • 可配置的 Timekeeper 后备。将最低 UTC 参考时间与后备差值作为可调整的产品组装配置公开。

工具链

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

工具

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

  • fx:正式停用 macOS 支持。fx 和相关 CLI 工具不再针对 macOS 构建,现在会明确报告平台不受支持。

  • 新的 fx 调试命令。添加了 fx debug 作为 ffx debug connect 的便捷封装容器,可在需要时自动启动临时软件包服务器。

  • 已弃用 fx unarchive-package。fx unarchive-package devshell 命令已弃用,并已完全被 ffx package archive extract 取代。

  • 新的 ffx 目标 shell 插件。引入了 ffx target shell,以通过 RCS 与目标设备建立交互式 shell 会话。

  • 新增了 ffx 驱动程序主机子命令。引入了 ffx driver host listffx driver host show,完全取代了已弃用的 ffx driver list- hosts 命令。

  • 针对 ffx 目标列表的地址过滤。添加了 --allow-addrs--deny-addrs 过滤选项,取代了已废弃的 --no-ipv4--no-ipv6 标志。

  • Fastboot 未配置设备刷写。Fastboot 现在会在刷写期间自动检测到具有损坏的系统容器的未配置设备,然后回退到直接覆盖 super 或提示进行完全擦除。

  • 简化了 ffx 轨迹 FIDL 数据。ffx trace 现在默认会舍弃原始 FIDL 数据,以清理 Perfetto 界面,并提供新的 --retain-raw-fidl 标志来替换此行为。

  • ffx doctor USB 驱动程序检查。ffx doctor 现在会明确检查 ffx-usb-driver 进程状态,并在套接字路径与配置的环境不匹配时发出警告。

  • FDomain Client API 扩展和同步重构。FDomain 客户端 API 在功能方面进行了多项改进,并修复了传输终止时挂起的任务。标准库锁也已迁移到 fuchsia_sync,以自动发现锁循环死锁。

  • 改进了调试器异常处理。zxdb 现在可以正确跳过异常,捕获常规崩溃的完整堆栈轨迹,并包含用于详细打印异常的新 exception-info 动词。

跟踪记录

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

界面

界面进行了以下更新:

  • 防止了空场景的 GPU 回退。在 Scenic 中添加了默认黑色显示层,以防止意外的 GPU 回退,之前在空场景中,这种回退会降低性能。

  • 从 Scenic 中移除了 CpuRender移除了 Scenic 中的 CpuRender 选项,以简化和优化渲染路径。

  • 启用了 Flatland 显示渲染重用。现在可以重复调用 FlatlandDisplay.SetContent(),从而在测试和应用中更好地重用显示实例。

  • 优化了 Scenic 组合性能。在不存在差异时,回收 SceneState 和跳过 ViewTree 重新计算,从而显著减少每帧 CPU 分配开销。

  • 修复了 Escher 合成器颜色伪影。修正了 RectangleCompositor 中的颜色预乘,以防止出现非预乘混合模式的视觉双重乘法伪影。

  • 整合界面输入处理程序。将所有界面输入处理程序移至单个事件循环,避免了 CPU 优先级转移,并显著提高了输入延迟时间的一致性。

  • 向输入流水线添加了唤醒租约支持。输入流水线中的指针注入器、鼠标、触摸和按钮现在可以完全管理系统唤醒租约。

  • 输入流水线和 virtcon 快捷方式。通过确保仅在流水线启动后注册快捷方式,解决了输入流水线竞态崩溃问题。

视频

我们针对视频进行了以下平台更新:

  • 支持与页面对齐的 VMO 分配和动态页面大小。更新了相机和媒体组件,以使用运行时页面大小和页面对齐的分配,从而符合严格的 zx_vmo_create_contiguous 要求。

WLAN 和连接

针对 WLAN 和连接性进行了以下平台更新: