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

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 og getExternalStoragePublicDirectory 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 altid 0 . /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 , men media 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.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *