Descontinuação do SDCardFS

O SDCardFS foi descontinuado em dispositivos com o Android 11 ou mais recente e que executam a versão 5.4 do kernel ou mais recente. Nesses dispositivos, o teste VTS não permite que sistemas de arquivos ativados sejam listados como SDCardFS. Os dispositivos que são lançados com o Android 11 ou mais recente, mas executam o kernel versão 4.19 ou anterior, podem continuar usando o SDCardFS, mas o Google não oferece suporte adicional.

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

Funcionalidade de substituição do SDCardFS

A substituição do SDCardFS usa vários recursos do sistema de arquivos do kernel do Linux para alcançar resultados semelhantes. A indiferença a maiúsculas é processada diretamente pelo sistema de arquivos. Isso resulta em tempos de pesquisa quase idênticos em pastas que 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 é 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 por vinculação. Uma nova implementação do FUSE oferece armazenamento com escopo para acesso direto ao sistema de arquivos, principalmente para oferecer suporte à edição de informações de local.

Configurar a funcionalidade de substituição do cartão SD

Para ativar as cotas de projeto e o agrupamento de casos para armazenamento emulado sem SDCardFS em um dispositivo lançado com o Android 11 ou mais recente, 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 iniciados com o Android 10 ou versões anteriores, já que a insensibilidade a maiúsculas e minúsculas nativa do sistema de arquivos é incompatível com as configurações de criptografia baseadas em arquivos usadas nesses dispositivos. É necessário continuar usando o SDCardFS nesses dispositivos.

Motivos para suspender o uso do SDCardFS

Há vários motivos para suspender o uso do SDCardFS.

Estabilidade

O SDCardFS sofre de várias condições de disputa relacionadas à diferenciação entre 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 elas precisam percorrer o diretório inferior para encontrar casos alternativos. O acesso aos sistemas de arquivos superiores e inferiores ao mesmo tempo também pode causar problemas.

Paridade upstream

O SDCardFS requer patches adicionais ao VFS para oferecer suporte à alteração de opções em montagens de vinculação. Esses patches causam mais trabalho para aceitar mudanças upstream nessas áreas. Os recursos do SDCardFS podem ser replicados por componentes upstream, removendo esse problema.

Igualdade de recursos com a 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 pelo SDCardFS não oferece suporte a esses recursos de armazenamento com escopo.