被虚拟的/ sdcard /的许多位置所迷惑


46

某些设备(例如我的Nexus 4)没有用于SD卡的外部插槽。而是有一个称为根文件夹的/sdcard/处理方式相同。但是我还找到了所有指向相同文件的其他路径-必须进行某种重定向(我认为在Linux中这称为符号链接)。

所有这些路径都包含相同的文件:

/sdcard/
/storage/sdcard0/
/storage/emulated/0/
/storage/emulated/legacy/

“实际”路径是哪一条?那其他路径呢?它们有什么用,为什么存在?

Answers:


38

推荐的演讲:为什么/ sdcard /在4.2中变成/ sdcard / 0 /?

简而言之:它与Jelly Bean引入的多用户功能有关:

  • /storage/emulated/0/:据我所知,这是指“模拟的MMC”(“所有者”)。通常这是内部的。“ 0”在这里代表用户,“ 0”是第一个用户,即设备所有者。如果您创建其他用户,则每个用户的此数字都会增加。
  • /storage/emulated/legacy/和以前一样,但指向当前正在工作的用户(对于所有者,这将是的符号链接/storage/emulated/0/)。因此,此路径应将每个用户带到他的“部分”。
  • /sdcard/:根据Shywim评论,这是与...的符号链接。
    • /mnt/sdcard (Android <4.0)
    • /storage/sdcard0 (Android 4.0以上版本)
  • /storage/sdcard0/:由于此处没有legacy吊坠(请参见下面的注释),因此在这种情况下,“ 0”表示设备(卡)本身。最终,一个人可以通过OTG将读卡器与另一个SDCard连接,然后变成/storage/sdcard1(没有证据,只是一个猜测-但我会说一个不错的选择)

尽管可能会得出一个结论,但也应该有一个结论/storage/sdcard/legacy(请参阅注释),这与我对此处数字与用户无关,而与可能的多张卡片无关的假设完全有意义。 “ 0”将始终是设备卡插槽中的那个,因此此处无需“旧版符号链接”。


谢谢!不,没有/storage/sdcard/legacy路径。
2013年

2
奇怪。但这可能与以下事实有关:对真正的sdcard几乎没有任何权限(由于FAT文件系统不支持它们)。注意差异(/sdcard0//emulated/0),此处的“ 0”可能适用于通过读卡器和USB主机模式连接多个SD卡的情况。只是一个猜测,不是一个硬事实-但我会说一个好话。
伊兹

答案已相应更新:)
Izzy

2
/sdcard/仅仅是一个符号链接/storage/sdcard0/。在4.0.0之前的版本中,它是/mnt/sdcard/
MatthieuHarlé13年

我认为在Android 4.0+上,/mnt/sdcard/是的符号链接/storage/sdcard0/吗?由于两者都是在通航我的Nexus 4
MrWhite

2

是的,有点令人困惑,但这是内存布局的备用路径

/ mnt / sdcard0 /(内部虚拟SD卡)

如果连接了更多设备,请打扰您的正确,但是命名因设备而异。

例如 / mnt / sdcard1 /(SD插槽中的物理SD卡)

但是其他设备(例如USB闪存驱动器)与适配器连接

/ mnt / media_rw / usbdisk(Android kitkat 4.4及更高版本?)或/ mnt / usbdisk(软糖4.1-4.2)


1
是的,命名可能取决于设备/制造商/ ROM。但是通常,/mnt/*在所有这些情况下,它只是一个符号链接–“真实的坐骑”位于下面/storage:)
Izzy

好吧,我在mnt下也有一个shell文件夹。我经常切换设备ROM,因此,对于那些将外部SDcard用作默认内存的rom,shell文件夹将充当我的内部内存,而对于其他不将sdcard交换为内部内存的rom,shell甚至都不会出现成图片。它只会保留所有数据完整的文件夹中的位置,但不能由本地文件管理器访问。想知道到底是什么。
Ali_Waris 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.