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

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

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

Функционал замены SDCardFS

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

Настройте функцию замены SDCard

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