Прекращение поддержки 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 страдает от ряда состояний гонки, связанных с чувствительностью к регистру, а также от некоторых проблем, связанных с нехваткой памяти. Поиск без учета регистра может быть довольно медленным в больших каталогах, поскольку поиску приходится обходить нижний каталог для нахождения альтернативных вариантов. Одновременный доступ к верхнему и нижнему файловым системам также может привести к проблемам.

Паритет на восходящем потоке

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

Функциональное соответствие API

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