Плутати багато локацій віртуального / sdcard /


46

Деякі пристрої (наприклад, мій Nexus 4) не мають зовнішнього слота для SD-карти. Натомість є коренева папка, яка називається так само /sdcard/, як вона трактується. Але я також знаходжу інші шляхи, які всі вказують на одні і ті ж файли - там повинні бути якісь переадресації (я думаю, це називається символьними посиланнями в Linux).

Усі ці шляхи містять однакові файли:

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

Який шлях є "фактичним"? Що з іншими шляхами? Для чого вони використовуються, для чого вони існують?

Відповіді:


38

Рекомендована лекція: Чому / sdcard / перетворився на / sdcard / 0 / з 4.2? .

Коротше кажучи: це стосується багатокористувацької функціональності, представленої з Jelly Bean:

  • /storage/emulated/0/: наскільки мені відомо, це стосується "емуляції MMC" ("частини власника"). Зазвичай це внутрішній. Тут "0" означає користувача, "0" є першим користувачем aka власником пристрою. Якщо ви створите додаткових користувачів, це число збільшуватиметься для кожного.
  • /storage/emulated/legacy/як і раніше, але вказує на частину користувача, що працює в даний час (для власника це буде символьним посиланням на /storage/emulated/0/). Тож цей шлях повинен наблизити кожного користувача до своєї "частини".
  • /sdcard/: Відповідно до коментаря Шивіма , це символьне посилання на ...
    • /mnt/sdcard (Android <4.0)
    • /storage/sdcard0 (Android 4.0+)
  • /storage/sdcard0/: Оскільки тут немає legacyпідвіски (див. Коментарі нижче), "0" у цьому випадку швидше ототожнює пристрій (картку). Зрештою, можна підключити зчитувач карт з іншою SDCard через OTG, що потім стане /storage/sdcard1(ніяких доказів для цього, лише здогадка - але я б сказав хороший)

Хоча можна дійти висновку, що має бути і /storage/sdcard/legacyтакий, але його немає (див. Коментарі) - що цілком має сенс, якщо моє припущення про номери тут не стосується користувача, а скоріше можливих кількох карт: " 0 "завжди буде таким у слоті для картки пристрою, тому тут не потрібно" застарілого символьного посилання ".


Дякую! І ні, немає /storage/sdcard/legacyшляху.
Torben Gundtofte-Bruun

2
Дивно. Але це може бути пов'язане з тим, що на справжній sdcard (навряд чи файлова система FAT їх не підтримує) навряд чи є дозволи. Зазначаючи різницю ( /sdcard0/проти /emulated/0), тут "0" може бути призначений для випадку, коли ви приєднуєте кілька SDCards через зчитувач карт та режим хосту USB. Просто здогадка, не важкий факт - але я б сказав хороший.
Izzy

Відповідь оновлюється відповідно :)
Іззі

2
/sdcard/просто символьне посилання на /storage/sdcard0/. На старій версії , ніж 4.0.0, це /mnt/sdcard/.
Матьє Харле

І я припускаю, що на Android 4.0+ /mnt/sdcard/є символьним посиланням на /storage/sdcard0/? Оскільки обидва є навігаційними в моєму Nexus 4.
MrWhite

2

Так, трохи заплутано, але це альтернативні шляхи для компонування пам'яті

/ mnt / sdcard0 / (внутрішня віртуальна карта SD)

і Izzy правильно, якщо підключено більше пристроїв, але іменування може бути різним, залежно від пристрою.

колишній / mnt / sdcard1 / (фізична карта SD у слоті SD)

але інші пристрої, такі як флешка Usb, підключена до адаптера, можуть бути викликані

/ mnt / media_rw / usbdisk (android kitkat 4.4 і вище?) або / mnt / usbdisk (jellybean 4.1 - 4.2)


1
Так, називання може залежати від пристрою / виробника / ПЗУ. Але, як правило, /mnt/*це лише символьне посилання у всіх тих випадках - із "справжніми кріпленнями", які знаходяться внизу /storage:)
Izzy

Ну, у мене є папка оболонки під mnt . Я часто перемикаю ПЗУ пристрою, і, таким чином, для тих дисків, що робить зовнішню SDcard пам'яттю за замовчуванням, папка оболонки поводиться як моя внутрішня пам'ять, а для інших дисків, які не замінюють sdcard як внутрішню пам'ять, оболонка навіть не поставляється в картину. Він просто залишається там у папці з усіма недоторканими даними, але не доступний місцевим файловим менеджерам. Хотів дізнатися, що це саме.
Ali_Waris
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.