Прекращение поддержки SDCardFS

SDCardFS больше не поддерживается на устройствах с Android 11 или более поздней версии и ядром 5.4 или более поздней версии. На таких устройствах тестирование VTS не допускает смонтированные файловые системы, указанные как SDCardFS. Устройства, на которых установлена ОС Android 11 или более поздней версии, но используется версия ядра 4.19 или более ранняя, могут продолжать использовать SDCardFS, но Google не будет оказывать дополнительную поддержку.

До прекращения поддержки SDCardFS позволяла контролировать доступ к эмулируемому внутреннему хранилищу и внешним SD-картам, предоставляя приложениям доступ только к нужным им данным. Кроме того, он обеспечивал независимость от регистра, а также дополнительное отслеживание хранилища.

Замена SDCardFS

Вместо SDCardFS используются несколько функций файловой системы ядра Linux, которые позволяют достичь аналогичных результатов. Регистр символов обрабатывается непосредственно файловой системой, поэтому время поиска в папках с учетом и без учета регистра практически одинаково. Это позволяет устранить замедление работы с большими папками в SDCardFS. Отслеживание квот, которое SDCardFS выполняла для быстрого сбора данных о хранилище для настроек, теперь настраивается из пользовательского пространства с помощью квот проекта. В некоторых контекстах, чувствительных к производительности, каталоги монтируются с привязкой. Новая реализация FUSE обеспечивает области хранения данных для прямого доступа к файловой системе, в первую очередь для поддержки редактирования геоданных.

Как настроить замену SD-карты

Чтобы включить квоты проекта и преобразование регистра для эмулируемого хранилища без SDCardFS на устройстве, выпущенном с Android 11 или более поздней версией, наследуйте от emulated_storage.mk в файле device.mk:

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

Внимание! Не выполняйте эти действия на устройствах с Android 10 или более ранней версией, поскольку встроенная в файловую систему нечувствительность к регистру несовместима с настройками шифрования на основе файлов, используемыми на таких устройствах. На таких устройствах необходимо продолжать использовать SDCardFS.

Причины отказа от SDCardFS

Устаревание SDCardFS вызвано несколькими причинами.

Стабильность

В SDCardFS есть несколько состояний гонки, связанных с учетом регистра, а также некоторые проблемы, связанные с нехваткой памяти. Поиск без учета регистра в больших каталогах может выполняться довольно медленно, поскольку для поиска альтернативных вариантов регистра необходимо просматривать нижний каталог. Одновременный доступ к верхней и нижней файловым системам также может привести к проблемам.

Соответствие вышестоящим ресурсам

Для поддержки изменения параметров в привязанных точках монтирования в SDCardFS требуются дополнительные исправления VFS. Эти исправления требуют дополнительной работы по принятию изменений в этих областях. Функции SDCardFS можно воспроизвести с помощью вышестоящих компонентов, что устраняет эту проблему.

Соответствие функций API

В предыдущей версии Android области хранения данных ограничивали доступ к определенным типам метаданных. Прямой доступ к хранилищу через SDCardFS не поддерживает эти функции изолированного хранилища.