Где приложения Android хранят данные?

98

Не могли бы вы перечислить все возможные каталоги, где приложения Android могут хранить данные, предоставив описание, какие данные хранятся в каждом каталоге?

mrpyo
источник

Ответы:

92

Все приложения (корневые или нет) имеют каталог данных по умолчанию, который является /data/data/<package_name>. По умолчанию базы данных приложений, настройки и все остальные данные находятся здесь. Если приложение ожидает, что будут храниться огромные объемы данных, или по другим причинам хочет «быть хорошо со встроенным хранилищем», на SDCard ( Android/data/<package_name>) имеется соответствующий каталог .

Кроме того, все приложения могут хранить данные в любом месте на SDCard, поскольку нет никаких ограничений - и многие приложения делают это. Они могут свободно использовать имена каталогов (и они снова используют), что часто затрудняет решение, для чего предназначен весь этот «мусор» на карте, и что из него можно удалить.

Хотя, как отметил Том , root-приложения могут хранить свои данные практически везде на вашем устройстве, они обычно следуют тем же правилам, что и другие приложения.

Вы можете найти общее объяснение иерархии каталогов Android в моем ответе здесь . Для вашего конкретного вопроса я мог бы добавить более подробную информацию о /data/data/<package_name>(и соответствующей SD-части):

  • databases/: здесь идут базы данных приложения
  • lib/: библиотеки и помощники для приложения
  • files/: другие связанные файлы
  • shared_prefs/: настройки и настройки
  • cache/: ну кеширует

В этом месте может быть еще несколько каталогов или меньше - все зависит от приложения. В своем собственном «домашнем каталоге» (и это то, чем он в основном является, говоря по Linux), они могут размещать файлы там, где они хотят. Обычно эти файлы и каталоги доступны только для самого приложения (и, конечно, для пользователя root) - кроме тех, которые хранятся на SDCard и доступны всем приложениям.

Иззи
источник
1
Где будут /data/data/<name>/files/находиться файлы, созданные в соответствии с описанием в developer.android.com/guide/topics/data/… ? Т.е. те открыли с FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVATE);?
Никто
В общем, это уже хороший ответ, но как насчет добавления ссылок на developer.android.com/guide/topics/data/… о том, какой каталог соответствует описанию, не зависящему от пути / пути?
Никто
@ Никто 2) потому что эта страница ориентирована на разработчиков, а этот сайт ориентирован на конечных пользователей? То же самое для 1) Я не разработчик, и это требует деталей разработки. Сожалею.
Иззи
1
У меня нет SD - карты, и в моем Android 6 и Android 7, Whatsapp хранится множество данных /storage/emulated/0/WhatsApp/(подкаталоги .Shared, .trash, Backups, Databases, Media), в то числе всех средств массовой информации. Я не знаю, если это в дополнение к \data\data..., я не могу получить доступ к этому каталогу сейчас. Может быть, это изменилось среди версий.
sancho.s
1
@Shayan корневой каталог ( /) не находится на SD-карте. SD-карта означает ниже /sdcard(внутренняя карта, указывает на /storage/emulated/<user>) или соответствующий путь вашей внешней карты. И нет, я не могу объяснить все возможные местоположения, которые может использовать какое-то приложение, извините; AFAIK /data/miscуправляется самой системой Android, поэтому «простые приложения» в лучшем случае должны иметь доступ для чтения там. Никогда не встречал data/user_de(так как это относительный путь, я все равно не знаю, где вы имеете в виду).
Иззи
9

Ответ на ваш вопрос, который вы задаете, слишком велик. Я могу, однако, дать вам базовый ответ, который охватывает основы.

Существует два вида приложений:
корневые и некорневые .

Корневые приложения могут в основном хранить / изменять файлы где угодно.

Некорневые приложения могут хранить / изменять файлы только здесь: /sdcard/и в каждой папке, которая появляется после.
В основном, установленные приложения хранятся в /sdcard/Android/dataили /sdcard/Android/obb.
Некоторые приложения хранят свои файлы сохраненных игр / данных конфигурации /sdcard/APPNAME/или просто на них. /sdcard/

Чтобы иметь возможность использовать корневые приложения, вам необходимо иметь рутированное устройство Android и получить разрешение от одного из приложений суперпользователя.

Том
источник