O SDCardFS está obsoleto em dispositivos iniciados com Android 11 ou superior e que executam a versão 5.4 do kernel ou superior. Nesses dispositivos, o teste VTS não permite sistemas de arquivos montados listados como SDCardFS. Dispositivos lançados com Android 11 ou superior, mas que executam a versão 4.19 do kernel ou inferior, podem continuar a usar 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 aos cartões SD externos, permitindo que os aplicativos acessassem apenas os dados relevantes para eles. Além disso, forneceu uma camada de insensibilidade a 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 insensibilidade a maiúsculas e minúsculas é tratada diretamente pelo sistema de arquivos; isso resulta em tempos de pesquisa quase idênticos em pastas com e sem distinção entre maiúsculas e 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 é configurado no espaço do usuário usando cotas de projeto. Em alguns contextos sensíveis ao desempenho, os diretórios são montados por ligação no local. Uma nova implementação do FUSE fornece armazenamento com escopo definido para acesso direto ao sistema de arquivos, principalmente para suportar a redação de informações de localização.
Configurar a funcionalidade de substituição do SDCard
Para ativar cotas de projeto e dobramento de caixa para armazenamento emulado sem SDCardFS em um dispositivo iniciado com Android 11 ou superior, herde de emulated_storage.mk
no arquivo device.mk
:
$(call inherit-product, $(SRC_TARGET_DIR)/product/emulated_storage.mk)
Aviso: não faça isso em dispositivos lançados com Android 10 ou inferior, pois a insensibilidade nativa a maiúsculas e minúsculas do sistema de arquivos é incompatível com as configurações de criptografia baseada em arquivo usadas em tais dispositivos. É necessário continuar usando o SDCardFS nesses dispositivos.
Razões para descontinuar SDCardFS
Existem vários motivos para descontinuar o SDCardFS.
Estabilidade
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 encontrar casos alternativos. Acessar os sistemas de arquivos superiores e inferiores ao mesmo tempo também pode causar problemas.
Paridade a montante
SDCardFS requer patches adicionais para o VFS para suportar opções de alteração 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, eliminando esse problema.
Paridade de recursos com API
Na versão anterior do Android, o armazenamento com escopo limitava o acesso a tipos específicos de metadados. O acesso direto ao armazenamento por meio do SDCardFS não dá suporte a esses recursos de armazenamento com escopo definido.