SDCardFS est obsolète sur les appareils qui démarrent avec Android 11 ou version ultérieure et exécutent le kernel version 5.4 ou ultérieure. Sur ces appareils, les tests VTS n'autorisent pas les systèmes de fichiers installés listés comme SDCardFS. Les appareils qui démarrent avec Android 11 ou version ultérieure, mais qui exécutent le kernel version 4.19 ou version antérieure, peuvent continuer à utiliser SDCardFS, mais Google ne fournit pas d'assistance supplémentaire.
Avant son abandon, SDCardFS permettait de contrôler l'accès au stockage interne émulé et aux cartes SD externes, ce qui permettait aux applications d'accéder uniquement aux données qui les concernaient. De plus, il a fourni une couche d'insensibilité à la casse, ainsi qu'un suivi de l'espace de stockage supplémentaire.
Fonctionnalité de remplacement de SDCardFS
Le remplacement de SDCardFS utilise plusieurs fonctionnalités de système de fichiers de kernel Linux pour obtenir des résultats similaires. La non-distinction entre majuscules et minuscules 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 des grands dossiers de SDCardFS. Le suivi des quotas effectué par SDCardFS pour collecter rapidement des données de stockage pour les paramètres est désormais configuré depuis l'espace utilisateur à l'aide de quotas de projets. Dans certains contextes sensibles aux performances, les répertoires sont installés en place. Une nouvelle implémentation de FUSE fournit un espace de stockage cloisonné pour l'accès direct au système de fichiers, principalement pour prendre en charge la suppression des informations de localisation.
Configurer la fonctionnalité de remplacement de la carte SD
Pour activer les quotas de projet et le pliage de casse pour l'espace de 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 : N'effectuez pas cette opération sur les appareils équipés d'Android 10 ou version antérieure, car l'insensibilité native à la casse du système de fichiers est incompatible avec les paramètres de chiffrement basé sur les fichiers utilisés sur ces appareils. Vous devez continuer à utiliser SDCardFS sur ces appareils.
Motifs de l'abandon de SDCardFS
Il existe plusieurs raisons d'abandonner SDCardFS.
Stabilité
SDCardFS souffre de plusieurs conditions de concurrence concernant la sensibilité à la casse, ainsi que de certains problèmes liés à une faible quantité de mémoire. Les recherches insensibles à 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érieurs et inférieurs 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 les options de modification sur les montages de liaison. Ces correctifs entraînent un travail supplémentaire pour accepter les modifications en amont dans ces domaines. Les fonctionnalités de SDCardFS peuvent être répliquées par des composants en amont, éliminant ainsi ce problème.
Parité des fonctionnalités avec l'API
Dans la version précédente d'Android, le stockage avec portée 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 de stockage de portée.