Поддержка 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 не поддерживает эти функции ограниченного доступа.