Kunne du angive alle mulige mapper, hvor Android-apps kan gemme data, med en beskrivelse af, hvilken type data der er gemt i hver mappe?
Kommentarer
- Se også: Liste over specielle Android SD-kortmapper? / Er det muligt at omorganisere SD-kortet? Fordi det er et rod derinde / Hvilke mapper kan jeg fjerne i intern SD? / Tjek hvilken lagerplads en app bruger?
- Plus Android-mappe Hiearchy / Hvor i filsystemet er der gemt SMS-beskeder? / Hvor i filsystemet er applikationer installeret?
Svar
Alle apps (root eller ej) har en standarddatamappe, som er /data/data/<package_name>
. Som standard går apps-databaser, indstillinger og alle andre data her. Hvis en app forventer, at der lagres enorme mængder data eller af andre grunde ønsker at “være god til intern lagring”, er der en tilsvarende mappe på SDCard (Android/data/<package_name>
).
Bortset fra det kan alle apps gemme data overalt på SDCard, da der ikke er nogen begrænsninger – og mange apps gør det. De kan bruge katalognavne frit (og det gør de igen), hvilket ofte er gør det svært at beslutte, hvad alt det “junk” på kortet er beregnet til, og hvad der kan slettes.
Skønt, som Tom pegede ud , kunne root-apps gemme deres data næsten overalt på din enhed, de følger normalt de samme regler som andre apps.
Du kan finde en generel forklaring på Android-kataloghierarkiet i mit svar her . For dit specifikke spørgsmål tilføjer jeg muligvis nogle flere detaljer om /data/data/<package_name>
(og tilsvarende SD-del):
-
databases/
: her går appens databaser -
lib/
: biblioteker og hjælpere til appen -
files/
: andre relaterede filer -
shared_prefs/
: præferencer og indstillinger -
cache/
: godt, cacher
Der kan være flere flere mapper på dette sted eller færre – alt afhænger af appen. I sin egen “hjemmekatalog” (og det er, hvad det grundlæggende er, talt Linuxmæssigt), kan de placere filer, hvor de vil. Normalt er disse filer og kataloger kun tilgængelige af selve appen (og selvfølgelig root) – bortset fra dem, der er gemt på SDCard, og som er tilgængelige for alle apps.
Kommentarer
- Kommentarer er ikke til udvidet diskussion; denne samtale har blevet flyttet til chat .
Svar
Der opstod nogle større ændringer i lagring i Android 4.4 (se Androids Storage Journey ). Så følgende gælder generelt for Android 4.4+ og især 6+.
Dette er fra mit detaljerede svar til Hvordan diskplads bruges på Android-enhed? . Apps “filer gemmes (af systemet og selve appen) til intern og ekstern lagring under forskellige 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 det ovenstående stier på intern og ekstern lagring (primær og sekundær) er appens private mapper, som er tilgængelige for respektive app uden at anmode om tilladelse. Apps kan også oprette andre mapper (ikke eksplicit tilgængelige via APIer) i deres private lager. Alle disse mapper, der tilhører en app, slettes, når appen afinstalleres.
-
Derudover kan apps placere deres data overalt på primær ekstern lagring (inklusive nogle standardmapper og andre apps” private mapper) hvis
WRITE_EXTERNAL_STORAGE
tilladelse gives (getExternalStorageDirectory
returnerer/storage/emulated/<user_id>
). Til sekundær ekstern lagring og flytbar lagring anvendes SAF. Se detaljer i Hvordan gemmes filer på eksternt SD-kort? .I Android 10 er det imidlertid forældet at skrive direkte til primær ekstern delt lager (
getExternalStorageDirectory
oggetExternalStoragePublicDirectory
ikke mere tilgængelig). Apps skal bruge en af Androids indbyggede indholdsudbydere; enten MediaStore (til mediefiler) eller SAF (for enhver anden type filer). -
/data
stier kan blive erstattet med/mnt/expand/[UUID]
, når du bruger Adoptable Storage./storage/emulated
erstattes med/storage/[UUID]
, når du bruger sekundær ekstern lagring (som SD-kort). -
For flere brugere / profiler er
<user_id>
anderledes, enhedsejeren er altid0
./data/user/0
er et symlink til/data/data
af historiske årsager. Sekundær ekstern lagring er kun tilgængelig for enhedsejeren. -
OBB-biblioteket deles mellem brugere / profiler (op til Android 9) for at spare plads. FUSE /
sdcardfs
udsætter altid/storage/emulated/obb
som/storage/emulated/<user_id>/Android/obb
. -
/data/user_de
er Enhedskrypteret lagerplads på FBE-enheder, der lader bestemte apps køre ved opstart uden at bede om brugeroplysninger. -
/data/misc/profiles
bruges af ART til profilstyret samling af appkode. -
Beskrivelse af hver mappe fremgår tydeligt af navne, detaljer kan ses i API-dokumentation .
-
Cacher ryddes af operativsystemet, når der er lavt lagerplads, hvilket holder apps, der overstiger den tildelte kvote øverst.
-
Apps “private
files
mapper i eksternt lager lagres ikke automatisk af MediaScanner , menmedia
mapper er. -
Caches og
no_backup
-mapper sikkerhedskopieres ikke til skyen. Se officiel dokumentation .
Svar
Svaret på dit spørgsmål, du stiller, er for stort. Jeg kan dog give dig et grundlæggende svar, der dækker det grundlæggende.
Der findes to slags apps:
Root og non-root .
Root apps kan dybest set gemme / ændre filer, hvor de vil.
Ikke-root apps kan kun gemme / ændre filer her: /sdcard/
og hver mappe, hvad der kommer efter.
De fleste installerede apps gemmer sig selv på /sdcard/Android/data
eller /sdcard/Android/obb
.
Nogle apps gemmer deres gemte spil / konfigurationsdatafiler på /sdcard/APPNAME/
eller bare på /sdcard/
For at kunne bruge root apps, skal du have rodfæstet din Android-enhed og have givet tilladelse fra en af superbrugerapps.