Abandon de SDCardFS

SDCardFS est obsolète sur les appareils lancés avec Android 11 ou supérieur et exécutant la version 5.4 ou supérieure du noyau. Sur de tels appareils, les tests VTS n'autorisent pas les systèmes de fichiers montés répertoriés comme SDCardFS. Les appareils lancés avec Android 11 ou version ultérieure mais exécutant la version 4.19 ou inférieure du noyau peuvent continuer à utiliser SDCardFS, mais Google ne fournit pas de support supplémentaire.

Avant sa dépréciation, SDCardFS fournissait un moyen de contrôler l'accès au stockage interne émulé et aux cartes SD externes, permettant aux applications d'accéder uniquement aux données qui les concernent. De plus, il fournissait une couche d’insensibilité à la casse, ainsi qu’un suivi de stockage supplémentaire.

Fonctionnalité de remplacement 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 ; cela se traduit par des temps de recherche presque identiques dans les dossiers sensibles à la casse et insensibles à la casse, supprimant ainsi le ralentissement des dossiers volumineux de SDCardFS. Le suivi des quotas effectué par SDCardFS pour collecter rapidement les données de stockage pour les paramètres est désormais configuré à partir de l'espace utilisateur à l'aide des quotas de projet. Dans certains contextes sensibles aux performances, les répertoires sont montés en liaison sur place. Une nouvelle implémentation de FUSE fournit un stockage étendu pour un accès direct au système de fichiers, principalement pour prendre en charge la rédaction des informations d'emplacement.

Configurer la fonctionnalité de remplacement de la carte SD

Pour activer les quotas de projet et le pliage de cas 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 faites pas cela sur les appareils lancés avec Android 10 ou une version antérieure, car l'insensibilité native à la casse du système de fichiers est incompatible avec les paramètres de chiffrement basés sur les fichiers utilisés sur ces appareils. Il est nécessaire de continuer à utiliser SDCardFS sur de tels appareils.

Raisons de déprécier SDCardFS

Il existe plusieurs raisons de déprécier SDCardFS.

La stabilité

SDCardFS souffre de plusieurs conditions de concurrence concernant la sensibilité à la casse, ainsi que de certains problèmes liés aux circonstances de mémoire insuffisante. Les recherches insensibles à la casse peuvent être plutôt lentes dans les grands répertoires car les recherches doivent parcourir le répertoire inférieur pour trouver d'autres cas. Accéder simultanément aux systèmes de fichiers supérieur et inférieur peut également entraîner des problèmes.

Parité amont

SDCardFS nécessite des correctifs supplémentaires pour le VFS pour prendre en charge la modification des options sur les montages de liaison. Ces correctifs entraînent un travail supplémentaire pour accepter les modifications en amont de ces zones. Les fonctionnalités de SDCardFS peuvent être répliquées par des composants en amont, supprimant ainsi ce problème.

Parité des fonctionnalités avec l'API

Dans la version précédente d'Android, le stockage limité limitait l'accès à des types particuliers de métadonnées. L'accès direct au stockage via SDCardFS ne prend pas en charge ces fonctionnalités de stockage étendues.