SDCardFS 棄用

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

在棄用之前,SDCardFS 提供了一種控制對模擬內部儲存和外部 SD 卡的存取的方法,允許應用程式僅存取與其相關的資料。此外,它還提供了一層不區分大小寫的功能,以及一些額外的儲存追蹤。

SDCardFS 替換功能

SDCardFS 的替代品使用多個 Linux 核心檔案系統功能來實現類似的結果。不區分大小寫由檔案系統直接處理;這導致區分大小寫和不區分大小寫的資料夾的查找時間幾乎相同,從而消除了 SDCardFS 中大型資料夾的減速。 SDCardFS 為快速收集設定儲存資料而進行的配額追蹤現在使用專案配額從使用者空間進行設定。在某些效能敏感的上下文中,目錄被綁定安裝到位。新的 FUSE 實作為直接檔案系統存取提供了範圍存儲,主要是為了支援位置資訊的編輯。

配置SD卡更換功能

若要在使用 Android 11 或更高版本啟動的裝置上啟用不帶 SDCardFS 的模擬儲存的專案配額和大小寫折疊,請從device.mk檔案中的emulated_storage.mk繼承:

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

警告:請勿在使用 Android 10 或更低版本啟動的裝置上執行此操作,因為檔案系統本機不區分大小寫與此類裝置上使用的基於檔案的加密設定不相容。有必要在此類設備上繼續使用SDCardFS。

棄用 SDCardFS 的原因

棄用 SDCardFS 的原因有很多。

穩定

SDCardFS 存在一些與大小寫敏感相關的競爭條件,以及一些與低記憶體環境有關的問題。在大型目錄中,不區分大小寫的查找可能會相當慢,因為查找必須遍歷較低的目錄才能找到替代的情況。同時存取上層和下層檔案系統也會導致問題。

上游奇偶校驗

SDCardFS 需要對 VFS 附加修補程式以支援更改綁定安裝上的選項。這些補丁會導致額外的工作來接受這些區域的上游變更。 SDCardFS的功能可以被上游元件複製,消除了這個痛點。

與 API 的功能對等

在先前的 Android 版本中,作用域儲存限制了對特定類型元資料的存取。透過 SDCardFS 的直接儲存存取不支援這些範圍儲存功能。