SDCardFS 棄用

SDCardFS 在搭載 Android 11 或更高版本並運行內核版本 5.4 或更高版本的設備上已棄用。在此類設備上, VTS 測試不允許掛載的文件系統列為 SDCardFS。搭載 Android 11 或更高版本但運行內核版本 4.19 或更低版本的設備可以繼續使用 SDCardFS,但 Google 不提供額外支持。

在棄用之前,SDCardFS 提供了一種方法來控制對模擬內部存儲和外部 SD 卡的訪問,允許應用程序僅訪問與其相關的數據。此外,它提供了一層不區分大小寫,以及一些額外的存儲跟踪。

SDCardFS 替換功能

SDCardFS 的替代品使用了幾個 Linux 內核文件系統功能來實現類似的結果。不區分大小寫由文件系統直接處理;這導致在區分大小寫和不區分大小寫的文件夾中查找時間幾乎相同,從而消除了 SDCardFS 中大型文件夾的減速。 SDCardFS 為快速收集設置的存儲數據而進行的配額跟踪現在是使用項目配額從用戶空間配置的。在某些性能敏感的上下文中,目錄被綁定安裝在適當的位置。一個新的 FUSE 實現為直接文件系統訪問提供了範圍存儲,主要是為了支持位置信息的編輯。

配置 SDCard 更換功能

要為沒有 SDCardFS 的模擬存儲啟用項目配額和案例折疊,請從device.mk文件中的emulated_storage.mk繼承:

$(call inherit-product, $(SRC_TARGET_DIR)/product/emulated_storage.mk)

僅對搭載 Android 11 或更高版本的設備執行此操作。

為什麼要棄用 SDCardFS?

棄用 SDCardFS 有多種原因。

穩定

SDCardFS 存在幾個關於區分大小寫的競爭條件,以及一些關於低內存情況的問題。在大型目錄中,不區分大小寫的查找可能會相當慢,因為查找必須遍歷較低的目錄才能找到替代案例。同時訪問上層和下層文件系統也會導致問題。

上游平價

SDCardFS 需要對 VFS 附加補丁以支持更改綁定掛載的選項。這些補丁會導致額外的工作來接受對這些區域的上游更改。 SDCardFS 的特性可以被上游組件複製,消除了這個痛點。

功能與 API 對等

在之前的 Android 版本中,作用域存儲限制了對特定類型元數據的訪問。通過 SDCardFS 的直接存儲訪問不支持這些範圍存儲功能。