Onde os aplicativos Android armazenam dados?

97

Você poderia listar todos os diretórios possíveis nos quais os aplicativos Android podem armazenar dados, fornecendo uma descrição de que tipo de dados são armazenados em cada diretório?

mrpyo
fonte

Respostas:

92

Todos os aplicativos (raiz ou não) têm um diretório de dados padrão, que é /data/data/<package_name>. Por padrão, os bancos de dados, as configurações e todos os outros dados dos aplicativos estão aqui. Se um aplicativo espera que grandes quantidades de dados sejam armazenadas ou, por outros motivos, queira "ser agradável ao armazenamento interno", há um diretório correspondente no SDCard ( Android/data/<package_name>).

Além disso, todos os aplicativos podem armazenar dados em qualquer lugar no SDCard, pois não há restrições - e muitos aplicativos o fazem. Eles podem usar nomes de diretórios livremente (e o fazem novamente), o que geralmente dificulta a decisão de qual é o objetivo de todo esse "lixo" do cartão e o que pode ser excluído.

Embora, como Tom apontou , os aplicativos raiz possam armazenar seus dados quase em qualquer lugar do seu dispositivo, eles geralmente seguem as mesmas regras que outros aplicativos.

Você pode encontrar uma explicação geral da hierarquia de diretórios do Android na minha resposta aqui . Para sua pergunta específica, posso adicionar mais alguns detalhes na /data/data/<package_name>(e na parte SD correspondente):

  • databases/: aqui vão os bancos de dados do aplicativo
  • lib/: bibliotecas e auxiliares para o aplicativo
  • files/: outros arquivos relacionados
  • shared_prefs/: preferências e configurações
  • cache/: bem, caches

Pode haver vários diretórios neste local ou menos - tudo depende do aplicativo. Em seu próprio "diretório inicial" (e é basicamente o que é falado no Linux), eles podem colocar os arquivos onde quiserem. Geralmente, esses arquivos e diretórios são acessíveis apenas pelo próprio aplicativo (e raiz, é claro) - além dos armazenados no SDCard, acessíveis por todos os aplicativos.

Izzy
fonte
1
É /data/data/<name>/files/onde os arquivos criados como descrito no developer.android.com/guide/topics/data/... iria? Ou seja, aqueles abertos com FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVATE);?
Ninguém
Em geral, essa já é uma boa resposta, mas que tal adicionar referências a developer.android.com/guide/topics/data/… sobre qual diretório se correlaciona com qual descrição abstrata / independente de caminho?
Ninguém
@ Ninguém 2) porque essa página é fortemente orientada para o desenvolvedor, enquanto este site é voltado para o usuário final? O mesmo para 1) Não sou desenvolvedor, e isso pede detalhes do desenvolvimento. Desculpa.
Izzy
1
Eu não tenho um cartão SD, e no meu Android 6 e Android 7, Whatsapp armazenadas grandes quantidades de dados em /storage/emulated/0/WhatsApp/(subdirs .Shared, .trash, Backups, Databases, Media), incluindo todas as mídias. Eu não sei se isso é um complemento \data\data..., não posso acessar este diretório agora. Talvez isso tenha mudado entre as versões.
Sancho.s 4/07
1
@ Shayan, o diretório raiz ( /) não está localizado no cartão SD. Cartão SD significa abaixo /sdcard(cartão interno, aponta para /storage/emulated/<user>) ou o caminho correspondente do seu cartão externo. E não, não posso explicar todos os locais possíveis que algum aplicativo possa usar, desculpe; O AFAIK /data/miscé gerenciado pelo próprio sistema Android; portanto, "meros aplicativos" devem, na melhor das hipóteses, ter acesso de leitura lá. Nunca encontrado data/user_de(como é um caminho relativo, eu não sei de qualquer maneira).
Izzy
9

A resposta para sua pergunta que você está fazendo é muito grande. No entanto, posso dar uma resposta básica que aborda o básico.

Existem dois tipos de aplicativos:
raiz e não raiz .

Aplicativos raiz podem basicamente armazenar / modificar arquivos onde quiserem.

Os aplicativos não raiz só podem armazenar / modificar arquivos aqui: /sdcard/e todas as pastas que se seguem.
Principalmente, os aplicativos instalados se armazenam em /sdcard/Android/dataou /sdcard/Android/obb.
Alguns aplicativos armazenam seus arquivos de dados de jogos / configuração salvos /sdcard/APPNAME/ou apenas /sdcard/

para poder usar aplicativos raiz , você deve ter feito o root no seu dispositivo Android e ter permissão de um dos aplicativos de superusuário.

Tom
fonte