Mohli byste uvést všechny možné adresáře, kde mohou aplikace pro Android ukládat data, s uvedením popisu, jaký druh dat jsou uloženy v každém adresáři?
Komentáře
- Viz také: Seznam speciálních složek SD karty pro Android? / Je možné reorganizovat kartu SD? Protože je tam nepořádek / Které adresáře mohu odstranit v interním SD? / Zkontrolovat, jaké úložiště aplikace používá?
- Plus Android Folder Hiearchy / Kde v systému souborů jsou uloženy zprávy SMS? / Kde v systému souborů jsou nainstalovány aplikace?
Odpověď
Všechny aplikace (root nebo ne) mají výchozí datový adresář, který je /data/data/<package_name>
. Ve výchozím nastavení jsou databáze aplikací, nastavení a všechna ostatní data zde. Pokud aplikace očekává, že bude uloženo obrovské množství dat, nebo z jiných důvodů chce „být příjemná k internímu úložišti“, je na SDCard odpovídající adresář (Android/data/<package_name>
).
Kromě toho mohou všechny aplikace ukládat data kdekoli na kartu SDCard, protože neexistují žádná omezení – a mnoho aplikací tak činí. Mohou volně používat názvy adresářů (a opět to dělají), což je často ztěžuje rozhodování, k čemu je to „haraburdí“ na kartě určeno a co z toho lze smazat.
Ačkoli, jak ukázal Tom out , root-apps could store their data almost anywhere on your device, they usually follow the same rules as other apps.
Obecné vysvětlení hierarchie adresářů Android najdete v moje odpověď zde . Pro vaši konkrétní otázku bych mohl přidat další podrobnosti k /data/data/<package_name>
(a odpovídající části SD):
-
databases/
: zde přejděte do databází aplikace -
lib/
: knihovny a pomocníci pro aplikaci -
files/
: další související soubory -
shared_prefs/
: předvolby a nastavení -
cache/
: no, cache
Na tomto místě může být několik dalších adresářů nebo méně – vše závisí na aplikaci. Ve svém vlastním „domovském adresáři“ (a to je to, co v podstatě je, mluveně Linuxově) mohou umisťovat soubory kam chtějí. Obvykle jsou tyto soubory a adresáře přístupné pouze samotné aplikaci (a samozřejmě rootovi). – jiné než ty, které jsou uloženy na kartě SDCard a jsou přístupné všem aplikacím.
Komentáře
- Komentáře nejsou určeny pro rozšířenou diskusi; tato konverzace má byl přesunut do chatu .
Odpovědět
V úložišti v systému Android 4.4 došlo k několika zásadním změnám (viz Cesta úložiště Androidu ). Pro Android 4.4+ a zejména 6+ platí obecně následující.
Toto je z mé podrobné odpovědi na Jak se místo na disku používá v zařízení Android? . Soubory aplikací „se ukládají (systémem a samotnou aplikací) do interního a externího úložiště v různých kategoriích.
DIRECTORY DESCRIPTION / API ===================================================================================== APP CODE ======== /data/app/<pkg>* (user apps installation directory) /data/app/<pkg>*/base.apk (original `.apk` file) /data/app/<pkg>*/lib/<arch>/*.so (shared libraries) /data/app/<pkg>*/oat/<arch>/base.[art|odex|vdex] (compiled executable code) /data/dalvik-cache/<arch>/*.[art|dex|oat|vdex] (compiled executable code, only for system apps) /data/misc/profiles/cur/<user_id>/<pkg>/primary.prof (ART profile) /data/misc/profiles/ref/<pkg>/primary.prof (ART profile) INTERNAL STORAGE ================ /data/user[_de]/<user_id>/<pkg> getDataDir /data/user[_de]/<user_id>/<pkg>/files getFilesDir /data/user[_de]/<user_id>/<pkg>/[code_]cache getCacheDir or getCodeCacheDir /data/user[_de]/<user_id>/<pkg>/databases getDatabasePath /data/user[_de]/<user_id>/<pkg>/no_backup getNoBackupFilesDir /data/user[_de]/<user_id>/<pkg>/shared_prefs getSharedPreferences EXTERNAL STORAGE ================ /storage/emulated/obb/<pkg>/*.obb (shared by multi-users, exposed in following view) /storage/emulated/<user_id>/Android/obb/<pkg>/*.<pkg>.obb getObbDirs /storage/emulated/<user_id>/Android/media/<pkg> getExternalMediaDirs /storage/emulated/<user_id>/Android/data/<pkg>/ /storage/emulated/<user_id>/Android/data/<pkg>/files getExternalFilesDirs /storage/emulated/<user_id>/Android/data/<pkg>/[code_]cache getExternalCacheDirs
-
Všechny výše uvedené cesty na interním a externím úložišti (primární a sekundární) jsou soukromé adresáře aplikace, které jsou přístupné příslušné aplikaci bez požadavku jakéhokoli povolení. Aplikace mohou také vytvářet další adresáře (nejsou explicitně dostupné prostřednictvím rozhraní API) ve svém soukromém úložišti. Všechny tyto adresáře patřící k aplikaci jsou odstraněny, když je aplikace odinstalována.
-
Kromě toho mohou aplikace ukládat svá data kamkoli na primární externí úložiště (včetně některých standardní adresáře a soukromé aplikace“ jiných adresářů), pokud je
WRITE_EXTERNAL_STORAGE
uděleno oprávnění (getExternalStorageDirectory
vrací/storage/emulated/<user_id>
). Pro sekundární externí úložiště a vyměnitelné úložiště se používá SAF. Podrobnosti najdete v Jak ukládat soubory na externí SD kartu? .V systému Android 10 je však podpora přímo do primárního externího sdíleného úložiště zastaralá (
getExternalStorageDirectory
agetExternalStoragePublicDirectory
jsou Aplikace již musí používat jednoho z poskytovatelů obsahu integrovaného v systému Android; buď MediaStore (pro mediální soubory) nebo SAF (pro jakýkoli jiný typ souborů). -
/data
cesty mohou být nahrazeny/mnt/expand/[UUID]
při použití Adoptable Storage./storage/emulated
bude nahrazen/storage/[UUID]
při použití sekundárního externího úložiště (jako je SD karta). -
Pro více uživatelů / profilů
<user_id>
se liší, vlastník zařízení je vždy0
./data/user/0
je symbolický odkaz na/data/data
z historických důvodů. Sekundární externí úložiště je k dispozici pouze vlastníkovi zařízení. -
Adresář OBB je sdílen mezi uživateli / profily (až Android 9), aby se ušetřilo místo. FUSE /
sdcardfs
vždy vystavuje/storage/emulated/obb
jako/storage/emulated/<user_id>/Android/obb
. -
/data/user_de
je zařízení šifrované úložiště na zařízeních FBE, které umožňuje spouštění určitých aplikací při zavádění bez požadavku na pověření uživatele. -
/data/misc/profiles
používá ART pro profilovou kompilaci kódu aplikace. -
Popis každého adresáře je poněkud patrný z názvů, podrobnosti najdete v dokumentaci API .
-
Mezipaměti jsou operačním systémem vymazány, když jim dochází úložný prostor, takže aplikace překračují přidělenou kvótu navrchu.
-
Aplikace „soukromé
files
adresáře v externím úložišti nejsou automaticky skenovány MediaScanner , alemedia
adresáře jsou. -
Cache a
no_backup
adresáře nejsou zálohovány do cloudu. Viz oficiální dokumentace .
Odpověď
Odpověď na vaši otázku, kterou se ptáte, je příliš velká. Mohu vám však dát základní odpověď, která zahrnuje základní informace.
Existují dva druhy aplikací:
root a non-root .
root Aplikace mohou v zásadě ukládat / upravovat soubory, kdekoli chtějí.
Aplikace bez oprávnění root mohou ukládat / upravovat soubory pouze zde: /sdcard/
a všechny následující složky.
Instalované aplikace se většinou ukládají na /sdcard/Android/data
nebo /sdcard/Android/obb
.
Některé aplikace ukládají své uložené hry / konfigurační datové soubory na /sdcard/APPNAME/
nebo jen na /sdcard/
Aby bylo možné používat Aplikace root , budete muset mít rootované zařízení Android a musíte mít povolení od jedné z aplikací superuživatele.