Se produjeron algunos cambios importantes en el almacenamiento en Android 4.4 (ver Journey del almacenamiento de Android). Por lo tanto, lo siguiente es generalmente cierto para Android 4.4+ y especialmente 6+.
Esto es parte de mi respuesta detallada a ¿Cómo se utiliza el espacio en disco en un dispositivo Android?. Los archivos de las aplicaciones se guardan (tanto por el sistema como por la aplicación misma) en el almacenamiento interno y externo en diferentes categorías.
Directorio
Descripción/API
Código de la app
/data/app/*
(directorio de instalación de aplicaciones de usuario)
/data/app/*/base.apk
(archivo .apk
original)
/data/app/*/lib//*.so
(bibliotecas compartidas)
/data/app/*/oat//base.[art|odex|vdex]
(código ejecutable compilado)
/data/dalvik-cache//*.[art|dex|oat|vdex]
(código ejecutable compilado, solo para aplicaciones del sistema)
/data/misc/profiles/cur///primary.prof
(perfil ART)
/data/misc/profiles/ref//primary.prof
(perfil ART)
Almacenamiento interno
/data/user[_de]//
getDataDir
/data/user[_de]///files
getFilesDir
/data/user[_de]///[code_]cache
getCacheDir
o getCodeCacheDir
/data/user[_de]///databases
getDatabasePath
/data/user[_de]///no_backup
getNoBackupFilesDir
/data/user[_de]///shared_prefs
getSharedPreferences
Almacenamiento externo
/storage/emulated/obb//*.obb
(compartido por múltiples usuarios, expuesto en la vista siguiente)
/storage/emulated//Android/obb//*..obb
getObbDirs
/storage/emulated//Android/media/
getExternalMediaDirs
/storage/emulated//Android/data//
getExternalFilesDirs
/storage/emulated//Android/data//files
getExternalFilesDirs
/storage/emulated//Android/data//[code_]cache
getExternalCacheDirs
-
Todos los caminos anteriores dentro del almacenamiento interno y externo (primario y secundario) son directorios privados de la aplicación a los que puede acceder la aplicación respectiva sin necesidad de solicitar ningún permiso. Las aplicaciones también pueden crear otros directorios (no disponibles explícitamente a través de las API) en su almacenamiento privado. Todos estos directorios pertenecientes a una aplicación se eliminan cuando se desinstala la aplicación.
-
Además, las aplicaciones pueden colocar sus datos en cualquier lugar del almacenamiento externo primario (incluidos algunos directorios estándar y directorios privados de otras aplicaciones) si se otorga el permiso WRITE_EXTERNAL_STORAGE
(getExternalStorageDirectory
devuelve /storage/emulated/
). Para el almacenamiento externo secundario y el almacenamiento extraíble, se utiliza SAF. Consulta los detalles en ¿Cómo guardar archivos en la tarjeta SD externa?.
Sin embargo, en Android 10, se deprecia la escritura directa en el almacenamiento externo compartido primario (getExternalStorageDirectory
y getExternalStoragePublicDirectory
ya no están disponibles). Las aplicaciones deben usar uno de los proveedores de contenido integrados en Android; ya sea MediaStore (para archivos multimedia) o SAF (para cualquier otro tipo de archivos).
-
Los caminos /data
pueden ser reemplazados por /mnt/expand/[UUID]
al utilizar Almacenamiento Adoptable. /storage/emulated
es reemplazado por /storage/[UUID]
al utilizar almacenamiento externo secundario (como una tarjeta SD).
-
Para múltiples usuarios/perfiles, es diferente, el propietario del dispositivo siempre es 0
. /data/user/0
es un enlace simbólico a /data/data
por razones históricas. El almacenamiento externo secundario solo está disponible para el propietario del dispositivo.
-
El directorio OBB se comparte entre usuarios/perfiles (hasta Android 9) para ahorrar espacio. FUSE/sdcardfs
siempre expone /storage/emulated/obb
como /storage/emulated//Android/obb
.
-
/data/user_de
es el almacenamiento cifrado del dispositivo en dispositivos FBE que permite que ciertas aplicaciones se ejecuten al arrancar sin solicitar credenciales de usuario.
-
/data/misc/profiles
es utilizado por ART para la compilación guiada por perfil del código de la aplicación.
-
La descripción de cada directorio es en parte evidente por los nombres, los detalles se pueden ver en la documentación de la API.
-
Los cachés se eliminan por el SO cuando se queda sin espacio, manteniendo las aplicaciones que superan la cuota asignada en la parte superior.
-
Los directorios privados de las aplicaciones en el almacenamiento externo no se escanean automáticamente por MediaScanner pero los directorios de media
sí.
-
Los cachés y los directorios de no_backup
no se respaldan en la nube. Consulta la documentación oficial.
1 votos
Ver también: Lista de carpetas especiales de la tarjeta SD de Android? / ¿Es posible reorganizar la tarjeta SD? Porque está hecha un lío ahí dentro / ¿Qué directorios puedo eliminar en la SD interna? / ¿Cómo verificar el espacio que una app ocupa?
0 votos
Además Jerarquía de Carpetas en Android / ¿Dónde se guardan los mensajes SMS en el sistema de archivos? / ¿Dónde se instalan las aplicaciones en el sistema de archivos?