日期:2026 年 7 月 22 日
版本:F31
音訊
音訊功能已進行下列更新:
- PacketStream API 和裝置登錄支援:導入
fuchsia.audio.device.PacketStreamAPI,在音訊裝置登錄和虛擬音訊驅動程式庫中提供頂層支援,以處理位元率範圍。 - 移除已淘汰的 ActivityReporter API:從音訊服務中移除已淘汰的
ActivityReporterFIDL 方法和資料結構,為移除fuchsia.media/AudioRenderUsage列舉做準備。 - 音訊驅動程式檢查指標強化:追蹤緩衝區集數並計算未處理的緩衝區計數,藉此強化驅動程式庫診斷,同時省略非必要欄位,進而最佳化輸出內容。
- audio-驅動程式庫-ctl 公用程式改良:升級
audio-driver-ctl工具,支援 64 位元 devfs 項目,並在未明確指定音訊裝置時,自動選取第一個可用的音訊裝置。- 變更: fxr/1567739、 fxr/1567738
- 專屬 ID FIDL 定義:根據 Zircon 音訊標頭新增
unique_id.fidl結構體,並將BUILTIN_SPEAKERS屬性重新命名為BUILTIN_SPEAKER,確保正確性。 - 新增 FDomain 程式庫:導入 Rust 音訊程式庫和
ffx_optional_moniker邏輯的 FDomain 版本。- 變更: fxr/1535252, fxr/1535253
藍牙
藍牙更新內容如下:
- 自動收集 HCI 核心傾印:監控的 HCI 流量現在會自動收集核心傾印,並以 PCAP 檔案的形式提交至
CrashReporter,以進行特定廠商的診斷。 - 管道 FIDL 和 Sink/Stream 遷移:從
Channel移除舊版讀取/寫入實作項目,要求元件遷移至Sink/Stream特徵或新版管道 FIDL API。 - 藍牙 FIDL API 新增項目:新增
fuchsia.bluetooth.test程式庫,用於樹狀結構外的測試,並導入插座卸載功能,以及更新ScanData(含選用欄位)。 - 移除 C FFI 輔助功能:持續淘汰舊版 C FFI,移除多餘的輔助功能 API,包括
set_discoverability、set_discovery和connect_peer。 - 藍牙核心和硬體設定:新增產品層級的廣告、掃描參數和 HCI 逾時設定,並延長主機初始化逾時時間,避免發生虛假故障。
- 變更: fxr/1579193、 fxr/1559706、 fxr/1470860
- 錯誤:b/486414672
- 修正 HFP 通話處理和 AT 指令剖析問題:修正手機通話期間發生 HFP 連線時中斷連線的問題,並改善 AT 回應剖析功能,提升 iOS 裝置相容性。
- 變更: fxr/1470822、 fxr/1342886
- 錯誤:b/474646528
- Broadcom 和 UART 驅動程式電源整合:將 Broadcom 控制器驅動程式與 Power Framework 整合,以提供硬體系統喚醒功能,並調整 UART 讀取遲滯,提升序列傳輸效能。
- 變更: fxr/1469801、 fxr/1469800、 fxr/1506238
- 錯誤:b/443254797
- 防止主機在關閉時當機:修正重大錯誤,如果將無效的主機 ID 傳遞至
set-controller,就會關閉現用主機並導致系統中斷。- 變更: fxr/1568555
- bt-fct-hci 工具遷移:將
bt-fct-hci工具的基礎探索邏輯從已淘汰的devfs遷移至fuchsia.hardware.bluetooth.Service,還原該工具的探索功能。- 變更: fxr/1533752
- 藍牙 CLI 遷移:擴充
ffx bluetooth許多子指令,用於對等互連管理、探索及控制器設定。這項異動是為了持續淘汰舊版bt-cli工具,並協助使用者改用新版工具。- 變更: fxr/1518757、 fxr/1493156、 fxr/1524576、 fxr/1495996、 fxr/1495177、 fxr/1523137、 fxr/1523138、 fxr/1555860、 fxr/1555861、 fxr/1538840、 fxr/1538841、 fxr/1558820、 fxr/1577593、 fxr/1519096、 fxr/1538740
- 錯誤:b/479623897、 b/481916173、 b/480827351、 b/481834286、 b/488961259、 b/488961301、 b/496006349、 b/496005496、 b/492377832、 b/492378046、 b/496742939、 b/503209369
- Broadcom 藍牙強化功能:實作快速韌體下載模式,盡量縮短啟動時間,並新增支援功能,可擷取硬體當機參數。
建構
以下是 Build 的更新內容:
- FIDL 和 IDK 的 Bazel 遷移作業:將多個 FIDL 程式庫遷移至 Bazel,並擴充 IDK Bazel 規則,支援靜態程式庫和多架構預先建構項目。此外,主機工具目標名稱也簡化了,方法是捨棄
_tool後置字元。 - Bazel 主機測試規則:導入新規則 (
host_test、host_go_test、host_rust_test、host_py_test),用於定義 Bazel 主機測試。這些包裝函式可確保與 Fuchsia 測試執行器 (例如fx test) 相容,簡化現有測試遷移至 Bazel 圖表的程序。 - 更新編譯器和連結器設定:針對 Clang 建構的 ELF 目標預設啟用呼叫圖部分,並對 LTO 下的 Rust 和共用程式庫強制執行 TLSDESC。驅動程式現在會動態連結至
libc++,大幅減少二進位大小。 - 疑難排解和錯誤回報功能強化:在
fint中剖析 Ninja 錯誤記錄,並預設將fxtdump檔案與追蹤檔案一併封存,簡化 CI 失敗訊息。此外,我們也新增了實驗性的buildminderTUI 工具,可互動式監控建構事件。- 變更: fxr/1539600、 fxr/1565975、 fxr/1569377
- 錯誤:b/487240814
元件架構
元件架構的更新內容如下:
- SDK 中提供的 Realm Builder 子封裝共用項目。
realm_builder_subpackage.shard.cml分片現已匯出,開發人員可在設定中使用領域 builder 子封裝。- 變更: fxr/1592114
- 錯誤:b/42070500
- 支援子封包的啟動解析器。啟動解析器現在支援解析子封裝,讓使用
fuchsia-boot配置的元件能運用子封裝的子項。- 變更: fxr/1517179
- 錯誤:b/406846517
- Scudo 環境變數的全系統設定。元件管理員現在支援
scudo_options欄位,可注入執行階段設定,讓開發人員更精細地控管每個裝置的記憶體分配器行為。- 變更: fxr/1487617
- 平台和 SDK 現在都使用編號控制代碼來轉送記錄檔接收器。在大多數情況下,記錄接收器現在會透過
PA_LOG_SINK控制代碼 (而非命名空間) 路由傳送,這應可改善元件啟動延遲。- 變更:fxr/1599364
- 錯誤:b/442638676
- 元件開發人員工具和 CLI 強化功能。
route指令已新增至裝置上的component二進位檔,ffx component show現在會列出用於建構元件的來源檔案,ffx component storage delete,修正了刪除子目錄中項目的錯誤,並重構ffx component doctor以顯示字典內容。 - Rust 中的結構化設定序列化。
fuchsia-componentRust Crate 現在支援序列化結構化設定,可改善驅動程式庫元件測試。- 變更: fxr/1550600
- 工作階段架構 API 遷移和偵錯更新。工作階段元件已軟性遷移至
ShutdownWatcherRegister,並新增了偵錯快速鍵,可透過連續按 5 次側邊按鈕觸發當機報告並重新啟動。
診斷
診斷功能已進行下列更新:
- 記錄檔強化功能和 FXT 格式更新:全面改用新的 FXT 格式記錄檔,淘汰
--dump標記,並發布LogStream至 SDK,做為ArchiveAccessor的未來替代項目。 - 診斷持續性元件升級:將持續性元件暫時儲存,在閒置時節省記憶體和 CPU,並使用先寫入再重新命名 JSON 的策略,提升檔案損毀的復原能力。
- 提升封存檔效能和穩定性:導入時間限制區塊,防止元件快照逾時導致無法擷取記錄,並針對重複的檢查名稱新增警告。
- 記錄檔的元件網址設定:新增選項,可使用元件網址,而非記錄檔中元件名稱的路徑名稱,以保留樹狀結構外建構的相容性。
- 變更: fxr/1500102、 fxr/1516081
螢幕
多媒體廣告已進行下列更新:
- 訊框緩衝區和 Flatland 支援:新增 AMD 訊框緩衝區顯示驅動程式庫 (
framebuffer-amd-display),並更新訊框緩衝區顯示器,以支援使用雙緩衝 sysmem VMO 的 Flatland。- 變更: fxr/1574170, fxr/1574169
- 錯誤:b/503046797、 b/503064084
- 簡化分格模式:Intel 顯示器驅動程式庫程式已移除舊版非線性分格和硬體旋轉功能,以嚴格強制執行 Vulkan 交換鏈和顯示堆疊的線性分格。
- 變更: fxr/1579553, fxr/1577712, fxr/1579135
- 錯誤:b/503807786、 b/503798027
- 強制執行硬體層限制:驅動程式現在會積極拒絕超出硬體層限制的設定,並公開
max_layer_count,讓 Scenic 等用戶端實作 GPU 合成備援。 - CreateLayer API 用戶端分配的 ID:
CreateLayerFIDL API 現在需要用戶端分配的LayerId輸入內容,可為 Scenic 和 Vulkan 等用戶端啟用非同步管道。- 變更: fxr/1517316
- 錯誤:b/430976567
- 用戶端優先順序和 SetVirtconMode 移除:舊版
SetVirtconMode已由統一的ClientPriority列舉取代,診斷工具可透過高優先順序連線,不會中斷主要用戶端。 - 多媒體廣告 SDK 的 C++20 需求:多媒體廣告 SDK 現在嚴格要求使用 C++20,並已停止支援所有 C++17,以利更新內部型別和 API 定義。
- DFv2 遷移和 FIDL 繫結:所有顯示器驅動程式都已成功將舊版 devfs 依附元件,替換為 Coordinator 的原生 FIDL 服務繫結。
- 遙測和檢查功能新增內容:顯示 Vsync 檢查功能已升級,可提供啟動時間戳記和設定時間長度指標,方便您追蹤進階效能。
- 變更: fxr/1512113、 fxr/1512876
- 修正錯誤和確保圖片重複使用安全:修正因圖片步幅錯誤而導致的
virtio-gpu-display黑畫面問題,並修正安全重複使用圖片時的錯誤偵錯判斷。- 變更: fxr/1538604, fxr/1538603, fxr/1510097
- 錯誤:b/483520638
驅動程式架構
驅動程式架構已進行下列更新:
導入 fdf::DriverBase2:新增
fdf::DriverBase2,這個新基底類別會將選用參數移至組合物件,簡化驅動程式庫開發作業。- 變更: fxr/1448750、 fxr/1595757、 fxr/1588557、 fxr/1585355
- 錯誤:b/505119738
繫結規則關鍵字遷移:繫結編譯器現在會嚴格要求使用
parent關鍵字,如果使用已淘汰的node關鍵字,編譯就會失敗。- 變更: fxr/1580493、 fxr/1544801、 fxr/1544306
- 錯誤:b/402549684
擴大 Rust 驅動程式庫支援:推出中繼資料程式庫 Rust 繫結、新增
fx create driver的--lang rust範本,並透過執行階段排程器選項,啟用對非 Send Future 的支援。Driver Framework API 重構:以
ParentSpec2取代ParentSpec、淘汰fdf::MakeProperty(),並新增PDev::Connect,簡化用戶端程式碼。驅動程式堆疊追蹤記錄偵錯:新增
fuchsia.driver.token/Debug通訊協定,允許系統元件從特定驅動程式庫主機要求堆疊追蹤記錄傾印,改善死結診斷。電源元素整合:遷移儲存空間和 SDMMC 驅動程式,以使用架構電源元素、將所有驅動程式元素對應至 SAG CPU 元素,並新增暫停/繼續功能。
記錄和生命週期最佳化:將驅動程式庫記錄轉換為 C++20
fdf::logger功能,並導入兩階段初始化作業和提高執行緒限制,解決調度器建立競爭條件。Driver Manager Restart API 新增項目。擴充
fuchsia.driver.developmentFIDL 通訊協定,新增RestartWithDictionaryAndPowerDependencies方法,以便在執行階段覆寫電源依附元件,進行進階硬體測試。
FIDL
FIDL 的更新內容如下:
C++ 繫結功能強化。減少核心 C++ 繫結型別的記憶體用量,以提升分配效率,並移除
vector<bool>索引,確保與 C++23 相容。已為驅動程式庫傳輸繫結產生新的test_base.h範本。Rust 繫結現代化。移除「Wire」前置字串,以嚴格配合 FIDL 命名方式,並以原生方式產生
()做為單元型別,藉此簡化 Rust 線路型別。開始支援自訂欄位轉換器中的本機執行器和任意錯誤類型。API 工具和建構系統遷移。已將核心 FIDL 程式庫和 C++/Rust 繫結建構規則遷移至 Bazel。改善 API 工具,在 API 摘要中正確加入型別別名,並修正
fidldoc中的標準說明剖析作業。
意見回饋
意見回饋功能已進行下列更新:
- 提升報表上傳可靠性,並改善快照管理功能。上傳逾時時間已延長至 3 分鐘,以配合較慢的連線速度。此外,「意見回饋」現在只會保留最舊和最新的每小時快照,並自動清除無效項目,藉此最佳化儲存空間。
- 新增了重新啟動和關機原因分類。Feedback 現在會追蹤
SUSPENSION_FAILURE和BATTERY_DRAINED事件,並有系統地記錄關機動作,以便在冷啟動時保留正常關機和恢復原廠設定 (FDR) 狀態。 - 提升執行階段和運作時間的持續性,確保可靠性。系統正常運作時間現在會在關機期間定期保存並以不可分割的方式儲存,如果核心的重新啟動記錄遺失,可提供可靠的備援,並防止突然斷電時資料毀損。
- 提升元件的重新啟動能力。如果主要程序當機,意見回饋會重新啟動,且重新啟動記錄資訊會保留在 /tmp 中,方便您在第一次啟動後擷取。
- 變更: fxr/1574167, fxr/1539562
- 擴大設定涵蓋範圍,並提供診斷註解。「意見回饋」導入
build.compilation_mode註解,可提供更清楚的診斷資訊,並將remote_device_id_provider遷移至結構化設定、更新外部檢查程式的管道,以及保留最短的啟動 ID 時間軸,以便排解短時間啟動的問題。- 變更: fxr/1578593、 fxr/1518140、 fxr/1502054、 fxr/1487063
- 錯誤:b/329519711
韌體
韌體已進行下列更新:
- 系統映像檔雜湊保護機制:隔離的 pkg-cache 現在會使用
system.base_merkle系統映像檔雜湊,保護主要產品 Blob 不受垃圾收集機制影響。- 變更: fxr/1583170
- Gigaboot Fastboot TCP6 改良:gigaboot fastboot TCP6 伺服器現在會依據 MAC 位址動態選取有效的 NIC,提升網路可靠性。
- 變更: fxr/1556639
- 修正復原引數剖析問題:復原引數剖析作業現在會忽略空值和初始的「復原」字串,避免發生錯誤的未知引數錯誤。
- 變更: fxr/1567747
- GBL 預先建構版本和 NUC 更新:更新 GBL 預先建構版本,並將 NUC 目標與新 API 對齊,以順利還原 Fastboot 功能。
- 變更: fxr/1523677, fxr/1322644
- Android 復原功能對齊:新增
--prompt_and_wipe_data復原引數,顯示含有重試和恢復原廠設定選項的啟動失敗選單。- 變更: fxr/1521145、 fxr/1483099
- 錯誤:b/479827872
圖像和 GPU
以下是圖形和 GPU 的更新內容:
- Magma API 和安全性強化:新增
magma_buffer_constraints_set_formatAPI,並移除未使用的magma_sysmem_connection_importAPI。此外,我們也以隨機 ID 取代物件指標,並新增嚴格的有效裝置檢查,進一步提升 Starnix Magma 的安全性。 - Vulkan 和螢幕行為更新:Vulkan 螢幕交換鏈現在預設為線性分塊,螢幕協調器 (Carnelian、virtio-gpu、goldfish) 會安全地拒絕超出硬體層限制的設定。
- Mali 和 Vulkan 更新:將 ARM Mali ICD 推出至 SDK 30,並移除未使用的
vulkan_loader_for_intel套件。
I18n
我們已對 I18n 進行下列更新:
- 簡化 ICU 建構設定。Bazel ICU 存放區已更新,可直接讀取產生的
icu_build_config.gni檔案,不再需要依賴 Shell 指令碼。- 變更: fxr/1570483
- 錯誤:b/501088885
物聯網、Matter 和 Thread
我們對物聯網、Matter 和 Thread 做了以下更新:
- 擴充 Inspect 中的 Thread 遙測和診斷功能:擴充 Inspect 和
telemetry.fidl中的 OpenThread 診斷資料,納入深入的網路事件記錄、有效路由狀態和節點觀測指標。這項功能可讓開發人員全面掌握 Thread 網路行為,輕鬆偵錯現場的 Thread 問題。- 變更: fxr/1577838、 fxr/1577837、 fxr/1577836、 fxr/1577835、 fxr/1577834、 fxr/1577833、 fxr/1578073、 fxr/1574355、 fxr/1574354、 fxr/1573715、 fxr/1573714、 fxr/1580515、 fxr/1573713、 fxr/1570856、 fxr/1571173、 fxr/1573473、 fxr/1553316、 fxr/1535800、 fxr/1533479、 fxr/1533478、 fxr/1533477、 fxr/1533476、 fxr/1533475、 fxr/1497496、 fxr/1496116
- 支援 Thread 多點傳播轉送:更新實作項目,支援 Wi-Fi 和 Thread 網路之間的多點傳播轉送。這樣就能在網路邊界之間,順暢地進行多播通訊及探索裝置。
- 變更: fxr/1360776
- 修正 Thread 前置字元委派 (PD) 穩定性問題:修正 Wi-Fi 介面離線和上線切換時,導致 Thread 前置字元委派用戶端異常終止的問題。這可確保前置字串要求穩定,並在網路連線變更期間適當清除工作階段。
- 變更: fxr/1566993
- 修正 IPv6 連結本機 RDNSS 的 DNS 解析問題:使用 IPv6 連結本機 RDNSS 時,正確將範圍 ID 附加至上游 DNS 伺服器位址,解決 DNS 查詢傳輸失敗的問題。這項操作會還原 IPv6 連結本機網路的可靠 DNS 解析。
- 變更: fxr/1587548
- 啟用網路診斷 TLV 的 Thread 1.4 升級:將 OpenThread 堆疊升級至 1.4 版,並啟用動態網路診斷供應商 TLV。這項功能可準確填入供應商軟體版本,以改善網路診斷和遙測記錄。
- 提升 mDNS 服務發布可靠性:導入具狀態的重新發布機制和重試機制,消除 meshcop mDNS 發布系統中的競爭條件。這可確保 Thread 裝置的 mDNS 服務傳播和探索作業可靠。
- OpenThread 更新:將 OpenThread 更新為 2026 年 3 月 23 日的上游提交內容。
- 變更: fxr/1558423, fxr/1561515
核心
Kernel 的更新內容如下:
- 支援可重新啟動的序列 (RSEQ):在 x86、arm64 和 riscv64 架構中新增
zx_thread_set_rseq系統呼叫。rseq 重要區段中遭到搶占的執行緒現在會透過中止處理常式正確重新啟動。- 變更: fxr/1518339、 fxr/1488921
- 錯誤:b/449980934
- 重要期限排程器設定檔:在期限設定檔中新增「重要」標記,在 CPU 超額訂閱期間,優先處理這類設定檔,而非一般期限設定檔。
- 變更: fxr/1554670、 fxr/1553181、 fxr/1578835
- 錯誤:b/496206663、 b/502293150
網路堆疊
網路堆疊已進行下列更新:
- Netstack3 中的封包擷取支援:新增
fuchsia.net.debugFIDL 通訊協定和環形緩衝區,用於擷取原生封包。開發人員現在可以直接在 Netstack3 中,以 pcapng 格式輕鬆擷取、剖析及序列化網路流量。- 變更: fxr/1562199、 fxr/1556820、 fxr/1556213
- 錯誤:b/485274945、 b/477275859
- 篩選器 API 和拒絕動作:在
fuchsia.net.filter中實作Reject動作,支援 iptablesREJECT目標。這樣一來,系統就能主動回覆 ICMP 錯誤,而不是默默捨棄封包。 - DHCP 用戶端穩定性:安全處理格式錯誤的伺服器回應,並比對舊版設定順序,提升用戶端互通性。確保在各種非標準網路環境中,都能可靠地取得 IP 位址。
- 變更: fxr/1547740、 fxr/1517977、 fxr/1505896、 fxr/1521097
- 錯誤:b/480946805
- Netlink 相容性強化:與 Linux 標準對齊錯誤代碼,並支援全面的鄰居作業,擴大 Netlink 通訊協定支援範圍。這項功能可大幅減少開發人員將 Linux 網路工具移植到 Fuchsia 的阻礙。
- TCP Early Demux:新增 TCP 早期多工解訊,可將必要的通訊端中繼資料原生傳遞至本機傳入篩選器掛鉤。這可大幅提升整體封包路由效率和效能。
- 變更: fxr/1483568、 fxr/1475524
- 錯誤:b/473819144
- 裝置、路由和通訊協定設定:新增 RFC 4191 路由偏好設定處理機制,用於路由器探索,並強化 ARP,防止立即 IP 詐欺。這些異動可提升網路路由彈性,並強化安全性。
- 簡化網路裝置 API:移除舊版多重工作階段多工處理,並啟用多個 VMO 支援的工作階段,簡化驅動程式庫架構。這可減少負擔,並簡化網路驅動程式庫開發人員的實作程序。
- 變更: fxr/1594354, fxr/1588426, fxr/1566547
- 錯誤:b/438527741、 b/371574128
- 穩定性和當機修正:修正重大當機和安全漏洞問題,包括 DAD 計時器競爭條件、TCP 算術下溢和 UDP Socket 恐慌。這可確保更高的正常運作時間,並提升對格式錯誤封包的復原能力。
- 可觀測性和遙測:匯出可連線追蹤、DNS 診斷和深入網路詳細資料至時間序列檢查節點,提升可觀測性。營運人員和開發人員現在可取得更高傳真的資料,以排解系統網路問題。
平台驅動程式
平台驅動程式的更新內容如下:
- 輸入裝置遙測資訊強化功能。新增裝置遙測字串 (製造商、產品、序號) 至
fuchsia.input.report.DeviceDescriptor,提升輸入裝置識別能力。- 變更: fxr/1594747, fxr/1595270, fxr/1594745
- 錯誤:b/501530383
- USB 堆疊 FIDL 遷移和 DFv2 更新。將 USB 堆疊遷移至 DFv2,並以新的
UsbFunctionFIDL 介面取代 Banjo 協定。這包括 USB 函式的非同步終止,可避免重新設定時發生競爭情況。- 變更: fxr/1593748、 fxr/1555100、 fxr/1534881、 fxr/1566418
- 錯誤:b/497394507
- USB 政策和 Starnix 整合。新增 USB 政策元件和 Starnix 模組,追蹤 USB 裝置狀態。這會透過 sysfs 節點,將 USB 狀態變更正確公開給 Android 應用程式。
- 周邊裝置驅動程式強化功能。推出
dw-spi驅動程式庫,支援主動式電源網域,並發布vreg-ctlCLI 工具,用於進階電壓穩壓器互動。此外,SDHCI 中已啟用加密的 IO 要求,且 I2C 核心要求已最佳化,可非同步執行。
電源管理
電源管理功能已進行下列更新:
- 推出直接租用 API 和 ElementControl 功能:新增直接
LeaseTokenAPI,可開啟沒有相關聯元素的租用項目,以及initial_lease_token,可在建立時立即取得租用項目。此外,ElementControl.AddDependency現在可安全地將依附元件新增至現有元素,不會中斷進行中的租約。 - 簡化電源架構 API 並移除機會依附元件:
透過標準化所有依附元件並消除
DependencyType列舉,移除機會依附元件機制。將租賃 API 遷移至Topology.Lease(淘汰LeaseHelper和Lessor.Lease)、以GetWakeLease取代GetApplicationActivityLease,並推出AcquireLongWakeLease。 - 改善系統活動管理員 (SAG) 暫停轉換:SAG 現在會使用
TerminalStateWatcherAPI,在關機、mexec 或重新啟動程序期間明確封鎖暫停。此外,我們也改善了暫停邏輯,在管道關閉時捨棄待處理的封鎖程式,並在暫停時要求提升 CPU,以改善恢復效能。 - 重新設計電池計算方式,並導入 CPU 能源追蹤功能:
全面更新電池計算方式 (模擬、拼接和完全充電時間),以提供更準確的充電預估資訊,並在 FIDL 中將
remaining_capacity_uah重新命名為remaining_charge_uah。新增CpuStatsRecorder中的CpuManager,透過檢查公開 CPU 負載和能源用量指標。 - 新增 Wake Lock 監控功能,並強化暫停驅動程式 API:Starnix 現在會追蹤喚醒來源的活動時間,以便提供長時間執行 Wake Lock 的觀測能力。此外,還導入
DeviceDidNotSuspendError,方便偵測暫停失敗情形,並要求驅動程式明確初始化暫停行為,而非使用預設值。- 變更: fxr/1553306、 fxr/1586188、 fxr/1585355
- 錯誤:b/505119738
- 改善電池使用者體驗和診斷功能:修正裝置電量不足時開始充電,導致 UI 電池電量突然跳動的問題,並為電量嚴重不足的事件新增
CrashReporter功能。「檢查」現在會記錄原始和處理過的電池電量,以提升診斷功能。 - 改善系統活動調控器 (SAG) 的穩定性。改善電源管理穩定性,避免在關機和重新啟動轉換期間暫停。SAG 現在會自動為停滯的暫停阻斷器或重複的暫停失敗情形,提交當機報告。
荒漠油廠
Rust 已進行下列更新:
- 已遷移的第三方 Crate。將元件遷移至輕量替代方案 (例如
rkyv、vt100和regex-lite),減少依附元件的足跡。
軟體推送
軟體交付服務的更新內容如下:
- 儲存主機遷移作業完成:Paver 和儲存空間依附元件已完全遷移至新式
storage-host架構,因此可以完全移除所有舊版非儲存主機程式碼路徑和測試。 - 移除過時的 WriteVolumes 介面:Paver API 已移除
WriteVolumes介面和相關聯的PayloadStream通訊協定,因為這些項目已不再用於目前的裝置。- 變更: fxr/1572994
- 為子封包重構 Fuchsia 網址類型:推出特定啟動網址類型,並區隔套件和元件網址,以便在啟動解析器中啟用子封包解析支援。
- 無封裝更新使用已簽署的資訊清單:無封裝更新已改用已簽署的 protobuf 資訊清單格式,而非先前的舊版 OTA 資訊清單格式。
- 變更: fxr/1523918、 fxr/1455221、 fxr/1518416
- 錯誤:b/479282494
- 系統更新程式的設定功能遷移:將
concurrent_package_resolves和concurrent_blob_fetches設定遷移至設定功能,簡化更新設定管理作業。- 變更: fxr/1567633
- 錯誤:b/329519711
- 更新工具支援範圍內的 IPv6 位址:系統更新程式已從
url::Url遷移至http::Uri,可正確剖析及處理範圍內的 IPv6 位址。- 變更: fxr/1546608
- 錯誤:b/479282471
- 系統映像檔 OTA 復原備用方案:套件快取現在可確保 OTA 仍能在復原模式下繼續進行,即使系統映像檔損壞也沒問題,只有在明確要求時才會失敗。
- 變更: fxr/1585179
- 套件解析器的沙箱 HTTP 連線:套件解析器 TUF 用戶端和自動用戶端現在使用
fuchsia.net.http/Loader.Fetch進行 HTTP 連線,可提供更完善的網路隔離和沙箱功能。- 變更: fxr/1455468、 fxr/1453908
- 更新擴充功能新增 FDomain 支援:在套件更新 FIDL 擴充功能、模擬安裝程式和伺服器插座中,導入 FDomain 支援。
- 將 serve-archive 標示為實驗性質:
ffx repository serve-archive指令已重新命名為 kebab-case,並標示為實驗性質。- 變更: fxr/1574315
- 系統映像檔雜湊保護機制:隔離的 pkg-cache 現在會使用
system.base_merkle系統映像檔雜湊,保護主要產品 Blob 不受垃圾收集機制影響。- 變更: fxr/1583170
Starnix
Starnix 已進行下列更新:
- eBPF 強化功能和安全性修正:新增 eBPF 網路輔助程式和
sk_storage對應支援,擴大通訊端層級的可觀測性。透過嚴格的界線檢查、能力強制執行和防止除以零,強化 eBPF 驗證器,以防範本機權限提升。- 變更: fxr/1595234, fxr/1591628, fxr/1588131, fxr/1586729, fxr/1585097, fxr/1583375, fxr/1577870, fxr/1576256, fxr/1574700, fxr/1574702, fxr/1550171, fxr/1575913, fxr/1558421, fxr/1545120, fxr/1560093, fxr/1519337, fxr/1519336, fxr/1517736, fxr/1517616
- 錯誤:b/496701234、 b/494018486、 b/503810313、 b/496639039、 b/496316619、 b/485685969、 b/485971506
- VFS 和檔案系統改良:使用管道路徑查詢功能提升檔案系統效能,並實作同步 syscall (
sys_sync、sys_syncfs、sys_msync),確保資料持久性。確保遠端檔案連線安全,並針對截斷和分配作業實作不可分割的寫入鎖定。 - 核心系統和安全性功能:修正 UID/GID 管理中的本機提權漏洞,並透過 Unix Socket 驗證憑證。透過並行快取和正確繫結至
no-new-privs的執行功能,提升 SELinux/SEStarnix 效能。 - WaitQueue、Futex 和 Binder 效能:透過消除執行緒喚醒爭用、修正鎖定反轉,以及為跨交易的 Futex 等待新增優先權繼承,最佳化 Binder 效能。改善公平性,強制執行嚴格的先進先出排序,並解決相關的記憶體流失問題。
FUTEX_REQUEUE - KGSL、Magma 和 GPU 子系統:擴充 KGSL 裝置支援功能,納入內容、緩衝區、信號和指令執行,提升圖形算繪效果。以隨機連線和緩衝區 ID 取代直接 Magma 緩衝區物件曝光,確保 GPU 子系統安全。
- WLAN 和網路功能強化:透過 Qualcomm IPC 路由器插座 (
AF_QIPCRTR) 和 TCP/IP 調整的必要網路 sysctl,擴充網路功能。實作電源感知排程掃描 (PNO) 和介面統計資料的強化遙測功能,提升 Wi-Fi 可靠性。 - USB 子系統:導入初始 Starnix USB 模組,用於轉換 Android 至 Fuchsia 的 USB 裝置狀態。應用程式現在可透過新的 sysfs 節點讀取設定,並在 USB 狀態變更時接收
uevent通知。- 變更: fxr/1521527
- 指標重新啟動原因更新:如果 Starnix 發生當機,導致工作階段重新啟動,Fuchsia 重新啟動原因現在會正確回報為「Starnix Crash」,而非一般「kernel_panic」。
- 變更: fxr/1551540
儲存空間
儲存空間的更新內容如下:
- 預設啟用儲存空間主機:新的
storage-host架構現已在全球強制執行,取代舊版 DFv1 區塊驅動程式 (包括 C++fvm、gpt和ramdisk),並採用統一的 Rust 實作項目。 - Fxfs 效能和壓縮升級:Fxfs 現在支援 LZ4 Blob 壓縮,並導入背景排清功能,大幅提升大量寫入作業期間的效能。動態預先讀取也更新為 128KiB 的固定目標。
- 儲存驅動程式庫現代化:儲存空間驅動程式已遷移至
fdf::logger架構,且區塊伺服器導入了新的無執行緒跳躍 Rust 回呼介面,可實現更高效能的整合。 - 修正重大儲存空間錯誤:解決儲存空間層的重大穩定性問題,包括非同步區塊伺服器釋放後使用、F2FS 剖析當機和 GPT VMO 洩漏。
- IO 和 Storage FIDL API 變更:移除
fuchsia.io中的DeprecatedOpen和OnOpen,並刪除已淘汰的fuchsia.hardware.block程式庫。在符號連結上啟用管道化Open要求,以安全地關閉物件引數,同時維持連線。- 變更: fxr/1584813、 fxr/1549741、 fxr/1588508
- 錯誤:b/324080864、 b/470449582
測試
測試版已進行下列更新:
- 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 可見度。- 變更: fxr/1570853、 fxr/1594931、 fxr/1590116、 fxr/1517956
- 錯誤:b/496431586
- 效能和測試 CLI 工具:全新 CLI 工具可簡化本機工作流程,並導入
fx test-category查詢目錄中繼資料,以及test_filterer動態建構預先提交重試的篩選工作要求。此外,perfcompare指令碼也開放原始碼,提供下載及擷取成效指標的工作流程輔助工具。
計時
我們對「時間記錄」進行了以下更新:
- 在
PullSourceFIDL 通訊協定中新增Shutdown方法。這可讓 Timekeeper 要求時間來源在停止前,先保管其 Inspect 資料。- 變更: fxr/1418655
- 修正 Starnix
HrTimerManager啟動期間發生的系統全面性當機問題。 現在系統會記錄初始化失敗情形,並清楚發出信號,防止計時器子系統無限期封鎖指令。- 變更: fxr/1576303, fxr/1576301
- Starnix 時鐘作業效能提升約 3 倍。
Starnix 現在會使用記憶體對應時鐘進行標準 UTC 查閱,大幅降低 CPU 使用率。
- 變更: fxr/1510017
- 新增支援定期更新即時時鐘 (RTC) 和實驗性初始化策略。Timekeeper 現在會維護最新的 RTC 讀取值,並可選擇性接受次佳的 UTC 值。
- 修正時間軸初始化參照不正確的問題。現在系統會無條件重新整理 RTC 讀取作業,避免在系統啟動期間使用過時的正常運作時間參照。
- 變更: fxr/1488041
- 為時鐘實作項目啟用 Rust Next 繫結。這項作業可讓時鐘元件現代化,並允許
clockimpl與供應商樹狀結構中的最新 Rust 繫結搭配使用,同時將 Amlogic RTC 驅動程式遷移至 Rust。- 變更: fxr/1574673、 fxr/1566423
- 錯誤:b/500729232
工具鏈
工具鍊已進行下列更新:
- 修正
fx roll-compiler行為:更新指令碼,正確納入先前遭省略的linux-arm64Clang 工具鍊。- 變更: fxr/1553182
- 改善 Bazel 和 Clang 工具鍊整合:強化 Bazel
fuchsia_clang_ext模組,支援 CIPD 確保檔案,並將 Bazel Clang 警告與 GN 對齊,確保一致性。 - 改用 NS2 的預先建構 Go 工具鍊:更新建構程序,嚴格使用 roller 提供的 Fuchsia 啟用預先建構 Go 工具鍊。
- 變更: fxr/1561259、 fxr/1563613
工具
工具的更新內容如下:
- V2 二分搜尋引擎和自動化:將實驗性 V2 二分搜尋引擎升級為預設引擎,並在每個步驟導入
--script標記,以進行自動驗證測試。此外,也支援將 PIB 和 BIB 集直接傳遞至ffx product-bundle create。 - Check-Licenses 工具 V2 大幅改版:將
check-licensesCLI 重構為模組化串流管道,並提供獨立的子指令。這項大改造大幅提升了記憶體用量、並行安全性和可維護性,同時新增了指標架構。
fx
- FX 建構和工作流程改善:改善
fx結帳處理和疑難排解,並透過fx build --fuchsia_platform新增 Bazel 構件支援。此外,fx dis現在支援多個相符項目和 Unix 檔案名稱模式。 - 推出
fx repro --minimal指令。這會重現基礎架構建構作業,但僅限於未通過測試的目標,可大幅加快偵錯工作流程。- 變更: fxr/1586099
- 錯誤:b/484005938
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)。- 變更: fxr/1571520, fxr/1547147
- 錯誤:b/498747360
- 提升
ffx log輸出內容格式和穩定性。這項指令現在會遵守log_cmd.color設定、在嚴格模式中停用顏色,並在輸出串流關閉時乾淨地終止。- 變更: fxr/1566493、 fxr/1562373
- FFX 外掛程式簡稱:FFX 現在支援縮寫的子指令名稱 (例如
ffx target list的ffx t l、ffx component show的ffx c s)。這大幅提升了 CLI 人體工學,以及整體開發人員速度。- 變更: fxr/1496904、 fxr/1509324
- 錯誤:b/481711081
- 新增對
fx test和ffx test的系統記錄擷取支援。新的--capture-syslog標記會在測試執行期間擷取系統記錄 (預設為fx test啟用)。- 變更: fxr/1583261
- 錯誤:b/493306982
zxdb
- 偵錯工具 (zxdb) 強化功能:新增程序範圍的
until指令、切換影格時自動列印來源內容,以及設定中的主目錄路徑擴充功能。此外,也改善了非同步回溯追蹤的顯示方式,並解決了結構體欄位的命名空間衝突問題。
追蹤
我們對追蹤功能進行了以下更新:
- 追蹤資料移轉壓縮:在追蹤資料移轉期間新增 zstd 壓縮支援,平均下載速度提升 2.6 倍,移轉的資料大小減少 5.3 倍。
- 變更: fxr/1488043
- 手動緩衝區排清 API:在
TraceControllerFIDL 和新的排清 API 中新增RequestBufferFlush方法至NEXT,讓用戶端能更穩定地串流傳輸較小的資料區塊。 - 追蹤供應商 V2 通訊協定:導入供應商 V2 通訊協定和註冊 API,用於協商共用記憶體版本,讓追蹤工作階段同時支援 V1 和 V2 供應商。
- 中止執行中的追蹤工作階段:在
ffx trace stop中新增--abort選項,可強制終止執行中的工作階段,且不會儲存結果,確保內部拆解作業順利完成。 - 提升 Tracefs 效能:在所有 CPU 間條紋化事件,大幅提升平均讀取和寫入時間,進而提升 Tracefs 效能。
- 變更: fxr/1567894
- 標準化 CPU 用量指標:新增剖析和結構,追蹤追蹤記錄效能指標中的動態電壓和頻率調整 (DVFS) 處理速率,藉此計算標準化 CPU 使用率。
- 修正 LargeBlob 剖析問題:修正 FXT 剖析器中的問題,先前 32 位元大小欄位會遭到錯誤截斷,導致大型剖析器堆疊傾印失敗。
LargeBlob- 變更: fxr/1529698
- 追蹤工作階段生命週期和終止可靠性:防止非同步迴圈關閉競爭,並在連線中斷時持續捨棄狀態,避免工作階段停止運作,進而提升追蹤工作階段終止可靠性。
- 變更: fxr/1571027、 fxr/1556472、 fxr/1529792
- 錯誤:b/501462987
- 類別追蹤功能強化:預設啟用
kernel:power類別,追蹤 CPU 速度變化,並修正starnix類別的事件計數和誤報警告。 - 記憶體壓力追蹤:啟用
pressure_signaler元件的追蹤功能,正確發出memory_pressure計數器。- 變更: fxr/1529188
- 開機時的 Starnix 追蹤連線:為 Perfetto 消費者執行緒實作重試邏輯,處理在 Starnix 完全啟動前啟動追蹤工作階段的情況。
- 變更: fxr/1486558
UI
UI 方面有以下更新:
- 輸入管道效能最佳化:透過批次處理事件、提早篩選,以及移除不必要的記憶體配置,最佳化輸入管道處理作業。這可大幅縮短處理時間,並提升整體輸入回應速度。
- Scenic 中的非同步 Sysmem 互動:重構 Sysmem 互動 (例如權杖驗證和圖片匯入),以非同步方式執行。這樣可避免封鎖主執行緒、減少 VSync 停滯,並提升系統回應速度。
- 移除 Escher Legacy 3D 管道:移除舊版
PaperRenderer和相關聯的 3D 元件。這可簡化程式碼集,並大幅縮短編譯時間。- 變更: fxr/1547405、 fxr/1550981、 fxr/1551088
- 錯誤:b/494718197
- Flatland 版本發布圍欄和排程強化功能:新增
zx::counter版本發布圍欄支援,並允許TrustedFlatlandClients選擇不接收OnFramePresented事件。這些 API 變更可減少多餘的運算,並簡化影格排程。
影片
影片已更新下列內容:
- 已開啟 CodecFactory 和 StreamProcessor 通訊協定。將通訊協定標示為開放式,並新增
handle_unknown_method支援,確保回溯相容性。- 變更: fxr/1497179、 fxr/1488642
- 錯誤:b/478359574
- 從 TimelineFunction FIDL 中移除預設值。從
fuchsia.media.TimelineFunction移除@allow_deprecated_struct_defaults,支援 Python FIDL 繫結和媒體端對端測試。- 變更: fxr/1551463
- 錯誤:b/495658021
- 支援媒體工作階段,但設定最少。將
fuchsia.media.UsageReporter設為選用,因此media_session可以在最少的設定中運作,不需要完整堆疊的音訊。- 變更: fxr/1487076、 fxr/1487896
WLAN 和連線
WLAN 和連線功能有以下更新:
- 排程掃描 API:在
wlan_mlme.fidl和fullmac.fidl中新增StartScheduledScan和StopScheduledScan,啟用排程掃描功能。 - 機會無線加密 (OWE):新增 OWE 連線支援,包括握手實作和轉換元素剖析,以提升無線安全性。
- 喚醒租用和電源管理:整合喚醒租用功能,防止系統在重要的 WLAN 作業期間進入休眠狀態,並在 SuspendMode 期間啟用 APF 執行作業。
- WLAN 驅動程式重寫和記錄遷移:以 Rust 語言重寫
wlanif驅動程式庫,消除 C-FFI 負擔,將連線能力驅動程式遷移至fdf::DriverBase2,並採用現代fdf::logger框架。 - WLAN FIDL API 重組:將型別從
fuchsia.wlan.common重新放置到專屬程式庫中,在 Policy 和 Core 層之間建立更明確的 API 邊界。- 變更: fxr/1577035, fxr/1577034
- 驅動程式穩定性與當機緩解措施 (brcmfmac):解決
brcmfmac中的多項當機風險,包括裝置關機、韌體復原和並行 PHY 重設,以提升驅動程式庫穩定性。 - 遙測和指標強化功能:擴充遙測功能,記錄偏好網路卸載 (PNO) 掃描指標、Wi-Fi 停止錯誤,以及連線嘗試,並傳送至檢查工具。
- WLAN 連線修正:透過快取無序 EAPOL 指示,並準確轉送硬體國家/地區代碼變更,提升連線可靠性。
- 變更: fxr/1510096、 fxr/1482944、 fxr/1578896、 fxr/1322614
- 錯誤:b/485660049
UWB 供應商 API 重構:重構
fuchsia.hardware.uwb.VendorAPI,使用新的Device通訊協定,透過管道狀態明確管理生命週期。- 變更: fxr/1481924
修正 wlanix 指標摘要統計資料。已停用 wlanix 指標的摘要功能,確保系統能準確計算有多個樣本的指標。
- 變更: fxr/1567436