所以环顾四周后,我发现了/sdcard、/storage/self/primary、/storage/emulated/0、/storage/sdcard0。截至目前,我没有 root 访问权限,所以我无法检查,但据我记得 /data 中也有一个。所以我想知道为什么同一个地方有这么多符号链接?他们之间有什么区别吗?
确实如此,还有许多其他条目似乎针对 Android 设备的相同内部存储。
/sdcard
:这是 Android 10 之前的 Android 版本中早期使用的旧路径,用于引用设备的主要外部存储,即 SD 卡。
/storage/self/primary
:它是在 Android 10(API 级别 29)中添加的,作为访问设备主内部存储的“Android”路径的推荐替代方案。
/storage/emulated/0
:这是一个副本,充当文件真实位置的链接。这是访问许多应用程序内部存储的常见方法。通常,它指向 /storage/self/primary
。
向后兼容性:Micro SD 卡支持与仍使用此路径的遗留程序的兼容性。
标准化:可靠的路径 –
/storage/self/primary
– 为所有设备和 Android 版本提供通用命名。
抽象:因此,
/storage/emulated/0
是一个抽象层,这将使系统能够在后台更改存储路径,但不会影响依赖于该路径的应用程序。
/data
目录对应用程序及其数据和设置进行分区,但没有用户文件。它通常不用于一般文件存储,大多数应用程序可能无法访问它。
在大多数情况下,在现代 Android 设备上(Android 10 及更高版本),您可以使用
/storage/self/primary
或 /storage/emulated/0
访问内部存储。
旧的
/sdcard
只是为了保持向后兼容性。
这些路径通常指向相同的目的地,并且可以激励未来的升级。
/data
是一个与内部路径具有不同用途的目录(用于存储应用程序数据)。
如果您了解 Android 上的各种路径及其意图,您就可以确定哪条路径适合您的程序的要求。
参考链接: