Fel tudna sorolni minden lehetséges könyvtárat, ahol az Android-alkalmazások adatot tárolhatnak, leírva, hogy az egyes könyvtárakban milyen adatokat tárolnak?
Megjegyzések
- Lásd még: Az Android SD-kártya speciális mappáinak listája? / Szervezhető-e az SD-kártya? Mivel rendetlenség van odabent / Melyik könyvtárakat tudom eltávolítani a belső SD-n? / Ellenőrizze, hogy egy alkalmazás milyen tárhelyet használ?
- Plusz Android mappa Hiearchy / A fájlrendszerben hol vannak az SMS-ek tárolva? / A fájlrendszerben hol vannak telepítve az alkalmazások?
Válasz
Minden alkalmazásnak (root vagy nem) van alapértelmezett adatkönyvtára, amely /data/data/<package_name>
. Alapértelmezés szerint az alkalmazások adatbázisai, beállításai és minden más adat ide kerül. Ha egy alkalmazás hatalmas mennyiségű adat tárolására számít, vagy más okokból “kedves lehet a belső tárhelyhez”, akkor az SDCardon található megfelelő könyvtár (Android/data/<package_name>
).
Ettől eltekintve minden alkalmazás adatokat tárolhat az SDCard bárhol, mivel nincsenek megkötések – és sok alkalmazás ezt megteszi. Szabadon használhatják a könyvtárneveket (és újra megteszik), ami gyakran megnehezíti annak eldöntését, hogy mire szolgál ez a kártyán szereplő “szemét”, és mi törölhető belőle.
Bár Tom rámutatott ki , a root-alkalmazások szinte mindenhol tárolhatják adataikat az eszközödön, általában ugyanazokat a szabályokat követik, mint más alkalmazások.
Az Android könyvtárhierarchiájának általános magyarázatát a itteni válaszom . Az Ön konkrét kérdéséhez további részleteket adhatok a /data/data/<package_name>
-ről (és a megfelelő SD-részről):
-
databases/
: itt az alkalmazás adatbázisai -
lib/
: könyvtárak és segítők az alkalmazáshoz -
files/
: egyéb kapcsolódó fájlok -
shared_prefs/
: beállítások és beállítások -
cache/
: Nos, gyorsítótárak
Lehet, hogy ezen a helyen több, vagy kevesebb könyvtár található – minden az alkalmazástól függ. Saját “otthoni könyvtárában” (és ez az, ami alapvetően, Linuxon beszélve) elhelyezhetnek fájlokat ott, ahol akarnak. Ezeket a fájlokat és könyvtárakat általában csak maga az alkalmazás (és természetesen a root) érheti el. – az SDCardon tároltaktól eltérően, amelyekhez minden alkalmazás hozzáférhet.
Megjegyzések
- A megjegyzéseket nem folytatjuk bővebben; ez a beszélgetés csevegésbe került .
Válasz
Néhány jelentős változás történt az Android 4.4-es tárhelyen (lásd: Android tárolási útja ). Tehát az alábbiak általában igazak az Android 4.4+ és különösen a 6+ verzióra.
Ez a részletes válaszomra vonatkozik, hogyan használják a lemezterületet az Android-eszközök? . Az alkalmazások fájljait (a rendszer és maga az alkalmazás) különféle kategóriákban belső és külső tárhelyre menti.
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
-
A fentiek mindegyike A belső és külső (elsődleges és másodlagos) tárhely elérési útjai az alkalmazás privát címjegyzékei, amelyek az adott alkalmazás számára engedély nélkül kérhetők. Az alkalmazások egyéb könyvtárakat is létrehozhatnak (amelyek nem kifejezetten elérhetőek az API-kon keresztül) a privát tárhelyükön. Ezeket az alkalmazáshoz tartozó könyvtárakat az alkalmazás eltávolításakor törlik.
-
Ezenkívül az alkalmazások bárhová el tudják helyezni adataikat az elsődleges külső tárhelyen (beleértve néhányat szabványos könyvtárak és más alkalmazások” privát könyvtárai “, ha
WRITE_EXTERNAL_STORAGE
engedélyt adnak (getExternalStorageDirectory
visszatér/storage/emulated/<user_id>
). Másodlagos külső tárhelyhez és cserélhető tárolóhoz SAF-t használnak. Részletek a részben találhatók: Hogyan menthetünk fájlokat külső SD-kártyára? .Azonban az Android 10 operációs rendszerben az elsődleges külső megosztott tárhelyre történő írás elavult (
getExternalStorageDirectory
ésgetExternalStoragePublicDirectory
az alkalmazásoknak az Android egyik beépített tartalomszolgáltatóját kell használniuk; vagy MediaStore (médiafájlokhoz), vagy SAF (bármilyen más típusú fájlhoz). -
elérési utak helyére
/mnt/expand/[UUID]
kerülhet, ha az Adoptable Storage-t használja./storage/emulated
másodlagos külső tárhely (például SD-kártya) használata esetén/storage/[UUID]
váltja fel. -
Több felhasználó / profil esetén a
<user_id>
más, az eszköz tulajdonosa mindig0
. A/data/user/0
történelmi okokból a/data/data
szimbolikus link. A másodlagos külső tárhely csak az eszköz tulajdonosának áll rendelkezésre. -
Az OBB könyvtárat megosztják a felhasználók / profilok (akár Android 9-ig) a helytakarékosság érdekében. A FUSE /
sdcardfs
/storage/emulated/obb
mindig/storage/emulated/<user_id>/Android/obb
. -
iv
/data/user_de
az eszköz titkosított tárolója az FBE eszközökön, amely lehetővé teszi bizonyos alkalmazások indításakor történő futtatását a felhasználói hitelesítő adatok kérése nélkül./data/misc/profiles
az ART használja az alkalmazáskód profilvezérelt összeállításához . -
Az egyes könyvtárak leírása kissé nyilvánvaló a nevekből, a részletek a API dokumentációban láthatók.
-
A gyorsítótárakat az operációs rendszer törli, ha kevés a tárhely, így a kiosztott kvótát meghaladó alkalmazások a tetején maradnak.
-
“private iv id =” b78ee93370 “alkalmazások A külső tárhelyen található
könyvtárakat nem automatikusan ellenőrzi a MediaScanner , de a media
könyvtárakat.
A gyorsítótárakról és a no_backup
könyvtárakról nem készül felhőalapú mentés. Lásd: hivatalos dokumentáció .
Válasz
A feltett kérdésre a válasz túl nagy. Tudok azonban adni egy alapvető választ, amely az alapokat tartalmazza.
Kétféle alkalmazás létezik:
Root és nem root .
Root A alkalmazások alapvetően tárolhatják / módosíthatják a fájlokat, ahol csak akarják.
A nem root alkalmazások csak itt tárolhatnak / módosíthatnak fájlokat: /sdcard/
és minden mappát, ami utána következik.
Leginkább a telepített alkalmazások tárolják magukat a /sdcard/Android/data
vagy /sdcard/Android/obb
címen.
Néhány az alkalmazások a mentett játékokat / konfigurációs adatfájljaikat az /sdcard/APPNAME/
vagy az /sdcard/
fájlokba tárolják. root alkalmazások, akkor gyökeret kell szerezned androidos eszközödről, és engedélyt kell adnod az egyik superuser alkalmazásból.