Fuchsia F31 版本資訊

日期:2026 年 7 月 22 日

版本:F31

音訊

音訊功能已進行下列更新:

  • PacketStream API 和裝置登錄支援:導入 fuchsia.audio.device.PacketStream API,在音訊裝置登錄和虛擬音訊驅動程式庫中提供頂層支援,以處理位元率範圍。
  • 移除已淘汰的 ActivityReporter API:從音訊服務中移除已淘汰的 ActivityReporter FIDL 方法和資料結構,為移除 fuchsia.media/AudioRenderUsage 列舉做準備。
  • 音訊驅動程式檢查指標強化:追蹤緩衝區集數並計算未處理的緩衝區計數,藉此強化驅動程式庫診斷,同時省略非必要欄位,進而最佳化輸出內容。
  • audio-驅動程式庫-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 主機測試規則:導入新規則 (host_testhost_go_testhost_rust_testhost_py_test),用於定義 Bazel 主機測試。這些包裝函式可確保與 Fuchsia 測試執行器 (例如 fx test) 相容,簡化現有測試遷移至 Bazel 圖表的程序。
  • 更新編譯器和連結器設定:針對 Clang 建構的 ELF 目標預設啟用呼叫圖部分,並對 LTO 下的 Rust 和共用程式庫強制執行 TLSDESC。驅動程式現在會動態連結至 libc++,大幅減少二進位大小。
  • 疑難排解和錯誤回報功能強化:在 fint 中剖析 Ninja 錯誤記錄,並預設將 fxtdump 檔案與追蹤檔案一併封存,簡化 CI 失敗訊息。此外,我們也新增了實驗性的 buildminder TUI 工具,可互動式監控建構事件。

元件架構

元件架構的更新內容如下:

  • SDK 中提供的 Realm Builder 子封裝共用項目。realm_builder_subpackage.shard.cml 分片現已匯出,開發人員可在設定中使用領域 builder 子封裝。
  • 支援子封包的啟動解析器。啟動解析器現在支援解析子封裝,讓使用 fuchsia-boot 配置的元件能運用子封裝的子項。
  • Scudo 環境變數的全系統設定。元件管理員現在支援 scudo_options 欄位,可注入執行階段設定,讓開發人員更精細地控管每個裝置的記憶體分配器行為。
  • 平台和 SDK 現在都使用編號控制代碼來轉送記錄檔接收器。在大多數情況下,記錄接收器現在會透過 PA_LOG_SINK 控制代碼 (而非命名空間) 路由傳送,這應可改善元件啟動延遲。
  • 元件開發人員工具和 CLI 強化功能。route 指令已新增至裝置上的 component 二進位檔,ffx component show 現在會列出用於建構元件的來源檔案,ffx component storage delete, 修正了刪除子目錄中項目的錯誤,並重構 ffx component doctor 以顯示字典內容。
  • Rust 中的結構化設定序列化。fuchsia-component Rust Crate 現在支援序列化結構化設定,可改善驅動程式庫元件測試。
  • 工作階段架構 API 遷移和偵錯更新。工作階段元件已軟性遷移至 ShutdownWatcherRegister,並新增了偵錯快速鍵,可透過連續按 5 次側邊按鈕觸發當機報告並重新啟動。

診斷

診斷功能已進行下列更新:

螢幕

多媒體廣告已進行下列更新:

驅動程式架構

驅動程式架構已進行下列更新:

FIDL

FIDL 的更新內容如下:

意見回饋

意見回饋功能已進行下列更新:

  • 提升報表上傳可靠性,並改善快照管理功能。上傳逾時時間已延長至 3 分鐘,以配合較慢的連線速度。此外,「意見回饋」現在只會保留最舊和最新的每小時快照,並自動清除無效項目,藉此最佳化儲存空間。
  • 新增了重新啟動和關機原因分類。Feedback 現在會追蹤 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 位址動態選取有效的 NIC,提升網路可靠性。
  • 修正復原引數剖析問題:復原引數剖析作業現在會忽略空值和初始的「復原」字串,避免發生錯誤的未知引數錯誤。
  • GBL 預先建構版本和 NUC 更新:更新 GBL 預先建構版本,並將 NUC 目標與新 API 對齊,以順利還原 Fastboot 功能。
  • Android 復原功能對齊:新增 --prompt_and_wipe_data 復原引數,顯示含有重試和恢復原廠設定選項的啟動失敗選單。

圖像和 GPU

以下是圖形和 GPU 的更新內容:

I18n

我們已對 I18n 進行下列更新:

  • 簡化 ICU 建構設定。Bazel ICU 存放區已更新,可直接讀取產生的 icu_build_config.gni 檔案,不再需要依賴 Shell 指令碼。

物聯網、Matter 和 Thread

我們對物聯網、Matter 和 Thread 做了以下更新:

  • 擴充 Inspect 中的 Thread 遙測和診斷功能:擴充 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 解析。
  • 啟用網路診斷 TLV 的 Thread 1.4 升級:將 OpenThread 堆疊升級至 1.4 版,並啟用動態網路診斷供應商 TLV。這項功能可準確填入供應商軟體版本,以改善網路診斷和遙測記錄。
  • 提升 mDNS 服務發布可靠性:導入具狀態的重新發布機制和重試機制,消除 meshcop mDNS 發布系統中的競爭條件。這可確保 Thread 裝置的 mDNS 服務傳播和探索作業可靠。
  • OpenThread 更新:將 OpenThread 更新為 2026 年 3 月 23 日的上游提交內容。

核心

Kernel 的更新內容如下:

  • 支援可重新啟動的序列 (RSEQ):在 x86、arm64 和 riscv64 架構中新增 zx_thread_set_rseq 系統呼叫。rseq 重要區段中遭到搶占的執行緒現在會透過中止處理常式正確重新啟動。
  • 重要期限排程器設定檔:在期限設定檔中新增「重要」標記,在 CPU 超額訂閱期間,優先處理這類設定檔,而非一般期限設定檔。

網路堆疊

網路堆疊已進行下列更新:

平台驅動程式

平台驅動程式的更新內容如下:

  • 輸入裝置遙測資訊強化功能。新增裝置遙測字串 (製造商、產品、序號) 至 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)、以 GetWakeLease 取代 GetApplicationActivityLease,並推出 AcquireLongWakeLease
  • 改善系統活動管理員 (SAG) 暫停轉換:SAG 現在會使用 TerminalStateWatcher API,在關機、mexec 或重新啟動程序期間明確封鎖暫停。此外,我們也改善了暫停邏輯,在管道關閉時捨棄待處理的封鎖程式,並在暫停時要求提升 CPU,以改善恢復效能。
  • 重新設計電池計算方式,並導入 CPU 能源追蹤功能: 全面更新電池計算方式 (模擬、拼接和完全充電時間),以提供更準確的充電預估資訊,並在 FIDL 中將 remaining_capacity_uah 重新命名為 remaining_charge_uah。新增 CpuStatsRecorder 中的 CpuManager,透過檢查公開 CPU 負載和能源用量指標。
  • 新增 Wake Lock 監控功能,並強化暫停驅動程式 API:Starnix 現在會追蹤喚醒來源的活動時間,以便提供長時間執行 Wake Lock 的觀測能力。此外,還導入 DeviceDidNotSuspendError,方便偵測暫停失敗情形,並要求驅動程式明確初始化暫停行為,而非使用預設值。
  • 改善電池使用者體驗和診斷功能:修正裝置電量不足時開始充電,導致 UI 電池電量突然跳動的問題,並為電量嚴重不足的事件新增 CrashReporter 功能。「檢查」現在會記錄原始和處理過的電池電量,以提升診斷功能。
  • 改善系統活動調控器 (SAG) 的穩定性。改善電源管理穩定性,避免在關機和重新啟動轉換期間暫停。SAG 現在會自動為停滯的暫停阻斷器或重複的暫停失敗情形,提交當機報告。

荒漠油廠

Rust 已進行下列更新:

軟體推送

軟體交付服務的更新內容如下:

  • 儲存主機遷移作業完成:Paver 和儲存空間依附元件已完全遷移至新式 storage-host 架構,因此可以完全移除所有舊版非儲存主機程式碼路徑和測試。
  • 移除過時的 WriteVolumes 介面:Paver API 已移除 WriteVolumes 介面和相關聯的 PayloadStream 通訊協定,因為這些項目已不再用於目前的裝置。
  • 為子封包重構 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 Developer Experience Enhancements fxtest 現在會自動啟動無頭模擬器,進行裝置測試 (如果沒有連線裝置),並新增 --show-affected-tests--run-affected-tests 標記,方便測試本機變更。測試輸出內容現在會包含系統記錄。此外,如果省略端對端測試的 --e2e,系統會提早失敗,藉此提升執行安全性,同時擴大對 Python、Mobly 和 Bazel 主機測試的測試列舉支援。
  • Honeydew 和 Lacewing 架構異動:以 Mobly 為基礎的測試框架已遷移至非同步架構,並導入 AsyncFuchsiaBaseTest,因此控制流程需要使用非同步函式。為避免在端對端測試中濫用 API,FuchsiaDevice 抽象基礎類別已重新命名為 DeviceKnobs,且測試略過現在會正確回報為測試失敗。
  • 涵蓋範圍和 ResultDB 洞察更新:開發人員現在可以使用 --export-json,在 ffx coverage--json-output-path 中匯出原始 JSON 涵蓋範圍資料。fx coverage此外,我們也將內嵌的失敗原因提升至頂層測試,並填入 DisplayName 中繼資料,減少深入分析記錄檔的需求,進而提升 ResultDB 可見度。
  • 效能和測試 CLI 工具:全新 CLI 工具可簡化本機工作流程,並導入 fx test-category 查詢目錄中繼資料,以及 test_filterer 動態建構預先提交重試的篩選工作要求。此外,perfcompare 指令碼也開放原始碼,提供下載及擷取成效指標的工作流程輔助工具。

計時

我們對「時間記錄」進行了以下更新:

  • PullSource FIDL 通訊協定中新增 Shutdown 方法。這可讓 Timekeeper 要求時間來源在停止前,先保管其 Inspect 資料。
  • 修正 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 工具鍊:更新建構程序,嚴格使用 roller 提供的 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 target listffx t lffx component showffx c s)。這大幅提升了 CLI 人體工學,以及整體開發人員速度。
  • 新增對 fx testffx test 的系統記錄擷取支援。新的 --capture-syslog 標記會在測試執行期間擷取系統記錄 (預設為 fx test 啟用)。

zxdb

追蹤

我們對追蹤功能進行了以下更新:

  • 追蹤資料移轉壓縮:在追蹤資料移轉期間新增 zstd 壓縮支援,平均下載速度提升 2.6 倍,移轉的資料大小減少 5.3 倍。
  • 手動緩衝區排清 API:在 TraceController FIDL 和新的排清 API 中新增 RequestBufferFlush 方法至 NEXT,讓用戶端能更穩定地串流傳輸較小的資料區塊。
  • 追蹤供應商 V2 通訊協定:導入供應商 V2 通訊協定和註冊 API,用於協商共用記憶體版本,讓追蹤工作階段同時支援 V1 和 V2 供應商。
  • 中止執行中的追蹤工作階段:在 ffx trace stop 中新增 --abort 選項,可強制終止執行中的工作階段,且不會儲存結果,確保內部拆解作業順利完成。
  • 提升 Tracefs 效能:在所有 CPU 間條紋化事件,大幅提升平均讀取和寫入時間,進而提升 Tracefs 效能。
  • 標準化 CPU 用量指標:新增剖析和結構,追蹤追蹤記錄效能指標中的動態電壓和頻率調整 (DVFS) 處理速率,藉此計算標準化 CPU 使用率。
  • 修正 LargeBlob 剖析問題:修正 FXT 剖析器中的問題,先前 32 位元大小欄位會遭到錯誤截斷,導致大型剖析器堆疊傾印失敗。LargeBlob
  • 追蹤工作階段生命週期和終止可靠性:防止非同步迴圈關閉競爭,並在連線中斷時持續捨棄狀態,避免工作階段停止運作,進而提升追蹤工作階段終止可靠性。
  • 類別追蹤功能強化:預設啟用 kernel:power 類別,追蹤 CPU 速度變化,並修正 starnix 類別的事件計數和誤報警告。
  • 記憶體壓力追蹤:啟用 pressure_signaler 元件的追蹤功能,正確發出 memory_pressure 計數器。
  • 開機時的 Starnix 追蹤連線:為 Perfetto 消費者執行緒實作重試邏輯,處理在 Starnix 完全啟動前啟動追蹤工作階段的情況。

UI

UI 方面有以下更新:

影片

影片已更新下列內容:

  • 已開啟 CodecFactory 和 StreamProcessor 通訊協定。將通訊協定標示為開放式,並新增 handle_unknown_method 支援,確保回溯相容性。
  • 從 TimelineFunction FIDL 中移除預設值。fuchsia.media.TimelineFunction 移除 @allow_deprecated_struct_defaults,支援 Python FIDL 繫結和媒體端對端測試。
  • 支援媒體工作階段,但設定最少。fuchsia.media.UsageReporter 設為選用,因此 media_session 可以在最少的設定中運作,不需要完整堆疊的音訊。

WLAN 和連線

WLAN 和連線功能有以下更新: