Descontinuação do SDCardFS

O SDCardFS está obsoleto em dispositivos que iniciam com o Android 11 ou superior e executam a versão 5.4 ou superior do kernel. Em tais dispositivos, o teste VTS não permite sistemas de arquivos montados listados como SDCardFS. Os dispositivos iniciados com o Android 11 ou superior, mas que executam a versão 4.19 ou inferior do kernel, podem continuar usando o SDCardFS, mas o Google não oferece suporte adicional.

Antes de sua descontinuação, o SDCardFS fornecia uma maneira de controlar o acesso ao armazenamento interno emulado e cartões SD externos, permitindo que os aplicativos acessassem apenas os dados relevantes para eles. Além disso, forneceu uma camada de diferenciação entre maiúsculas e minúsculas, bem como algum rastreamento de armazenamento adicional.

Funcionalidade de substituição SDCardFS

A substituição do SDCardFS usa vários recursos do sistema de arquivos do kernel Linux para obter resultados semelhantes. A diferenciação entre maiúsculas e minúsculas é tratada diretamente pelo sistema de arquivos; isso resulta em tempos de pesquisa quase idênticos em pastas que diferenciam maiúsculas de minúsculas e não diferenciam maiúsculas de minúsculas, removendo a lentidão de pastas grandes do SDCardFS. O rastreamento de cota que o SDCardFS estava fazendo para coletar rapidamente dados de armazenamento para configurações agora está configurado no espaço do usuário usando cotas de projeto. Em alguns contextos sensíveis ao desempenho, os diretórios são montados no local. Uma nova implementação do FUSE fornece armazenamento com escopo para acesso direto ao sistema de arquivos, principalmente para dar suporte à redação de informações de localização.

Configurando a funcionalidade de substituição do SDCard

Para habilitar cotas de projeto e dobra de caso para armazenamento emulado sem SDCardFS, herde de emulated_storage.mk no arquivo device.mk :

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

Faça isso apenas para dispositivos iniciados com Android 11 ou superior.

Por que descontinuar o SDCardFS?

Há vários motivos para descontinuar o SDCardFS.

Estabilidade

O SDCardFS sofre de várias condições de corrida relacionadas à diferenciação de maiúsculas e minúsculas, bem como alguns problemas relacionados a circunstâncias de pouca memória. As pesquisas que não diferenciam maiúsculas de minúsculas podem ser bastante lentas em diretórios grandes porque as pesquisas precisam percorrer o diretório inferior para localizar casos alternativos. Acessar os sistemas de arquivos superior e inferior ao mesmo tempo pode levar a problemas também.

Paridade upstream

O SDCardFS requer patches adicionais para o VFS para dar suporte à alteração de opções em montagens de ligação. Esses patches causam trabalho adicional para aceitar alterações upstream nessas áreas. Os recursos do SDCardFS podem ser replicados por componentes upstream, removendo esse ponto problemático.

Paridade de recursos com API

Na versão anterior do Android, o armazenamento com escopo limitava o acesso a determinados tipos de metadados. O acesso direto ao armazenamento por meio de SDCardFS não oferece suporte a esses recursos de armazenamento com escopo.