SDCardFS dejó de estar disponible en dispositivos que ejecutan Android 11 o versiones posteriores y que ejecutan la versión 5.4 o posterior del kernel. En estos dispositivos, las pruebas de VTS no permiten sistemas de archivos activados que aparezcan como SDCardFS. Los dispositivos que se lancen con Android 11 o versiones posteriores, pero que ejecuten la versión 4.19 o una anterior del kernel, pueden seguir usando SDCardFS, pero Google no proporciona asistencia adicional.
Antes de su baja, SDCardFS proporcionaba una forma de controlar el acceso al almacenamiento interno emulado y a las tarjetas SD externas, lo que permitía que las apps accedieran solo a los datos pertinentes para ellas. Además, proporcionó una capa de insensibilidad a mayúsculas y minúsculas, así como un seguimiento de almacenamiento adicional.
Funcionalidad de reemplazo de SDCardFS
El reemplazo de SDCardFS usa varias funciones del sistema de archivos del kernel de Linux para lograr resultados similares. El sistema de archivos controla directamente la no distinción entre mayúsculas y minúsculas, lo que genera tiempos de búsqueda casi idénticos en carpetas que distinguen y no distinguen entre mayúsculas y minúsculas, y elimina la ralentización de carpetas grandes de SDCardFS. El seguimiento de cuotas que SDCardFS realizaba para recopilar rápidamente datos de almacenamiento para la configuración ahora se configura desde el espacio del usuario con cuotas de proyecto. En algunos contextos sensibles al rendimiento, los directorios se vinculan en su lugar. Una nueva implementación de FUSE proporciona almacenamiento específico para el acceso directo al sistema de archivos, principalmente para admitir la ocultación de información de ubicación.
Cómo configurar la función de reemplazo de la tarjeta SD
Para habilitar las cuotas de proyecto y el plegado de mayúsculas y minúsculas para el almacenamiento emulado sin SDCardFS en un dispositivo que se lanzó con Android 11 o versiones posteriores, hereda de emulated_storage.mk
en el archivo device.mk
:
$(call inherit-product, $(SRC_TARGET_DIR)/product/emulated_storage.mk)
Advertencia: No hagas esto en dispositivos que se lanzaron con Android 10 o versiones anteriores, ya que la falta de distinción entre mayúsculas y minúsculas nativa del sistema de archivos es incompatible con la configuración de encriptación basada en archivos que se usa en esos dispositivos. Es necesario seguir usando SDCardFS en esos dispositivos.
Motivos para dar de baja SDCardFS
Existen varios motivos 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 situaciones de poca memoria. Las búsquedas que no distinguen mayúsculas de minúsculas pueden ser bastante lentas en directorios grandes, ya que deben 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 de upstream
SDCardFS requiere parches adicionales en el VFS para admitir el cambio de opciones en las vinculaciones de montaje. Estos parches generan trabajo adicional para aceptar los cambios ascendentes en estas áreas. Las funciones de SDCardFS se pueden replicar con componentes upstream, lo que elimina este punto problemático.
Paridad de funciones con la API
En la versión anterior de Android, el almacenamiento específico limitaba el acceso a ciertos tipos de metadatos. El acceso directo al almacenamiento a través de SDCardFS no admite estas funciones de almacenamiento con permisos.