Compreendendo o armazenamento com escopo Android: o que mudou e por que é importante

A smartphone beside small storage drawers with one locked, illustrating Android scoped storage

Se você já tentou gerenciar arquivos em um dispositivo Android, provavelmente notou que as coisas funcionam de maneira diferente dependendo da versão do Android que você está executando. A partir do Android 10, o Google introduziu uma mudança fundamental na forma como os aplicativos interagem com o sistema de arquivos. Essa mudança, conhecida como Armazenamento com escopo, redefiniu as regras de leitura e gravação de arquivos no armazenamento compartilhado. Para usuários que fazem sideload de aplicativos, gerenciam arquivos OBB ou trabalham com gerenciadores de arquivos, compreender o armazenamento com escopo definido é essencial.

Neste artigo, exploraremos o que é armazenamento com escopo, por que o Google o implementou, como ele afeta usuários e desenvolvedores comuns e o que isso significa para quem instala arquivos APK ou XAPK fora da Play Store.

O problema com o antigo modelo de armazenamento

Antes do Android 10, qualquer aplicativo que solicitasse a permissão READ_EXTERNAL_STORAGE ou WRITE_EXTERNAL_STORAGE poderia acessar praticamente qualquer arquivo no armazenamento compartilhado do dispositivo. Isso incluía fotos, documentos, downloads e até arquivos criados por outros aplicativos. Embora isso tornasse o gerenciamento de arquivos conveniente, criava sérias preocupações de privacidade e segurança.

Considere um aplicativo simples de lanterna. No modelo antigo, se você concedesse permissão de armazenamento, ele poderia ler silenciosamente suas fotos, digitalizar documentos baixados ou até mesmo modificar arquivos pertencentes a outros aplicativos. Não houve controle granular. Você concedeu a um aplicativo acesso total a todo o seu armazenamento ou negou-o completamente.

Este amplo acesso levou a problemas do mundo real. Alguns aplicativos coletaram dados do usuário verificando o armazenamento em busca de arquivos confidenciais. Outros deixaram para trás arquivos órfãos que sobrecarregaram o dispositivo muito depois de o aplicativo ter sido desinstalado. O Google precisava de uma solução que equilibrasse usabilidade com privacidade, e o armazenamento com escopo definido era a resposta.

O que o armazenamento com escopo realmente faz

O armazenamento com escopo altera fundamentalmente o relacionamento entre os aplicativos e o sistema de arquivos. Nesse modelo, cada aplicativo obtém sua própria sandbox privada em armazenamento externo, normalmente localizado em /Android/data/[package.name]/. Os aplicativos podem ler e escrever livremente em sua própria sandbox, sem precisar de nenhuma permissão.

No entanto, o acesso a arquivos fora desta sandbox requer a passagem por APIs controladas. Veja como funciona o novo modelo:

Armazenamento específico do aplicativo

Cada aplicativo possui um diretório dedicado que somente ele pode acessar. Quando o aplicativo é desinstalado, este diretório é limpo automaticamente. Nenhum outro aplicativo pode ler ou gravar neste local sem acesso root. Isso elimina o problema de arquivos órfãos e evita a espionagem de dados entre aplicativos.

Coleções de mídia

Para mídia compartilhada, como fotos, vídeos e arquivos de áudio, o Android fornece a API MediaStore. Os aplicativos podem contribuir com mídia para coleções compartilhadas e ler mídia criada por outros aplicativos, mas somente por meio dessa interface estruturada. Um aplicativo pode ver sua própria mídia sem qualquer permissão, mas acessar a mídia de outros aplicativos requer as permissões READ_MEDIA_IMAGES, READ_MEDIA_VIDEO ou READ_MEDIA_AUDIO introduzidas no Android 13.

Estrutura de acesso ao armazenamento

Para documentos e outros arquivos que não sejam de mídia, os aplicativos devem usar o Storage Access Framework (SAF). Isso apresenta um seletor de arquivos do sistema ao usuário, que escolhe explicitamente quais arquivos ou diretórios o aplicativo pode acessar. O aplicativo nunca obtém acesso geral a todo o sistema de arquivos.

A permissão MANAGE_EXTERNAL_STORAGE

Para aplicativos que realmente precisam de amplo acesso a arquivos, como gerenciadores de arquivos, ferramentas de backup e software antivírus, o Android fornece a permissão MANAGE_EXTERNAL_STORAGE. No entanto, essa permissão requer aprovação especial do Google para aplicativos distribuídos pela Play Store, e os usuários devem concedê-la manualmente por meio das configurações do sistema, em vez de uma simples caixa de diálogo.

O cronograma de implementação

O Google não impôs armazenamento com escopo durante a noite. A transição aconteceu gradualmente:

  • Android 10 (API 29): O armazenamento com escopo foi introduzido, mas os aplicativos podiam desativá-lo usando requestLegacyExternalStorage="true" no manifesto. Isso deu aos desenvolvedores tempo para se adaptarem.
  • Android 11 (API 30): A sinalização herdada foi ignorada para aplicativos direcionados à API 30 ou superior. O armazenamento com escopo tornou-se obrigatório para aplicativos novos e atualizados na Play Store.
  • Android 12 e além: Foram feitos mais refinamentos, incluindo permissões de mídia granulares e melhor desempenho do SAF.
  • Android 13 (API 33): A permissão ampla READ_EXTERNAL_STORAGE foi descontinuada em favor de permissões de mídia específicas.
  • Android 14 (API 34): Foi introduzido acesso parcial a fotos e vídeos, permitindo aos usuários conceder acesso a arquivos específicos em vez de bibliotecas de mídia inteiras.

Como o armazenamento com escopo afeta o carregamento lateral

Para usuários que instalam aplicativos de fora da Play Store, o armazenamento com escopo apresenta alguns desafios práticos que vale a pena entender.

Baixando e acessando arquivos APK

Quando você baixa um arquivo APK por meio de um navegador, ele normalmente vai para a pasta Downloads. No armazenamento com escopo definido, o aplicativo do navegador possui esse arquivo. Se você quiser instalá-lo usando um aplicativo diferente, como um gerenciador de arquivos, esse gerenciador de arquivos precisará de acesso apropriado. A maioria dos gerenciadores de arquivos modernos lidam com isso corretamente por meio do SAF, mas os mais antigos podem ter dificuldades.

O instalador do pacote do sistema ainda pode acessar os arquivos que você seleciona explicitamente por meio do seletor de arquivos, portanto, o fluxo básico de download e instalação de um APK ainda funciona. No entanto, os fluxos de trabalho de instalação automatizados que dependiam do acesso direto ao caminho do arquivo podem falhar.

Arquivos OBB e dados do jogo

É aqui que o armazenamento com escopo cria mais atrito para os sideloaders. Muitos jogos grandes usam arquivos OBB (Opaque Binary Blob) armazenados em /Android/obb/[package.name]/. No modelo antigo, você poderia simplesmente copiar os arquivos OBB para o diretório correto usando qualquer gerenciador de arquivos.

Com armazenamento com escopo definido, o diretório /Android/obb/ é restrito. No Android 11 e versões posteriores, os aplicativos normais não podem gravar no diretório OBB de outro aplicativo. Isso significa que se você baixar um arquivo XAPK que contém dados OBB, o instalador precisará de tratamento especial para colocar esses arquivos corretamente.

Ferramentas como nosso Extrator OBB podem ajudá-lo a extrair arquivos OBB de pacotes XAPK, mas colocá-los no diretório correto em versões mais recentes do Android pode exigir o uso de um gerenciador de arquivos com permissão MANAGE_EXTERNAL_STORAGE ou o uso de comandos ADB de um computador.

Considerações sobre a instalação do XAPK

Os arquivos XAPK agrupam um APK com dados OBB e, às vezes, dividem as configurações do APK. A instalação deles em dispositivos com Android 11 ou posterior requer um instalador que entenda as restrições de armazenamento com escopo definido. O instalador precisa manter a permissão MANAGE_EXTERNAL_STORAGE ou usar as APIs adequadas para colocar os arquivos OBB no local correto.

Este é um dos motivos pelos quais a conversão de arquivos XAPK para o formato APK padrão pode ser útil. Um APK independente não requer a colocação de arquivos OBB, simplificando o processo de instalação em versões mais recentes do Android. Você pode usar nosso Conversor de XAPK para APK para extrair o APK base de um pacote XAPK.

O que os desenvolvedores precisam saber

Se você estiver desenvolvendo aplicativos Android, o armazenamento com escopo exigirá repensar a forma como você lida com os arquivos:

  • Use diretórios específicos do aplicativo para quaisquer arquivos que apenas seu aplicativo precise. Eles não exigem permissões e são limpos automaticamente na desinstalação.
  • Usar MediaStore para fotos, vídeos e áudio que devem estar visíveis para outros aplicativos e sobreviver à desinstalação.
  • Usar SAF quando seu aplicativo precisar funcionar com documentos ou diretórios selecionados pelo usuário.
  • Evite caminhos de arquivo codificados. Paths like /sdcard/MyApp/ are no longer reliable. Use Context.getExternalFilesDir().
  • O comportamento do Teste em vários níveis de API. difere significativamente entre Android 10, 11, 13 e 14.

Estratégias de Migração

Se seu aplicativo armazenava arquivos anteriormente em armazenamento compartilhado, você precisará de um plano de migração. A abordagem recomendada é copiar os arquivos existentes para o armazenamento específico do aplicativo na primeira inicialização após a atualização e, em seguida, excluir as cópias antigas. Use Environment.getExternalStorageDirectory() com o sinalizador legado durante o período de transição para ler arquivos antigos e, em seguida, mova-os para o novo local.

Equívocos comuns

"Armazenamento com escopo significa que os aplicativos não podem acessar nenhum arquivo"

Isto é falso. Os aplicativos ainda podem acessar seus próprios arquivos livremente, contribuir para coleções de mídia compartilhadas e solicitar acesso a arquivos específicos por meio do seletor do sistema. O que mudou é que os aplicativos não podem mais navegar silenciosamente em todo o sistema de arquivos.

"Os gerenciadores de arquivos estão quebrados nas novas versões do Android"

Os gerenciadores de arquivos que solicitam MANAGE_EXTERNAL_STORAGE ainda funcionam. O usuário só precisa conceder essa permissão especial através das configurações. Os gerenciadores de arquivos mais populares já se adaptaram a esse requisito.

"O armazenamento com escopo afeta apenas o cartão SD"

O armazenamento com escopo se aplica a todo o armazenamento compartilhado, incluindo o armazenamento interno compartilhado. O termo “armazenamento externo” no Android refere-se ao armazenamento compartilhado acessível a vários aplicativos, não necessariamente a um cartão SD físico.

Dicas práticas para usuários

Se você faz sideload de aplicativos regularmente ou gerencia arquivos em seu dispositivo Android, aqui estão algumas recomendações práticas:

  1. Use um gerenciador de arquivos moderno que suporta MANAGE_EXTERNAL_STORAGE. Aplicativos como Solid Explorer, MiXplorer e Total Commander adaptaram-se muito bem ao armazenamento com escopo.
  2. Conceda permissões com cuidado. Quando um gerenciador de arquivos solicitar "Acesso a todos os arquivos", entenda que esta é a permissão MANAGE_EXTERNAL_STORAGE e é necessária para funcionalidade completa.
  3. Use ADB para operações de arquivo teimosas. Se você não conseguir colocar arquivos OBB por meio de um gerenciador de arquivos, conectar seu dispositivo a um computador e usar adb push ignora totalmente as restrições de armazenamento com escopo.
  4. Converta pacotes complexos em formatos mais simples. Se um arquivo XAPK estiver causando problemas em um dispositivo mais recente, extrair apenas o componente APK pode ser o caminho de menor resistência.
  5. Mantenha seus aplicativos instaladores atualizados. Versões mais antigas dos instaladores XAPK podem não lidar corretamente com o armazenamento com escopo definido.

O futuro do armazenamento Android

O Google continua a refinar o modelo de armazenamento a cada versão do Android. O Android 14 introduziu acesso parcial à mídia, permitindo que os usuários compartilhem fotos específicas com um aplicativo em vez de toda a biblioteca. Espera-se que o Android 15 traga mais melhorias no desempenho e na usabilidade do Storage Access Framework.

A tendência é clara: o Android está caminhando para um modelo em que os usuários têm controle refinado sobre o que cada aplicativo pode ver e modificar. Embora isso crie algum atrito para usuários avançados e carregadores laterais, melhora significativamente a privacidade e a segurança para uma base mais ampla de usuários.

Trabalhando com armazenamento com escopo definido sem quebrar os dados do aplicativo

O armazenamento com escopo representa uma das mudanças mais significativas na arquitetura do Android nos últimos anos. Ao restringir os aplicativos às suas próprias sandboxes e exigir o consentimento explícito do usuário para um acesso mais amplo, o Google melhorou drasticamente a postura de privacidade da plataforma. Para usuários que fazem sideload de aplicativos e gerenciam arquivos manualmente, compreender essas restrições ajuda a contornar os pontos de atrito ocasionais. E para os desenvolvedores, a adaptação ao armazenamento com escopo definido não é opcional, mas sim um requisito fundamental para o desenvolvimento moderno do Android.

Instalar APKs, colocar arquivos OBB e apenas gerenciar o armazenamento no dia a dia, tudo funciona no mesmo sistema: armazenamento com escopo definido. Depois de entender como funciona, você é quem controla seu dispositivo, em vez de ficar à mercê de aplicativos que podem abusar do amplo acesso a arquivos.

Projetado e documentado por Mst Shaefale Desenvolvedor líder e arquiteto de pacotes Android • Verificado no Android 12–15

Mst Shaefale mantém a fusão XAPK/APKS do lado do cliente, analisador de manifesto binário e ferramentas de assinatura APK v1+v2 em xapktoapk.com. Identificou um comando desatualizado ou uma alteração no sistema operacional? Envie uma nota editorial.