Kan du liste opp alle mulige kataloger der Android-apper kan lagre data, og gi beskrivelse hva slags data som er lagret i hver katalog?
Kommentarer
- Se også: Liste over spesielle Android SD-kortmapper? / Er det mulig å omorganisere SD-kortet? Fordi det er et rot der / Hvilke kataloger kan jeg fjerne i intern SD? / Sjekk hvilken lagring en app bruker?
- Pluss Android-mappe Hiearchy / Hvor i filsystemet er SMS-meldinger lagret? / Hvor i filsystemet er applikasjoner installert?
Svar
Alle apper (root eller ikke) har en standard datakatalog, som er /data/data/<package_name>
. Som standard går appdatabasene, innstillingene og alle andre data hit. Hvis en app forventer at store mengder data skal lagres, eller av andre grunner ønsker å «være hyggelig mot intern lagring», er det en tilsvarende katalog på SDCard (Android/data/<package_name>
).
Bortsett fra det, kan alle apper lagre data hvor som helst på SDCard, ettersom det ikke er noen begrensninger – og mange apper gjør det. De kan bruke katalognavn fritt (og de gjør det igjen), det er det som ofte gjør det vanskelig å bestemme hva alt dette «søppelet» på kortet er ment for, og hva av det kan slettes.
Skjønt, som Tom pekte ut , kunne root-apper lagre dataene sine nesten overalt på enheten din, de følger vanligvis de samme reglene som andre apper.
Du kan finne en generell forklaring på Android-kataloghierarkiet i mitt svar her . For det spesifikke spørsmålet ditt kan jeg legge til noen flere detaljer på /data/data/<package_name>
(og tilhørende SD-del):
-
databases/
: her går appens databaser -
lib/
: biblioteker og hjelpere for appen -
files/
: andre relaterte filer -
shared_prefs/
: innstillinger og innstillinger -
cache/
: vel, cacher
Det kan være flere kataloger på dette stedet, eller færre – alt avhenger av appen. I sin egen «hjemmekatalog» (og det er det det egentlig er, snakkes Linuxmessig), kan de plassere filer der de vil. Vanligvis er disse filene og katalogene bare tilgjengelige av selve appen (og rot, selvfølgelig) – bortsett fra de som er lagret på SDCard, og som er tilgjengelige for alle apper.
Kommentarer
- Kommentarer er ikke til utvidet diskusjon; denne samtalen har blitt flyttet til chat .
Svar
Noen store endringer skjedde i lagring i Android 4.4 (se Androids Storage Journey ). Så følgende gjelder generelt for Android 4.4+ og spesielt 6+.
Dette er fra mitt detaljerte svar på Hvordan diskplass brukes på Android-enheter? . Appers «filer lagres (av systemet og selve appen) til intern og ekstern lagring under forskjellige 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
-
Alt ovenfor stier på intern og ekstern lagring (primær og sekundær) er appens private kataloger som er tilgjengelige for respektive app uten å be om tillatelse. Apper kan også opprette andre kataloger (ikke eksplisitt tilgjengelig via API-er) i deres private lagring. Alle disse katalogene som tilhører en app slettes når appen avinstalleres.
-
I tillegg kan apper legge dataene sine hvor som helst på primær ekstern lagring (inkludert noen standardkataloger og andre apper» private kataloger) hvis
WRITE_EXTERNAL_STORAGE
tillatelse er gitt (getExternalStorageDirectory
gir/storage/emulated/<user_id>
). For sekundær ekstern lagring og flyttbar lagring brukes SAF. Se detaljer i Hvordan lagrer du filer på eksternt SD-kort? .I Android 10 avskrives imidlertid skriving direkte til primær ekstern delt lagring (
getExternalStorageDirectory
oggetExternalStoragePublicDirectory
ikke mer tilgjengelig). Apper må bruke en av Androids innebygde innholdsleverandører; enten MediaStore (for mediefiler) eller SAF (for alle andre typer filer). -
/data
baner kan bli erstattet med/mnt/expand/[UUID]
når du bruker Adoptable Storage./storage/emulated
blir erstattet med/storage/[UUID]
når du bruker sekundær ekstern lagring (som SD-kort). -
For flere brukere / profiler er
<user_id>
annerledes, enhetseieren er alltid0
./data/user/0
er en symlink til/data/data
av historiske årsaker. Sekundær ekstern lagring er bare tilgjengelig for enhetseieren. -
OBB-katalogen deles mellom brukere / profiler (opptil Android 9) for å spare plass. FUSE /
sdcardfs
avslører alltid/storage/emulated/obb
som/storage/emulated/<user_id>/Android/obb
. -
/data/user_de
er Enhetskryptert lagring på FBE-enheter som lar bestemte apper kjøre ved oppstart uten å be om brukerlegitimasjon. -
/data/misc/profiles
brukes av ART for profilstyrt samling av appkode. -
Beskrivelse av hver katalog fremgår noe av navn, detaljer kan sees i API-dokumentasjon .
-
Cacher tømmes av operativsystemet når de har lite lagringsplass, og holder apper som overskrider den tildelte kvoten på toppen.
-
Apper «private
files
kataloger i ekstern lagring skannes ikke automatisk av MediaScanner , menmedia
kataloger er. -
Cacher og
no_backup
kataloger blir ikke sikkerhetskopiert til skyen. Se offisiell dokumentasjon .
Svar
Svaret på spørsmålet du stiller er for stort. Jeg kan imidlertid gi deg et grunnleggende svar som dekker det grunnleggende.
Det finnes to typer apper:
Root og non-root .
Root apper kan i utgangspunktet lagre / endre filer hvor de vil.
Ikke-rot apper kan bare lagre / endre filer her: /sdcard/
og hver mappe som kommer etter.
De fleste installerte appene lagrer seg selv på /sdcard/Android/data
eller /sdcard/Android/obb
.
Noen apper lagrer sine lagrede spill / konfigurasjonsdatafiler på /sdcard/APPNAME/
, eller bare på /sdcard/
For å kunne bruke root apps, må du ha rotet Android-enheten din og ha gitt tillatelse fra en av superbrukerappene.