Zdezorientowany wieloma lokalizacjami wirtualnej / sdcard /

46

Niektóre urządzenia (jak mój Nexus 4) nie mają zewnętrznego gniazda na kartę SD. Zamiast tego istnieje folder główny o nazwie, /sdcard/który jest traktowany w ten sam sposób. Ale znajduję też inne ścieżki, które wskazują na te same pliki - muszą istnieć jakieś przekierowania (myślę, że w Linuksie nazywa się to dowiązaniami symbolicznymi ).

Wszystkie te ścieżki zawierają te same pliki:

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

Która ścieżka jest „faktyczna”? Co z innymi ścieżkami? Do czego służą, dlaczego istnieją?

Torben Gundtofte-Bruun
źródło

Odpowiedzi:

38

Zalecany wykład: Dlaczego / sdcard / zamieniło się w / sdcard / 0 / z 4.2? .

Krótko mówiąc: ma to związek z funkcjonalnością dla wielu użytkowników wprowadzoną w Jelly Bean:

  • /storage/emulated/0/: o ile wiem, odnosi się to do „emulowanej MMC” („część właściciela”). Zwykle jest to wewnętrzny. „0” oznacza tutaj użytkownika, „0” jest pierwszym użytkownikiem, czyli właścicielem urządzenia. Jeśli utworzysz dodatkowych użytkowników, liczba ta będzie rosła dla każdego.
  • /storage/emulated/legacy/jak poprzednio, ale wskazując na część aktualnie pracującego użytkownika (dla właściciela byłoby to dowiązanie symboliczne /storage/emulated/0/). Ta ścieżka powinna więc doprowadzić każdego użytkownika do jego „części”.
  • /sdcard/: Według komentarza Shywim jest to dowiązanie symboliczne do ...
    • /mnt/sdcard (Android <4.0)
    • /storage/sdcard0 (Android 4.0+)
  • /storage/sdcard0/: Ponieważ nie ma legacytu wisiorka (patrz komentarze poniżej), „0” w tym przypadku raczej identyfikuje samo urządzenie (kartę). Ostatecznie można połączyć czytnik kart z inną kartą SD za pośrednictwem OTG, która wtedy stałaby się /storage/sdcard1(nie ma na to żadnego dowodu, tylko przypuszczenie - ale powiedziałbym, że jest dobry)

Chociaż można dojść do wniosku, że również powinno być /storage/sdcard/legacy, nie ma (patrz komentarze) - co całkowicie ma sens z moim założeniem, że liczby tutaj nie są związane z użytkownikiem, ale raczej z możliwymi wieloma kartami: 0 ”zawsze będzie tym w gnieździe karty urządzenia, więc nie ma potrzeby stosowania„ starszego łącza symbolicznego ”.

Izzy
źródło
Dzięki! I nie, nie ma /storage/sdcard/legacyścieżki.
Torben Gundtofte-Bruun
2
Dziwne. Ale może to mieć związek z faktem, że nie ma prawie żadnych uprawnień do prawdziwej karty SD (ze względu na brak obsługi systemu plików FAT). Biorąc pod uwagę różnicę (w /sdcard0/porównaniu /emulated/0), „0” tutaj może być przeznaczone dla przypadku, w którym podłącza się wiele kart SD za pomocą czytnika kart i trybu hosta USB. Tylko przypuszczenie, nie trudny fakt - ale powiedziałbym, że to dobry pomysł.
Izzy
Odpowiedź odpowiednio zaktualizowana :)
Izzy
2
/sdcard/jest po prostu dowiązaniem symbolicznym do /storage/sdcard0/. Tak jest w starszej wersji niż 4.0.0 /mnt/sdcard/.
Matthieu Harlé
Zakładam, że na Androidzie 4.0+ /mnt/sdcard/jest dowiązanie symboliczne do /storage/sdcard0/? Ponieważ oba są nawigowalne na moim Nexusie 4.
MrWhite
2

Trochę mylące, ale są to alternatywne ścieżki dla układu pamięci

/ mnt / sdcard0 / (Wewnętrzna wirtualna karta SD)

i Izzy poprawne, jeśli podłączonych jest więcej urządzeń, ale nazwy mogą się różnić w zależności od urządzenia.

dawny. / mnt / sdcard1 / (Fizyczna karta SD w gnieździe SD)

ale inne urządzenia, takie jak pamięć flash USB, łączą się z adapterem

/ mnt / media_rw / usbdisk (Android Kitkat 4.4 i nowszy?) lub / mnt / usbdisk (Jellybean 4.1 - 4.2)

XDarkMario
źródło
1
Tak, nazewnictwo może zależeć od urządzenia / producenta / ROM. Ale zwykle /mnt/*jest tylko dowiązaniem symbolicznym we wszystkich tych przypadkach - z „prawdziwymi wierzchowcami” znajdującymi się poniżej /storage:)
Izzy
Cóż, mam również folder powłoki pod mnt . Często zmieniam ROM urządzenia i dlatego w przypadku ROM-ów, które sprawiają, że zewnętrzna karta SD jest pamięcią domyślną, folder powłoki zachowuje się jak moja pamięć wewnętrzna, a dla innych ROM-ów, które nie zamieniają sdcard jako pamięci wewnętrznej, shell nawet nie przychodzi na zdjęcie. Po prostu pozostaje tam w folderze z nienaruszonymi wszystkimi danymi, ale nie jest dostępny dla lokalnego menedżera plików. Chciałem wiedzieć, co to dokładnie jest.
Ali_Waris