SDCardFS-Veraltung

SDCardFS ist auf Geräten veraltet, die mit Android 11 oder höher gestartet werden und auf denen die Kernel-Version 5.4 oder höher ausgeführt wird. Auf solchen Geräten lassen VTS-Tests keine gemounteten Dateisysteme zu, die als SDCardFS aufgeführt sind. Geräte, die mit Android 11 oder höher starten, aber Kernel-Version 4.19 oder niedriger ausführen, können weiterhin SDCardFS verwenden, Google bietet jedoch keine zusätzliche Unterstützung.

Vor seiner Abschaffung bot SDCardFS eine Möglichkeit, den Zugriff auf emulierten internen Speicher und externe SD-Karten zu steuern, sodass Apps nur auf die für sie relevanten Daten zugreifen konnten. Darüber hinaus wurde eine Schicht zur Unempfindlichkeit gegenüber Groß- und Kleinschreibung sowie eine zusätzliche Speicherverfolgung bereitgestellt.

SDCardFS-Ersatzfunktionalität

Der Ersatz für SDCardFS nutzt mehrere Funktionen des Linux-Kernel-Dateisystems, um ähnliche Ergebnisse zu erzielen. Die Groß-/Kleinschreibung wird direkt vom Dateisystem gehandhabt; Dies führt zu nahezu identischen Suchzeiten in Ordnern, bei denen die Groß-/Kleinschreibung beachtet wird, und bei Ordnern, bei denen die Groß-/Kleinschreibung nicht beachtet wird, wodurch die große Ordnerverlangsamung von SDCardFS beseitigt wird. Die Kontingentverfolgung, die SDCardFS durchgeführt hat, um Speicherdaten für Einstellungen schnell zu sammeln, wird jetzt über den Benutzerbereich mithilfe von Projektkontingenten konfiguriert. In einigen leistungskritischen Kontexten werden Verzeichnisse an Ort und Stelle gebunden. Eine neue FUSE-Implementierung bietet bereichsbezogenen Speicher für den direkten Zugriff auf das Dateisystem, hauptsächlich um die Schwärzung von Standortinformationen zu unterstützen.

Konfigurieren Sie die SDCard-Ersatzfunktion

Um Projektkontingente und Case-Folding für emulierten Speicher ohne SDCardFS auf einem Gerät zu aktivieren, das mit Android 11 oder höher gestartet wurde, erben Sie von emulated_storage.mk in der Datei device.mk :

$(call inherit-product, $(SRC_TARGET_DIR)/product/emulated_storage.mk)

Warnung: Tun Sie dies nicht auf Geräten, die mit Android 10 oder niedriger gestartet wurden, da die native Berücksichtigung der Groß-/Kleinschreibung im Dateisystem nicht mit den auf solchen Geräten verwendeten dateibasierten Verschlüsselungseinstellungen kompatibel ist. Auf solchen Geräten muss SDCardFS weiterhin verwendet werden.

Gründe, SDCardFS abzulehnen

Es gibt verschiedene Gründe, SDCardFS abzulehnen.

Stabilität

SDCardFS leidet unter mehreren Race-Conditions hinsichtlich der Groß-/Kleinschreibung sowie einigen Problemen im Zusammenhang mit unzureichendem Speicher. Suchvorgänge ohne Berücksichtigung der Groß-/Kleinschreibung können in großen Verzeichnissen ziemlich langsam sein, da Suchvorgänge das untere Verzeichnis durchsuchen müssen, um alternative Groß-/Kleinschreibung zu finden. Der gleichzeitige Zugriff auf das obere und untere Dateisystem kann ebenfalls zu Problemen führen.

Upstream-Parität

SDCardFS erfordert zusätzliche Patches für das VFS, um das Ändern von Optionen bei Bind-Mounts zu unterstützen. Diese Patches erfordern zusätzlichen Aufwand, um Änderungen in diesen Bereichen vorab zu akzeptieren. Die Funktionen von SDCardFS können von Upstream-Komponenten repliziert werden, wodurch dieses Problem beseitigt wird.

Funktionsparität mit API

In der vorherigen Version von Android beschränkte der bereichsbezogene Speicher den Zugriff auf bestimmte Arten von Metadaten. Der direkte Speicherzugriff über SDCardFS unterstützt diese bereichsbezogenen Speicherfunktionen nicht.