SDCardFS dejó de estar disponible en dispositivos que se inician con Android 11 o versiones posteriores y ejecutan la versión 5.4 del kernel o una posterior. En esos dispositivos, las pruebas de VTS no permiten sistemas de archivos activados que aparezcan como SDCardFS. Los dispositivos que se inician con Android 11 o versiones posteriores, pero que ejecutan el kernel 4.19 o versiones anteriores, 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 relevantes. Además, proporcionó una capa de distinción entre mayúsculas y minúsculas, además de 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 distinción entre mayúsculas y minúsculas, lo que genera tiempos de búsqueda casi idénticos en las carpetas que distinguen mayúsculas de minúsculas y en las que no lo hacen, lo que quita la ralentización de las 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 de usuario con cuotas de proyecto. En algunos contextos sensibles al rendimiento, los directorios se activan mediante vinculaciones. 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 funcionalidad de reemplazo de la tarjeta SD
Para habilitar las cuotas de proyectos y la combinación de mayúsculas y minúsculas para el almacenamiento emulado sin SDCardFS en un dispositivo que se inició 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 realices esta acción en dispositivos que se lanzaron con Android 10 o versiones anteriores, ya que la insensibilidad a 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 varias razones para dar de baja SDCardFS.
Estabilidad
SDCardFS sufre de varias condiciones de carrera relacionadas con la sensibilidad a 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 los directorios grandes porque 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 ascendente
SDCardFS requiere parches adicionales en el VFS para admitir opciones de cambio en las activaciones de vinculación. Estos parches generan trabajo adicional para aceptar cambios upstream en estas áreas. Los componentes upstream pueden replicar las funciones de SDCardFS, lo que quita este problema.
Paridad de funciones con la API
En la versión anterior de Android, el almacenamiento específico limitaba el acceso a tipos específicos de metadatos. El acceso directo al almacenamiento a través de SDCardFS no admite estas funciones de almacenamiento con alcance.