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:
- 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.
- 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.
- 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.
- 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.
- 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.