Pourriez-vous lister tous les répertoires possibles dans lesquels les applications Android peuvent stocker des données, en fournissant une description du type de données stockées dans chaque répertoire?
Commentaires
- Voir aussi: Liste des dossiers spéciaux de la carte SD Android? / Est-il possible de réorganiser la carte SD? Parce quil y a un désordre là-dedans / Quels répertoires puis-je supprimer dans la SD interne? / Vérifier le stockage utilisé par une application?
- Plus Dossier Android Hiearchy / Où sont stockés les messages SMS dans le système de fichiers? / Où dans le système de fichiers les applications sont-elles installées?
Réponse
Toutes les applications (root ou non) ont un répertoire de données par défaut, qui est /data/data/<package_name>
. Par défaut, les bases de données des applications, les paramètres et toutes les autres données se trouvent ici. Si une application sattend à ce que dénormes quantités de données soient stockées ou, pour dautres raisons, souhaite « être compatible avec le stockage interne », il « existe un répertoire correspondant sur la carte SD (Android/data/<package_name>
).
En dehors de cela, toutes les applications peuvent stocker des données nimporte où sur la carte SD, car il ny a aucune restriction – et de nombreuses applications le font. Elles peuvent utiliser les noms de répertoire librement (et elles le font encore une fois), ce qui est souvent le cas il est difficile de décider à quoi tout ce « indésirable » sur la carte est destiné, et à quoi il peut être supprimé.
Cependant, comme la souligné Tom , les applications root peuvent stocker leurs données presque partout sur votre appareil, elles suivent généralement les mêmes règles que les autres applications.
Vous pouvez trouver une explication générale de la hiérarchie des répertoires Android dans ma réponse ici . Pour votre question spécifique, je pourrais ajouter quelques détails sur le /data/data/<package_name>
(et la partie SD correspondante):
-
databases/
: voici les bases de données de lapplication -
lib/
: bibliothèques et aides pour lapplication -
files/
: autres fichiers associés -
shared_prefs/
: préférences et paramètres -
cache/
: eh bien, caches
Il peut y avoir plusieurs répertoires supplémentaires à cet endroit, ou moins – tout dépend de lapplication. Dans son propre «répertoire personnel» (et cest essentiellement ce que cest, parlé sous Linux), ils peuvent placer les fichiers où ils le souhaitent. Habituellement, ces fichiers et répertoires ne sont accessibles que par lapplication elle-même (et par la racine, bien sûr) – autres que ceux stockés sur la carte SD, qui sont accessibles par toutes les applications.
Commentaires
- Les commentaires ne sont pas destinés à une discussion approfondie; cette conversation a déplacé vers le chat .
Réponse
Certaines modifications majeures ont été apportées au stockage sous Android 4.4 (voir Parcours de stockage dAndroid ). Donc, ce qui suit est généralement vrai pour Android 4.4+ et en particulier 6+.
Ceci est de ma réponse détaillée à Comment lespace disque est utilisé sur un appareil Android? . Les fichiers des applications sont enregistrés (par le système et par lapplication elle-même) dans le stockage interne et externe sous différentes catégories.
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
-
Toutes les réponses ci-dessus les chemins sur le stockage interne et externe (principal et secondaire) sont des répertoires privés de lapplication qui sont accessibles à lapplication respective sans demander aucune autorisation. Les applications peuvent également créer dautres répertoires (non explicitement disponibles via les API) dans leur stockage privé. Tous ces répertoires appartenant à une application sont supprimés lorsque lapplication est désinstallée.
-
De plus, les applications peuvent placer leurs données nimporte où sur le stockage externe principal (y compris certains répertoires standard et autres » répertoires privés des applications) si lautorisation
WRITE_EXTERNAL_STORAGE
est accordée (getExternalStorageDirectory
renvoie/storage/emulated/<user_id>
). Pour le stockage externe secondaire et le stockage amovible, SAF est utilisé. Voir les détails dans Comment enregistrer des fichiers sur une carte SD externe? .Cependant, dans Android 10, lécriture directe sur le stockage partagé externe principal est obsolète (
getExternalStorageDirectory
etgetExternalStoragePublicDirectory
sont plus disponible). Les applications doivent utiliser lun des fournisseurs de contenu intégrés dAndroid; soit MediaStore (pour les fichiers multimédias) ou SAF (pour tout autre type de fichier). -
/data
les chemins peuvent être remplacés par/mnt/expand/[UUID]
lors de lutilisation du stockage adaptable./storage/emulated
est remplacé par/storage/[UUID]
lors de lutilisation dun stockage externe secondaire (comme une carte SD). -
Pour plusieurs utilisateurs / profils
<user_id>
est différent, le propriétaire de lappareil est toujours0
./data/user/0
est un lien symbolique vers/data/data
pour des raisons historiques. Le stockage externe secondaire nest disponible que pour le propriétaire de lappareil. -
Le répertoire OBB est partagé entre les utilisateurs / profils (jusquà Android 9) pour économiser de lespace. FUSE /
sdcardfs
expose toujours/storage/emulated/obb
comme/storage/emulated/<user_id>/Android/obb
. -
/data/user_de
est le stockage chiffré de lappareil sur les appareils FBE qui permet à certaines applications de sexécuter au démarrage sans demander les informations didentification de lutilisateur. -
/data/misc/profiles
sont utilisés par ART pour la compilation guidée par profil du code dapplication. -
La description de chaque répertoire est quelque peu évidente à partir des noms, les détails peuvent être consultés dans la documentation de lAPI .
-
Les caches sont effacés par le système dexploitation lorsque la capacité de stockage est insuffisante, ce qui permet aux applications de dépasser le quota alloué.
-
Apps « private
files
les répertoires du stockage externe ne sont pas automatiquement analysés par MediaScanner , contrairement aux répertoiresmedia
. -
Les caches et les répertoires
no_backup
ne sont pas sauvegardés dans le cloud. Consultez la documentation officielle .
Réponse
La réponse à votre question que vous posez est trop grande. Je peux cependant vous donner une réponse de base qui couvre les bases.
Il existe deux types dapplications:
Root et non-root .
Root les applications peuvent essentiellement stocker / modifier des fichiers où elles le souhaitent.
Les applications non root ne peuvent stocker / modifier des fichiers quici: /sdcard/
et tous les dossiers suivants.
La plupart des applications installées se stockent dans /sdcard/Android/data
ou /sdcard/Android/obb
.
Certains les applications stockent leurs jeux de sauvegarde / fichiers de données de configuration sur /sdcard/APPNAME/
, ou simplement sur /sdcard/
Pour pouvoir utiliser root applications, vous devrez « avoir rooté votre appareil Android et avoir donné lautorisation de lune des applications de superutilisateur.