SDCardFS está obsoleto en dispositivos que se inician con Android 11 o superior y ejecutan la versión del kernel 5.4 o superior. En dichos dispositivos, las pruebas VTS no permiten sistemas de archivos montados listados como SDCardFS. Los dispositivos que se inician con Android 11 o superior pero ejecutan la versión del kernel 4.19 o inferior pueden seguir usando SDCardFS, pero Google no brinda soporte adicional.
Antes de su obsolescencia, SDCardFS proporcionaba una forma de controlar el acceso al almacenamiento interno emulado y a tarjetas SD externas, permitiendo que las aplicaciones accedieran solo a los datos relevantes para ellas. Además, proporcionó una capa de insensibilidad entre mayúsculas y minúsculas, así como un seguimiento de almacenamiento adicional.
Funcionalidad de reemplazo de SDCardFS
El reemplazo de SDCardFS utiliza varias características del sistema de archivos del kernel de Linux para lograr resultados similares. La insensibilidad a mayúsculas y minúsculas es manejada directamente por el sistema de archivos; esto da como resultado tiempos de búsqueda casi idénticos en carpetas que distinguen entre mayúsculas y minúsculas, lo que elimina la desaceleración de las carpetas grandes de SDCardFS. El seguimiento de cuotas que hacía SDCardFS para recopilar rápidamente datos de almacenamiento para la configuración ahora se configura desde el espacio de usuario mediante cuotas de proyecto. En algunos contextos sensibles al rendimiento, los directorios están enlazados y montados en su lugar. Una nueva implementación de FUSE proporciona almacenamiento con alcance para acceso directo al sistema de archivos, principalmente para admitir la redacción de información de ubicación.
Configurar la funcionalidad de reemplazo de tarjeta SD
Para habilitar las cuotas de proyectos y el plegado de casos para el almacenamiento emulado sin SDCardFS en un dispositivo que se inició con Android 11 o superior, herede de emulated_storage.mk
en el archivo device.mk
:
$(call inherit-product, $(SRC_TARGET_DIR)/product/emulated_storage.mk)
Advertencia: No haga esto en dispositivos que se iniciaron con Android 10 o inferior, ya que la insensibilidad nativa entre mayúsculas y minúsculas del sistema de archivos es incompatible con la configuración de cifrado basada en archivos utilizada en dichos dispositivos. Es necesario seguir usando SDCardFS en dichos dispositivos.
Razones para desaprobar SDCardFS
Hay varias razones para desaprobar SDCardFS.
Estabilidad
SDCardFS sufre varias condiciones de carrera relacionadas con la distinción entre mayúsculas y minúsculas, así como algunos problemas relacionados con circunstancias de poca memoria. Las búsquedas que no distinguen entre mayúsculas y minúsculas pueden ser bastante lentas en directorios grandes porque las búsquedas tienen que recorrer el directorio inferior para encontrar casos alternativos. Acceder a los sistemas de archivos superior e inferior al mismo tiempo también puede generar problemas.
Paridad ascendente
SDCardFS requiere parches adicionales para VFS para admitir el cambio de opciones en montajes de enlace. Estos parches generan trabajo adicional para aceptar cambios ascendentes en estas áreas. Las funciones de SDCardFS se pueden replicar mediante componentes ascendentes, eliminando este problema.
Paridad de funciones con API
En la versión anterior de Android, el almacenamiento limitado limitaba el acceso a tipos particulares de metadatos. El acceso directo al almacenamiento a través de SDCardFS no admite estas funciones de almacenamiento con alcance.