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