Kan du lista alla möjliga kataloger där Android-appar kan lagra data, med beskrivning vilken typ av data som lagras i varje katalog?
Kommentarer
- Se även: Lista över speciella Android SD-kortmappar? / Är det möjligt att omorganisera SD-kortet? Eftersom det är en röra där inne / Vilka kataloger kan jag ta bort i intern SD? / Kontrollera vilken lagring en app använder?
- Plus Android-mapp Hiearchy / Var i filsystemet finns SMS-meddelanden lagrade? / Var i filsystemet är applikationer installerade?
Svar
Alla appar (root eller inte) har en standarddatakatalog, vilket är /data/data/<package_name>
. Som standard går appdatabaserna, inställningarna och all annan data hit. Om en app förväntar sig att stora mängder data ska lagras eller av andra skäl vill ”vara trevlig mot intern lagring”, finns det en motsvarande katalog på SDCard (Android/data/<package_name>
).
Bortsett från det kan alla appar lagra data var som helst på SDCard, eftersom det inte finns några begränsningar – och många appar gör det. De kan använda katalognamn fritt (och det gör de igen), vilket är det som ofta gör det svårt att bestämma vad allt detta ”skräp” på kortet är avsett för, och vad av det kan raderas.
Men, som Tom pekade ut , skulle root-appar kunna lagra sina data nästan överallt på din enhet, de följer vanligtvis samma regler som andra appar.
Du kan hitta en allmän förklaring av Android-kataloghierarkin i mitt svar här . För din specifika fråga kan jag lägga till lite mer information om /data/data/<package_name>
(och motsvarande SD-del):
-
databases/
: här går appens databaser -
lib/
: bibliotek och hjälpare för appen -
files/
: andra relaterade filer -
shared_prefs/
: inställningar och inställningar -
cache/
: ja, cachar
Det kan finnas flera fler kataloger på den här platsen eller färre – allt beror på appen. I sin egen ”hemkatalog” (och det är vad det egentligen är, talat Linuxmässigt) kan de placera filer där de vill. Vanligtvis är dessa filer och kataloger bara tillgängliga av själva appen (och root, naturligtvis) – andra än de som är lagrade på SDCard, som är tillgängliga för alla appar.
Kommentarer
- Kommentarer är inte för utökad diskussion; denna konversation har har flyttats till chatt .
Svar
Några större förändringar inträffade i lagring i Android 4.4 (se Androids Storage Journey ). Så följande gäller generellt för Android 4.4+ och särskilt 6+.
Detta är från mitt detaljerade svar på Hur diskutrymme används på Android-enheter? . Apps ”-filer sparas (av systemet och själva appen) till intern och extern lagring under olika kategorier.
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
-
Allt ovan banor på intern och extern lagring (primär och sekundär) är appens privata kataloger som är tillgängliga för respektive app utan att begära något tillstånd. Appar kan också skapa andra kataloger (inte uttryckligen tillgängliga via API: er) i sin privata lagring. Alla dessa kataloger som tillhör en app raderas när appen avinstalleras.
-
Dessutom kan appar lägga sina data var som helst på primär extern lagring (inklusive några standardkataloger och andra appar” privata kataloger) om
WRITE_EXTERNAL_STORAGE
behörighet beviljas (getExternalStorageDirectory
returnerar/storage/emulated/<user_id>
). För sekundär extern lagring och flyttbar lagring används SAF. Se detaljer i Hur sparar man filer på externt SD-kort? .I Android 10 är dock skrivning direkt till primär extern delad lagring föråldrad (
getExternalStorageDirectory
ochgetExternalStoragePublicDirectory
inte mer tillgängligt). Appar måste använda en av Android: s inbyggda innehållsleverantörer; antingen MediaStore (för mediefiler) eller SAF (för alla andra typer av filer). -
/data
sökvägar kan ersättas med/mnt/expand/[UUID]
när du använder Adoptable Storage./storage/emulated
ersätts med/storage/[UUID]
när du använder sekundär extern lagring (som SD-kort). -
För flera användare / profiler
<user_id>
är annorlunda, enhetsägaren är alltid0
./data/user/0
är en symlänk till/data/data
av historiska skäl. Sekundärt externt lagringsutrymme är endast tillgängligt för enhetsägaren. -
OBB-katalogen delas mellan användare / profiler (upp till Android 9) för att spara utrymme. FUSE /
sdcardfs
exponerar alltid/storage/emulated/obb
som/storage/emulated/<user_id>/Android/obb
. -
/data/user_de
är Enhetskrypterad lagring på FBE-enheter som låter vissa appar köras vid start utan att begära användaruppgifter. -
/data/misc/profiles
används av ART för profilstyrd sammanställning av appkod. -
Beskrivning av varje katalog framgår något av namnen, detaljer kan ses i API-dokumentation .
-
Cacheminnen rensas av operativsystemet när de har låg lagringsutrymme, så att appar som överstiger den tilldelade kvoten överst.
-
Appar ”privata
files
kataloger i extern lagring skannas inte automatiskt av MediaScanner menmedia
kataloger är. -
Cachar och
no_backup
-kataloger säkerhetskopieras inte till molnet. Se officiell dokumentation .
Svar
Svaret på din fråga du ställer är för stort. Jag kan dock ge dig ett grundläggande svar som täcker grunderna.
Det finns två typer av appar:
Root och non-root .
Root appar kan i princip lagra / ändra filer var de vill.
Icke-root appar kan bara lagra / ändra filer här: /sdcard/
och varje mapp som kommer efter.
De flesta installerade appar lagrar sig själva på /sdcard/Android/data
eller /sdcard/Android/obb
.
Några appar lagrar sina sparade spel / konfigurationsdatafiler på /sdcard/APPNAME/
, eller bara på /sdcard/
För att kunna använda root -appar, du måste ha rotat din Android-enhet och har gett tillstånd från en av superanvändarapparna.