SDCardFS è deprecato sui dispositivi lanciati con Android 11 o versioni successive e che eseguono la versione kernel 5.4 o successive. Su questi dispositivi, i test VTS non consentono di elencare i file system montati come SDCardFS. I dispositivi lanciati con Android 11 o versioni successive, ma che eseguono la versione kernel 4.19 o precedenti, possono continuare a utilizzare SDCardFS, ma Google non fornisce ulteriore assistenza.
Prima della sua deprecazione, SDCardFS forniva un modo per controllare l'accesso alla memoria interna emulata e alle schede SD esterne, consentendo alle app di accedere solo ai dati pertinenti. Inoltre, forniva un livello di insensibilità alle maiuscole/minuscole, nonché un monitoraggio aggiuntivo dello spazio di archiviazione.
Funzionalità di sostituzione di SDCardFS
La sostituzione di SDCardFS utilizza diverse funzionalità del file system del kernel Linux per ottenere risultati simili. L'insensibilità alle maiuscole/minuscole viene gestita direttamente dal file system. Di conseguenza, i tempi di ricerca sono quasi identici nelle cartelle sensibili e insensibili alle maiuscole/minuscole, eliminando il rallentamento delle cartelle di grandi dimensioni di SDCardFS. Il monitoraggio delle quote che SDCardFS eseguiva per raccogliere rapidamente i dati di archiviazione per le impostazioni è ora configurato dallo spazio utente utilizzando le quote di progetto. In alcuni contesti sensibili alle prestazioni, le directory vengono montate in loco. Una nuova implementazione di FUSE fornisce l'archiviazione mirata per l'accesso diretto al file system, principalmente per supportare l'oscuramento dei dati sulla posizione.
Configurare la funzionalità di sostituzione di SDCard
Per attivare le quote di progetto e la conversione delle maiuscole/minuscole per lo spazio di archiviazione emulato senza SDCardFS su un dispositivo lanciato con Android 11 o versioni successive, eredita da emulated_storage.mk nel file device.mk:
$(call inherit-product, $(SRC_TARGET_DIR)/product/emulated_storage.mk)
Avviso: non eseguire questa operazione sui dispositivi lanciati con Android 10 o versioni precedenti, poiché l'insensibilità alle maiuscole/minuscole nativa del file system non è compatibile con le impostazioni di crittografia basata su file utilizzate su questi dispositivi. È necessario continuare a utilizzare SDCardFS su questi dispositivi.
Motivi della deprecazione di SDCardFS
Esistono vari motivi per cui SDCardFS è deprecato.
Stabilità
SDCardFS presenta diverse condizioni di race relative alla sensibilità alle maiuscole/minuscole, nonché alcuni problemi relativi a situazioni di memoria insufficiente. Le ricerche insensibili alle maiuscole/minuscole possono essere piuttosto lente nelle directory di grandi dimensioni perché le ricerche devono attraversare la directory inferiore per trovare casi alternativi. Anche l'accesso simultaneo ai file system superiore e inferiore può causare problemi.
Parità upstream
SDCardFS richiede patch aggiuntive al VFS per supportare la modifica delle opzioni sui montaggi di bind. Queste patch comportano un lavoro aggiuntivo per accettare le modifiche upstream a queste aree. Le funzionalità di SDCardFS possono essere replicate dai componenti upstream, eliminando questo punto critico.
Parità delle funzionalità con l'API
Nella versione precedente di Android, l'archiviazione mirata limitava l'accesso a tipi specifici di metadati. L'accesso diretto allo spazio di archiviazione tramite SDCardFS non supporta queste funzionalità di archiviazione con ambito.