Einige Geräte (wie mein Nexus 4) haben keinen externen Steckplatz für eine SD-Karte. Stattdessen gibt es einen Stammordner namens /sdcard/
, der genauso behandelt wird. Aber ich finde auch andere Pfade, die alle auf dieselben Dateien verweisen - es muss eine Art Weiterleitung geben (ich glaube, das wird unter Linux Symlinks genannt).
Alle diese Pfade enthalten dieselben Dateien:
/sdcard/
/storage/sdcard0/
/storage/emulated/0/
/storage/emulated/legacy/
Welcher Weg ist der "eigentliche"? Was ist mit den anderen Pfaden? Wozu dienen sie, warum gibt es sie?
Vortragsempfehlung: Warum wurde /sdcard/ mit 4.2 zu /sdcard/0/? .
Kurz gesagt: Es hat mit der mit Jelly Bean eingeführten Multi-User-Funktionalität zu tun:
/storage/emulated/0/
: Meines Wissens bezieht sich dies auf die "emulierte MMC" ("Besitzerteil"). Normalerweise ist dies die interne. Die „0“ steht hier für den Benutzer, „0“ ist der erste Benutzer bzw. Gerätebesitzer. Wenn Sie weitere Benutzer erstellen, wird diese Zahl für jeden erhöht./storage/emulated/legacy/
wie zuvor, zeigt aber auf den Teil des aktuell arbeitenden Benutzers (für den Eigentümer wäre dies ein Symlink zu /storage/emulated/0/
). Dieser Weg soll also jeden User zu seinem "Teil" bringen./sdcard/
: Laut einem Kommentar von Shywim ist dies ein Symlink zu...
/mnt/sdcard
(Android < 4.0)/storage/sdcard0
(Android 4.0+)/storage/sdcard0/
: Da es hier kein legacy
Pendant gibt (siehe Kommentare unten), identifiziert die "0" in diesem Fall eher das Gerät (Karte) selbst. Man könnte schließlich einen Kartenleser mit einer anderen SD-Karte über OTG verbinden, was dann würde /storage/sdcard1
(kein Beweis dafür, nur eine Vermutung - aber ich würde sagen, ein guter)Obwohl man zu dem Schluss kommen könnte, dass es auch ein geben sollte /storage/sdcard/legacy
, gibt es keins (siehe Kommentare) – was bei meiner Annahme, dass sich die Zahlen hier nicht auf den Benutzer beziehen, sondern auf mögliche Mehrfachkarten, völlig sinnvoll ist: „ 0" wäre immer diejenige im Kartensteckplatz des Geräts, daher ist hier kein "Legacy-Symlink" erforderlich.
Ja, ein bisschen verwirrend, aber das sind alternative Pfade für das Speicherlayout
/mnt/sdcard0/ (interne virtuelle SD-Karte)
und Izzy haben Sie Recht, wenn mehr Geräte angeschlossen sind, aber die Benennung kann je nach Gerät unterschiedlich sein.
Ex. /mnt/sdcard1/ (Physische SD-Karte im SD-Steckplatz)
aber auch andere geräte wie zB ein usb-stick mit adapter können aufgerufen werden
/mnt/media_rw/usbdisk (Android Kitkat 4.4 und höher?) oder /mnt/usbdisk (Jellybean 4.1 - 4.2)
/mnt/*
ist es in all diesen Fällen nur ein Symlink – mit den "echten Reittieren" darunter /storage
:)
Torben Gundtofte-Bruun
/storage/sdcard/legacy
Weg.Izzy
/sdcard0/
versus/emulated/0
), die "0" hier könnte für den Fall gedacht sein, dass man mehrere SD-Karten über einen Kartenleser und dann den USB-Host-Modus anschließt. Nur eine Vermutung, keine harte Tatsache – aber ich würde sagen, eine gute.Matthieu Harle
/sdcard/
ist einfach ein symbolischer Link zu/storage/sdcard0/
. Bei älteren Versionen als 4.0.0 ist es/mnt/sdcard/
.Herr weiß
/mnt/sdcard/
ist ein Symlink zu/storage/sdcard0/
? Da beide auf meinem Nexus 4 navigierbar sind.Izzy
Toni19
/storage/sdcard0/
widerspricht der Antwort auf die von Ihnen verlinkte Frage , in der Sie sagen, dass sich die "0"sdcard0
auf die Benutzer-ID bezieht.Izzy
/sdcard0
ist die erste SD-Karte, während/sdcard/0
der Teil der SD-Karte des ersten Benutzers ist :) Abgesehen davon wird hier nach 4.0+ gefragt – während diese Mehrbenutzer-Sachen waren erst mit 4.2+ eingeführt.Gili Nachum