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

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

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

Функциональность замены SDcardFS

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

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

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

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

Делайте это только для устройств, которые запускаются с Android 11 или выше.

Почему устарела SDCardFS?

Существуют различные причины для прекращения поддержки SDCardFS.

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

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

Паритет вверх по течению

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

Паритет функций с API

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