SDCardFS est obsolète sur les appareils lancés avec Android 11 ou version ultérieure et exécutant la version 5.4 ou ultérieure du noyau. Sur ces appareils, les tests VTS n'autorisent pas les systèmes de fichiers montés listés comme SDCardFS. Les appareils lancés avec Android 11 ou version ultérieure, mais exécutant la version 4.19 ou antérieure du noyau, peuvent continuer à utiliser SDCardFS, mais Google ne fournit pas d'assistance supplémentaire.
Avant d'être obsolète, SDCardFS permettait de contrôler l'accès à la mémoire de stockage interne émulée et aux cartes SD externes, ce qui permettait aux applications d'accéder uniquement aux données qui les concernaient. De plus, il fournissait une couche d'insensibilité à la casse, ainsi qu'un suivi de stockage supplémentaire.
Fonctionnalité de remplacement de SDCardFS
Le remplacement de SDCardFS utilise plusieurs fonctionnalités du système de fichiers du noyau Linux pour obtenir des résultats similaires. L'insensibilité à la casse est gérée directement par le système de fichiers. Les temps de recherche sont donc presque identiques dans les dossiers sensibles à la casse et non sensibles à la casse, ce qui élimine le ralentissement important des dossiers de SDCardFS. Le suivi des quotas que SDCardFS effectuait pour collecter rapidement les données de stockage pour les paramètres est désormais configuré à partir de l'espace utilisateur à l'aide de quotas de projet. Dans certains contextes sensibles aux performances, les répertoires sont montés en place. Une nouvelle implémentation FUSE fournit un espace de stockage cloisonné pour l'accès direct au système de fichiers, principalement pour prendre en charge le masquage des informations de localisation.
Configurer la fonctionnalité de remplacement de SDCard
Pour activer les quotas de projet et le pliage de la casse pour le stockage émulé sans SDCardFS sur un appareil lancé avec Android 11 ou version ultérieure, héritez de emulated_storage.mk dans le fichier device.mk :
$(call inherit-product, $(SRC_TARGET_DIR)/product/emulated_storage.mk)
Avertissement : Ne le faites pas sur les appareils lancés avec Android 10 ou version antérieure, car l'insensibilité à la casse native du système de fichiers est incompatible avec les paramètres de chiffrement basés sur des fichiers utilisés sur ces appareils. Il est nécessaire de continuer à utiliser SDCardFS sur ces appareils.
Raisons de l'obsolescence de SDCardFS
Il existe plusieurs raisons de rendre SDCardFS obsolète.
Stabilité
SDCardFS souffre de plusieurs conditions de concurrence concernant la sensibilité à la casse, ainsi que de certains problèmes liés aux situations de mémoire insuffisante. Les recherches non sensibles à la casse peuvent être assez lentes dans les grands répertoires, car elles doivent parcourir le répertoire inférieur pour trouver d'autres cas. L'accès simultané aux systèmes de fichiers supérieur et inférieur peut également entraîner des problèmes.
Parité en amont
SDCardFS nécessite des correctifs supplémentaires pour le VFS afin de prendre en charge la modification des options sur les montages de liaison. Ces correctifs nécessitent un travail supplémentaire pour accepter les modifications en amont dans ces zones. Les fonctionnalités de SDCardFS peuvent être répliquées par des composants en amont, ce qui élimine ce point faible.
Parité des fonctionnalités avec l'API
Dans la version précédente d'Android, l'espace de stockage cloisonné limitait l'accès à certains types de métadonnées. L'accès direct au stockage via SDCardFS n'est pas compatible avec ces fonctionnalités d'espace de stockage cloisonné.