Android 向來都支援外部儲存配件 (例如 SD 卡),不過 過去這些配件之前 只限於簡易檔案儲存空間 他們的預期行為,以及提供給專案人員的最低資料保護機制 傳統外部儲存空間。 Android 6.0 推出了 採用外部儲存媒體,做為內部的運作 如果 30 天內讀取資料不到一次 建議使用 Coldline Storage
採用外部儲存媒體時,資料會經過格式化和加密,僅供 一次使用一部 Android 裝置。因為媒體和媒體 到原先採用它的 Android 裝置下載後 即可安全地儲存應用程式 所有使用者的私人資料。
使用者在採用的應用程式中插入新的儲存媒體 (例如 SD 卡) 時
Android 會詢問他們使用媒體的方式。他們可以選擇
採用媒體、格式化和加密媒體,或繼續使用媒體
適用於簡易檔案儲存空間如果選擇採用,這個平台會提供
並遷移主要共用儲存空間內容 (通常掛接在
/sdcard
) 新採用的媒體,釋出寶貴空間
內部儲存空間有別於傳統儲存空間,因為
使用
MBR、
合併儲存空間使用量
GPT
因此檔案儲存空間上限約為 9ZB 左右
開發人員必須符合下列條件,才能將應用程式放在採用的儲存媒體上
透過 android:installLocation
屬性表示支援。
系統會自動安裝支援應用程式的新安裝檔:
儲存裝置上,且使用者可以移動支援的應用程式。
。已將應用程式移至已採用
系統就會在退出媒體時記住媒體
並在重新插入媒體時傳回。
安全性
平台會為每部已採用的裝置隨機產生加密金鑰 並將這些檔案儲存在 Android 裝置的內部儲存空間中。這個 有效地將採用的媒體做為內部儲存空間的安全。索引鍵為 與採用的分區 GUID 建立關聯。
如果裝置設為使用檔案型加密 (FBE) 內部儲存空間,並採用 FBE 和中繼資料加密。否則 採用型儲存空間會使用全磁碟 加密 (FDE)。
採用裝置的磁碟機配置與內部資料同步顯示 分區,包括 SELinux 標籤等。如果支援多使用者 原本採用的儲存裝置也可支援多人使用, 隔離程度與內部儲存空間相同
由於採用的儲存裝置的內容與 採用這項功能的 Android 裝置不得擷取加密金鑰 因此無法掛接儲存裝置 如果其他位置需要使用資源 Compute Engine 有權終止工作
如果您的裝置使用 FBE,請參閱 FBE 說明文件和中繼資料 加密說明文件,瞭解如何設定 FBE 和中繼資料加密功能 共用儲存空間
效能和穩定性
只在穩定位置 (例如 電池槽或保護蓋後方,應考量到 以避免意外遺失或損毀資料。尤其是 USB 請勿將連接到手機或平板電腦的裝置視為採用率。 常見的例外情況是連接電視型的外部 USB 隨身碟 裝置,因為整部電視通常都安裝在穩定的位置。
使用者採用新的儲存裝置時,該平台會執行基準測試 比較其效能與內部儲存空間如果採用的裝置為 遠比內部儲存空間慢,但平台會警告使用者 也可能影響體驗品質這個基準取自實際的 I/O 熱門 Android 應用程式的表現目前,Android 開放原始碼計畫的實作程序 警示訊息只會超過單一門檻,但裝置製造商可能會調整 例如,在卡片極慢時完全拒絕採用。
採用的裝置必須採用支援 POSIX 的檔案系統
權限和擴充屬性,例如 ext4
或
f2fs
。為獲得最佳效能,f2fs
檔案系統為
對於以 Flash 為基礎的儲存裝置,則建議使用。
執行定期閒置維護作業時,平台發生問題
FI_TRIM
。
目前的 SD 卡規格不支援 DISCARD
指令;但核心會改回使用 ERASE
指令
以及選擇用來進行最佳化的 SD 卡韌體。
測試
如要測試採用儲存空間是否正常運作,請執行以下 CTS 測試:
cts-tradefed run commandAndExit cts-dev \ -m CtsAppSecurityHostTestCases \ -t android.appsecurity.cts.AdoptableHostTest
在裝置沒有裝置的情況下,驗證 USB 隨身碟和 SD 卡的行為 內建插槽,或是將 USB 連接器用於使用中的 ADB 連線,請使用:
adb shell sm set-virtual-disk true