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 lançados com o Android 11 ou versões mais recentes, mas que executam o kernel versão 4.19 ou anterior, podem continuar usando o SDCardFS, mas o Google não oferece mais suporte.

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

Funcionalidade de substituição do SDCardFS

A substituição do SDCardFS usa vários recursos do sistema de arquivos do kernel do Linux para conseguir 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 é definido no espaço do usuário usando cotas de projetos. 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 lançados com o Android 10 ou versões anteriores, já que a indiferença por 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 descontinuar o 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. Acessar os 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 trabalho extra para aceitar alterações 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.