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

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


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

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

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

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

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

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


В Android 4.4 произошли некоторые серьезные изменения в хранилище (см. Путь к хранилищу Android). Таким образом, следующее в целом верно для Android 4.4+ и особенно 6+.

Это из моего подробного ответа на вопрос, как используется дисковое пространство на устройстве Android ?. Файлы приложений сохраняются (системой и самим приложением) во внутреннем и внешнем хранилище в разных категориях.

  ОПИСАНИЕ КАТАЛОГА/API ===========  ==================================================  ======================== КОД ПРИЛОЖЕНИЯ ========/data/app/ * (каталог установки пользовательских приложений)/ data/app/ */base.apk (исходный файл `.apk`)/data/app/ */lib//*.so (общие библиотеки)/data/app/ */oat//base.[art|odex|vdex] (скомпилированный исполняемый код)/data/dalvik-cache//*.[art|dex|oat|vdex] (скомпилированный исполняемый код,  только для системных приложений)/data/misc/profiles/cur///primary. prof (профиль ART)/data/misc/profiles/ref//primary.prof (профиль ART) ВНУТРЕННЕЕ ХРАНИЛИЩЕ ================/data/user [_de] // getDataDir/data/user [_de]///files getFilesDir/data/user [_de]///[code_] cache getCacheDir или getCodeCacheDir /data/user [_de]///databases getDatabasePath/data/user [_de]///no_backup getNoBackupFilesDir/data/user [_de]///shared_prefs getSharedPreferences ВНЕШНЕЕ ХРАНИЛИЩЕ ================/storage/emulated/obb//*.obb (совместно используется несколькими пользователями, отображается в следующем представлении)/storage/ emulated//Android/obb//*.  .obb getObbDirs/storage/emulated//Android/media/ getExternalMediaDirs/storage/emulated//Android/ data///storage/emulated//Android/data//files getExternalFilesDirs/storage/emulated//Android/data//[code_] cache getExternalCacheDirs  
  • Все указанные выше пути на внутреннем и внешнем хранилище (в первую очередь ry и вторичный) — это частные каталоги приложения, которые доступны для соответствующего приложения без запроса разрешения. Приложения также могут создавать другие каталоги (явно не доступные через API) в своем личном хранилище. Все эти каталоги, принадлежащие приложению, удаляются при удалении приложения.

  • Кроме того, приложения могут размещать свои данные в любом месте основного внешнего хранилища (включая некоторые стандартные каталоги и частные каталоги других приложений), если предоставлено разрешение WRITE_EXTERNAL_STORAGE ( getExternalStorageDirectory возвращает /storage/emulated/ ). Для вторичного внешнего хранилища и съемного хранилища используется SAF. См. Подробности в разделе Как сохранять файлы на внешнюю SD-карту?

    Однако в Android 10 запись напрямую в основное внешнее общее хранилище устарела ( getExternalStorageDirectory и getExternalStoragePublicDirectory больше не доступны). Приложения должны использовать одного из встроенных поставщиков контента Android; либо (для файлов мультимедиа), либо (для любого другого типа файлов).

  • /data пути могут быть заменены на /mnt/expand/[UUID ] при использовании адаптируемого хранилища. /storage/emulated заменяется на /storage/[UUID] при использовании дополнительного внешнего хранилища (например, SD-карты).

  • Для нескольких пользователей/профилей отличается, владельцем устройства всегда является 0 . /data/user/0 — это символическая ссылка на /data/data по историческим причинам. Вторичное внешнее хранилище доступно только владельцу устройства.

  • Каталог OBB совместно используется пользователями/профилями (до Android 9) для экономии места. FUSE/ sdcardfs всегда предоставляет /storage/emulated/obb как /storage/emulated//Android/obb .

  • /data/user_de — это зашифрованное хранилище устройства на устройствах FBE, которое позволяет некоторым приложениям запускаться при загрузке без запроса для учетных данных пользователя.

  • /data/misc/profiles используются ART для компиляции кода приложения на основе профиля.

  • Описание каждой директории отчасти видно по именам, подробности можно увидеть в документации API.

  • Кеши очищаются ОС при нехватке памяти, сохраняя приложения, превышающие выделенную квоту наверху.

  • Личные приложения файлы во внешнем хранилище не сканируются MediaScanner автоматически, но каталоги media сканируются.

  • Кеши и Для каталогов no_backup не создается резервная копия в облаке. См. Официальную документацию.


В хранилище Android произошли некоторые серьезные изменения. 4.4 (см. Путь к хранилищу Android). Таким образом, следующее в целом верно для Android 4.4+ и особенно 6+.

Это из моего подробного ответа на вопрос, как используется дисковое пространство на устройстве Android ?. Файлы приложений сохраняются (системой и самим приложением) во внутреннем и внешнем хранилище в разных категориях.

  ОПИСАНИЕ КАТАЛОГА/API ===========  ==================================================  ======================== КОД ПРИЛОЖЕНИЯ ========/data/app/ * (каталог установки пользовательских приложений)/ data/app/ */base.apk (исходный файл `.apk`)/data/app/ */lib//*.so (общие библиотеки)/data/app/ */oat//base.[art|odex|vdex] (скомпилированный исполняемый код)/data/dalvik-cache//*.[art|dex|oat|vdex] (скомпилированный исполняемый код,  только для системных приложений)/data/misc/profiles/cur///primary.prof (профиль ART)/data/misc/profiles/ref//primary.prof (профиль ART) ВНУТРЕННИЙ  ХРАНИЛИЩЕ ================/data/user [_de]// getDataDir/data/user [_de]///files  getFilesDir/data/user [_de]///[code_] cache getCacheDir или getCodeCacheDir/data/user [_de]///databases getDatabasePath/data/user [_de]/ //no_backup getNo  BackupFilesDir/data/user [_de]///shared_prefs getSharedPreferences EXTERNAL STORAGE ================/storage/emulated/obb//*.obb  (общий для нескольких пользователей, показан в следующем представлении)/storage/emulated//Android/obb//*. . obb getObbDirs/storage/emulated//Android/media/ getExternalMediaDirs/storage/emulated//Android/data///storage/emulated//Android/data//files getExternalFilesDirs/storage/emulated//Android/data//[code_] cache getExternalCacheDirs  
  • Все указанные выше пути во внутреннем и внешнем хранилище (первичном и вторичном) являются личными каталогами приложения, которые доступны для соответствующего приложения без запроса разрешения. Приложения также могут создавать другие каталоги (явно не доступные через API) в своем личном хранилище. Все эти каталоги, принадлежащие приложению, удаляются при удалении приложения.

  • Кроме того, приложения могут размещать свои данные в любом месте основного внешнего хранилища (включая некоторые стандартные каталоги и частные каталоги других приложений), если предоставлено разрешение WRITE_EXTERNAL_STORAGE ( getExternalStorageDirectory возвращает /storage/emulated/ ). Для вторичного внешнего хранилища и съемного хранилища используется SAF. См. Подробности в разделе Как сохранять файлы на внешнюю SD-карту?

    Однако в Android 10 запись напрямую в основное внешнее общее хранилище устарела ( getExternalStorageDirectory и getExternalStoragePublicDirectory больше не доступны). Приложения должны использовать одного из встроенных поставщиков контента Android; либо (для файлов мультимедиа), либо (для любого другого типа файлов).

  • /data пути могут быть заменены на /mnt/expand/[UUID ] при использовании адаптируемого хранилища. /storage/emulated заменяется на /storage/[UUID] при использовании дополнительного внешнего хранилища (например, SD-карты).

  • Для нескольких пользователей/профилей отличается, владельцем устройства всегда является 0 . /data/user/0 — это символическая ссылка на /data/data по историческим причинам. Вторичное внешнее хранилище доступно только владельцу устройства.

  • Каталог OBB используется совместно пользователями/профилями (до Android 9) для экономии места. FUSE/ sdcardfs всегда предоставляет /storage/emulated/obb как /storage/emulated//Android/obb .

  • /data/user_de — это зашифрованное хранилище устройства на устройствах FBE, которое позволяет некоторым приложениям запускаться при загрузке без запроса для учетных данных пользователя.

  • /data/misc/profiles используются ART для компиляции кода приложения на основе профиля.

  • Описание каждой директории отчасти очевидно из названий, подробности можно увидеть в документации API.

  • Кеши очищаются ОС при нехватке памяти, сохраняя приложения, превышающие выделенную квоту.

  • Личные каталоги файлов приложений во внешнем хранилище не сканируются автоматически MediaScanner, а медиа .

  • Кеши и каталоги no_backup не копируются в облако. См. Официальную документацию.


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

Есть два типа приложений:
Root и без полномочий root .

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

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

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


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

Есть два типа приложений:
Root и не root .

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

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

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

Оцените статью
techsly.ru
Добавить комментарий