应用安卓目录:
普通三方app:/data/app/
普通系统应用:/system/app/
特权系统应用:/system/priv-app/
安装存储目录解析
1.访问方法:
Environment.getDataDirectory() = /data
Environment.getDownloadCacheDirectory() = /cache
Environment.getExternalStorageDirectory() = /storage/emulated/0
Environment.getExternalStoragePublicDirectory(“test”) =/storage/emulated/0/test
Environment.getRootDirectory() = /system
getPackageCodePath() = /data/app/包名-1/base.apk
getPackageResourcePath() = /data/app/包名-1/base.apk
getCacheDir() =/data/user/0/包名/cache
getDatabasePath(“test”) = /data/user/0/包名/databases/test
getDir(“test”, Context.MODE_PRIVATE)=/data/user/0/包名/app_test
getExternalCacheDir() =/storage/emulated/0/Android/data/包名/cache
getExternalFilesDir(“test”)= /storage/emulated/0/Android/data/包名/files/test
getExternalFilesDir(null) =/storage/emulated/0/Android/data/包名/files
getFilesDir() = /data/user/0/包名/files
2.储存位置解析
内部存储 和 外部存储 都是设备内置存储的一部分,它们通常是由NAND闪存构成。
ROM 在现代移动设备中通常指的是设备的内置存储,但严格来说,ROM应该是指那些不可写入或不易更改内容的存储区域。
内部存储 是私有的,仅供应用自己使用;外部存储 是共享的,可供多个应用访问。
因此,可以说内部存储和外部存储都是设备ROM的一部分,但它们的功能和用途是不同的
2.1外部存储(是共享的,可供多个应用访问。)
/storage/emulated/legacy(legacy是用户id,legacy可以是0、1、2……)。
而/storage/sdcard0, /sdcard, /mnt/sdcard都为软连接到/storage/emulated/legacy(真正存储的地方)
- 共享性:外部存储可以被多个应用共享,因此任何应用都可以访问存储在外部存储上的文件(只要它们具有相应的权限)。
- 持久性:外部存储的数据同样是持久化的,但在某些情况下,如用户清除应用缓存或设备重置,数据可能会被删除。
- 存储位置:外部存储通常指的是SD卡或设备内置的一个可被用作公共存储区域的部分,路径可能是/storage/emulated/0/或类似的位置。
- 存储类型:外部存储适合存储非关键性的数据,如多媒体文件(图片、视频、音乐等)、缓存文件等。
- 生命周期:外部存储的数据在应用卸载后可能仍然存在,除非应用明确地删除了这些文件。
2.2内部存储(私有的,仅供应用自己使用,别的应用访问不到,除非root了)
常见就是我们的/data/data目录下的数据,实际是挂载在/data/user/0上,/data/data软连接到/data/user/0
- 私有性:内部存储是私有的,只能被存储数据的应用本身访问。其他应用无法直接读取或修改存储在此的数据。
- 持久性:内部存储的数据是持久化的,即当设备重启或应用关闭后,数据不会丢失。
- 存储位置:内部存储位于设备的/data/data/<package_name>/目录下
- 存储类型:内部存储通常用于存储应用的关键数据,例如数据库文件、配置文件等。 生命周期:当用户卸载应用时,内部存储中的所有数据都会被删除。