Voisitteko luetella kaikki mahdolliset hakemistot, joihin Android-sovellukset voivat tallentaa tietoja, kuvailemalla, millaista tietoa kuhunkin hakemistoon on tallennettu?
Kommentit
- Katso myös: Luettelo erityisistä Android SD -korttikansioista? / Voiko SD-kortin järjestää uudelleen? Koska siellä on sotku / Mitkä hakemistot voin poistaa sisäiseltä SD: ltä? / Tarkista, mitä tallennustilaa sovellus käyttää?
- Plus Android-kansio Hiearchy / Mihin tiedostojärjestelmään tekstiviestit on tallennettu? / Mihin tiedostojärjestelmään sovellukset on asennettu?
vastaus
Kaikilla sovelluksilla (juurella tai ei) on oletusdatahakemisto, joka on /data/data/<package_name>
. Oletuksena sovellustietokannat, asetukset ja kaikki muut tiedot menevät tähän. Jos sovellus odottaa valtavien tietomäärien tallentamista tai haluaa muista syistä olla ”miellyttävä sisäiselle tallennustilalle”, SDCardissa on vastaava hakemisto (Android/data/<package_name>
).
Sen lisäksi kaikki sovellukset voivat tallentaa tietoja mihin tahansa SDCard-kortille, koska mitään rajoituksia ei ole – ja monet sovellukset tekevät niin. He voivat käyttää hakemistojen nimiä vapaasti (ja tekevät jälleen), mikä on usein vaikeuttaa sen päättämistä, mihin kaikki kortin ”roskat” on tarkoitettu ja mikä se voidaan poistaa.
Kuitenkin, kuten Tom huomautti ulos , juurisovellukset voisivat tallentaa tietonsa melkein kaikkialle laitteeseesi, ne noudattavat yleensä samoja sääntöjä kuin muut sovellukset.
Löydät yleisen selityksen Android-hakemistohierarkiasta kohdasta vastaukseni tähän . Voit lisätä tiettyyn kysymykseesi lisätietoja /data/data/<package_name>
: stä (ja vastaavaan SD-osaan):
-
databases/
: siirry sovelluksen tietokantoihin -
lib/
: sovelluksen kirjastot ja apulaitteet -
files/
: muut liittyvät tiedostot -
shared_prefs/
: asetukset ja asetukset -
cache/
: hyvin, välimuistit
Tässä paikassa voi olla useita tai vähemmän hakemistoja – kaikki riippuu sovelluksesta. Omassa ”kotihakemistossa” (ja juuri siinä se on, puhuttu Linux-tavalla) he voivat sijoittaa tiedostoja haluamaansa paikkaan. Yleensä nämä tiedostot ja hakemistot ovat vain sovelluksen itsensä (ja tietysti pääkäyttäjän) käytettävissä. – muut kuin SDCard-kortille tallennetut, joihin kaikki sovellukset pääsevät.
Kommentit
- Kommentteja ei ole tarkoitettu laajempaan keskusteluun; tätä keskustelua on käyty siirretty chatiin .
vastaus
Joitakin merkittäviä muutoksia tapahtui Android 4.4: n tallennustilassa (katso Androidin tallennusmatka ). Joten seuraava pätee yleensä Android 4.4+ -käyttöjärjestelmään ja erityisesti 6+ -käyttöjärjestelmään.
Tämä on minun yksityiskohtaisesta vastauksestani kysymykseen Kuinka levytilaa käytetään Android-laitteessa? . Sovellusten tiedostot tallennetaan (järjestelmän ja sovelluksen itsensä mukaan) sisäiseen ja ulkoiseen tallennustilaan eri luokkiin.
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
-
Kaikki yllä olevat sisäisen ja ulkoisen tallennustilan polut (ensisijainen ja toissijainen) ovat sovelluksen yksityisiä hakemistoja, joihin kyseinen sovellus pääsee ilman lupaa. Sovellukset voivat myös luoda muita hakemistoja (joita ei ole nimenomaisesti saatavana sovellusliittymien kautta) yksityiseen tallennustilaansa. Kaikki nämä sovellukseen kuuluvat hakemistot poistetaan, kun sovellus poistetaan.
-
Lisäksi sovellukset voivat sijoittaa tietonsa mihin tahansa ensisijaiseen ulkoiseen tallennustilaan (mukaan lukien jotkut vakiohakemistot ja muut sovellusten yksityiset hakemistot, jos
WRITE_EXTERNAL_STORAGE
-oikeus myönnetään (getExternalStorageDirectory
palauttaa/storage/emulated/<user_id>
). Toissijaista ulkoista tallennustilaa ja irrotettavaa tallennustilaa varten käytetään SAF: ää. Katso yksityiskohdat kohdasta Kuinka tiedostot tallennetaan ulkoiselle SD-kortille? .Kuitenkin Android 10: ssä suoraan ensisijaiseen ulkoiseen jaettuun tallennustilaan kirjoittaminen on vanhentunut (
getExternalStorageDirectory
jagetExternalStoragePublicDirectory
ovat ei enää saatavilla). Sovellusten on käytettävä yhtä Androidin sisäänrakennetusta sisällöntarjoajasta. joko MediaStore (mediatiedostoille) tai SAF (minkä tahansa muun tyyppiset tiedostot). -
/data
-polut voidaan korvata/mnt/expand/[UUID]
-toiminnolla, kun käytetään Adoptable Storage -tallennustilaa./storage/emulated
korvataan nimellä/storage/[UUID]
käytettäessä toissijaista ulkoista tallennustilaa (kuten SD-korttia). -
Useille käyttäjille / profiileille
<user_id>
on erilainen, laitteen omistaja on aina0
./data/user/0
on symboli linkkiin/data/data
historiallisista syistä. Toissijainen ulkoinen tallennustila on vain laitteen omistajan käytettävissä. -
OBB-hakemisto jaetaan käyttäjien / profiilien (enintään Android 9) kesken tilan säästämiseksi. FUSE /
sdcardfs
paljastaa aina/storage/emulated/obb
nimellä/storage/emulated/<user_id>/Android/obb
. -
/data/user_de
on laitteen salattu tallennustila FBE-laitteilla, jonka avulla tietyt sovellukset voivat käynnistyä käynnistämättä käyttäjän tunnuksia./data/misc/profiles
käytetään ART: lla sovelluskoodin profiiliohjattuun kokoamiseen . -
Kunkin hakemiston kuvaus käy hieman ilmi nimistä, yksityiskohdat näkyvät -sovellusliittymän ohjeissa .
-
Käyttöjärjestelmä tyhjentää välimuistit, kun tallennustila on vähissä, jolloin sovellukset ylittävät sallitun kiintiön.
-
Sovellukset ”private
files
ulkoisen tallennustilan hakemistoja ei skannaa automaattisesti MediaScanner , muttamedia
hakemistoja. -
Välimuistit ja
no_backup
hakemistot eivät ole varmuuskopioitu pilveen. Katso virallinen dokumentaatio .
Vastaa
Vastaus kysymykseesi on liian iso. Voin kuitenkin antaa sinulle perusvastauksen, joka kattaa perusasiat.
On olemassa kahdenlaisia sovelluksia:
Root ja non root .
Root -sovellukset voivat periaatteessa tallentaa / muokata tiedostoja missä tahansa.
Ei-root -sovellukset voivat tallentaa / muokata tiedostoja vain tähän: /sdcard/
ja kaikki seuraavat kansiot.
Asennetut sovellukset tallentavat enimmäkseen osoitteisiin /sdcard/Android/data
tai /sdcard/Android/obb
.
Jotkut sovellukset tallentavat tallennetut pelit / määritystiedostot tiedostoon /sdcard/APPNAME/
tai vain /sdcard/
Voit käyttää root -sovellukset, sinun on oltava juurtunut Android-laitteellesi ja antanut luvan joltakin pääkäyttäjäsovelluksista.