Ich habe kürzlich mein Handy auf ein LG Motion 4G (Android 4 ICS) aktualisiert. Ich sehe, dass die SD-Karte bei eingehängt ist /sdcard/external_sd
. Mir ist auch aufgefallen, dass dies auch bei einigen anderen neueren Modellen der Fall zu sein scheint. Apps erwarten, dass sich die SD-Karte auf befindet /sdcard
. Ich gehe davon aus, dass die Hersteller viel internen Speicher einbinden möchten, aber warum internen Speicher an /sdcard
einbinden? Sollte dies nicht gegen irgendeine Form von Android-Spezifikationsstandard sein?
external-sd
storage
Sepero
quelle
quelle
Antworten:
Der Grund ist die Geschichte von Android: Die erste Generation von Android-Geräten verfügte nur über einen geringen internen Speicher (ca. 100-400 MB), unter dem gemountet wurde
/data
.Als nächstes kamen Geräte mit einer damals externen SD-Karte heraus. Die SD-Karte wurde unter montiert
/mnt/sdcard
.Danach kamen Geräte mit großem internen Speicher auf den Markt. Dieser Speicher wurde aufgeteilt, da er
/mnt/sdcard
zum Standardspeicherort für Big-Data-Chunks aus Apps, Bildern und dergleichen geworden war. Die Android-Umgebung musste also ein/data
und/mnt/sdcard
-Verzeichnis haben. Daher war eine Partition für/data
, die andere für/mnt/sdcard
. Dies ist der Grund, warum der Speicherplatz (die/data
Partition) niedrig werden kann, selbst wenn genügend Speicherplatz vorhanden ist/mnt/sdcard
.Diese Situation wurde mit Android 3.0 verbessert:
/data
und/mnt/sdcard
verweisen jetzt auf dieselbe Partition. Gute Arbeit Google, das hätte man schon vor Versionen machen können. Dies ist auch der Grund, warum app2sd unter Android 3.0 oder höher nicht mehr benötigt wird: Sie würden die Daten nur innerhalb desselben Volumes verschieben.Nun kommen wir zur Antwort auf Ihre Frage: Da
/mnt/sdcard
bereits auf dem internen Speicher gemountet ist, muss eine externe SD-Karte einen anderen Mount-Punkt verwenden. Und dieser Einhängepunkt wird von Google nicht angegeben. Es könnte sein/mnt/sdcard/ext_sd
/mnt/external
/mnt/extSdCard
/mnt/sdcard/external_sd
Der API-Aufruf zeigt
getExternalStorageDirectory()
normalerweise auf das interne Speicherverzeichnis. Dieses Verhalten ist dokumentiert. Es gibt Open-Source-Projekte, die Tools zum kanonischen Auffinden des externen SD-Kartenverzeichnisses bereitstellen .quelle
isExternalStorageRemovable()
ist zu prüfen, ob der "externe" Speicher austauschbar ist. Außerdem kann man die Mount-Punkte (mithilfe desmount
Befehls) ermitteln und nach Mount-Flags suchen für seine App selbst herauszufinden, und es gibt keinen einfachen API-Aufruf, um das für ihn zu tun?/data
Partition zusammengeführt werden, wie kann ich dann meine SD-Karte sicher ein- / aushängen, um sie beispielsweise in meinen PC einzustecken? Es scheint mir, dass es logisch ist, getrennte Partitionen zu haben, und ich verstehe nicht, warum das alles passieren musste./data
Partition, die zusammengeführt wird.This situation was improved with Android 3.0: /data and /mnt/sdcard are now pointing to the same parition
. Nur zu Ihrer Information, das gilt NICHT für mindestens ein Telefon mit Android 4.0 (Pantech Burst), bei dem/data
es sich um eine 1 GB ext4-Partition und/mnt/sdcard
eine 12 GB FAT32-Partition handelt./mnt/sdcard
Es ist technisch nicht sinnvoll, externe SD-Mounts vom Markt zu verdrängen. Auf diese Weise hilft Google Hardwareanbietern, einen Differenzierungspunkt für Telefone mit mehr internem Speicher zu schaffen.Es gibt keinen Grund, warum Anwendungen einen Weg finden müssen, um die externe Karte zu lokalisieren, wenn
/mnt/sdcard
eindeutig der Ort war, an dem die SD-Karte sein sollte, und Googles undefinierte Art des Ladens einer externen SD-Karte ist eine andere weniger als verbraucherfreundliche Methode, um die externe SD-Karte weniger nützlich zu machen neuere Android-Geräte. Es gibt keinen Grund, warum/data
und/mnt/sdcard
musste in der gleichen Partition auf neueren Version von Android mit Ausnahme des Herstellers zusammengeführt werden, um Telefone mit größerem internen Speicher von kostengünstigeren Einheiten mit weniger internem Speicher zu unterscheiden. Selbst wenn die Zusammenführung durchgeführt werden müsste, hätte Google einen STANDARD klar definieren könnenneuer Einhängepunkt für die externen SD-Karten, statt sie völlig vage zu lassen. Dies wirkt vollständig der Verhinderung einer weiteren "Segmentierung" des Android-Ökosystems durch ein unbeholfenes Design entgegen, um die Unterscheidung der Anbieter von Telefonen der oberen Preisklasse von Geräten mit geringerem internen Speicher zu unterstützen.Android-App-Binärdateien sind winzig, Telefone mit 1-2 GB internem Speicher sollten mehr als genug Platz für Hunderte von Apps haben, und all die großen Datenmengen könnten sicher auf einer externen SD-Karte gespeichert werden. Aber dann erkannten die Anbieter, dass sie einen Weg finden mussten, um ihr höheres Endprodukt zu differenzieren, und die Behauptung, dass ein höherer interner Speicher Teil dieses Schemas wird und die Nützlichkeit des externen Speichers beeinträchtigt, ist der andere integrierte Teil, den dieses Schema benötigt, um vollständig zu funktionieren weniger hilfreiche API, um externe SD-Karten und die nicht standardisierten Befestigungspunkte zu finden.
Also: Nein, die Installation der SD-Karte an einem anderen Ort
/mnt/sdcard
ist nichts anderes als eine Geschäftsstrategie für den Verkauf teurerer neuer Telefone unter einer neueren Version von Android, nichts weiter. Stellen Sie sich vor, wenn das Nexus 4 8 GB und das Nexus 16 GB jeweils 64 GB externe SD-Karte für Anwendungen und Medien verwenden können. Gibt es einen Grund für jemanden, die 16 GB-Version zu kaufen? Diese zusätzlichen 8 GB NAND-Speicher sind mit Sicherheit keinen Preisunterschied von 50 USD wert, wenn externe SD-Karten beteiligt sind. Da die meisten Komponenten in einem Smartphone fast identisch sein müssen (RAM, Prozessor, Radios), bleibt nur noch der interne Speicherplatz und damit der seltsame externe Speicherplatz übrig.Hat auch jeder mitbekommen, dass die aktuelle Ernte von Android-Geräten der Marke "Google" keine externe SD-Unterstützung bietet? Dieser Trend wird sich bei Android-Geräten der Spitzenklasse fortsetzen. Die Unterstützung externer SD-Karten war eine wichtige Differenzierung für Android-Geräte, um die Dominanz des iPhones auf dem Mobilfunkmarkt zu überholen. Jetzt, da Android im Zahlenspiel überlegen ist, muss diese Gewinnabschöpfungspraxis nicht mehr lange aufrechterhalten werden.
Android 5.0 wird mich nicht überraschen, die Unterstützung externer SD-Karten gehört der Vergangenheit an. Weil, wenn es für Apps schwierig ist, externe SD-Karten zu finden, die meisten Programme einfach die bekannten
/data
und/mnt/sdcard
geografischen Orte verwenden und die meisten Apps immer mehr gespeicherte Daten für ihren Betrieb verwenden, wird eine lebendige Produktmarkierungsstrategie aus dem Nichts heraus erstellt msgstr "einfach keine externe SD - Karte einbinden/mnt/sdcard
.quelle
/data
und/mnt/sdcard
" gibt, da ich eindeutig einen Grund sehe: Vermeidung der Fragmentierung des internen Speichers./sdcard/external_sd
beim LG P880), umfasst das Sichern von "Shared Storage" beides und erstellt ein riesiges Archiv. Keine Möglichkeit, die interne SD nur auf einfache Weise zu sichern. Was nicht viel Sinn macht, da es viel einfachere Möglichkeiten gibt, die externe Karte zu sichern. Eine Tatsache, die mich verrückt macht, wie ich das erwähnte Gerät habe ...Sie sollten sich bewusst sein, dass Sie (wenn Sie als Root angemeldet sind) in /system/etc/vold.fstab die Einhängepunkte für / sdcard und /mnt/external_sd austauschen können, damit sich Ihre SD-Karte erwartungsgemäß auf / sdcard befindet und der verbleibende "interne Speicher" wird in / mnt / external_sd gemountet oder wenn Sie es vorziehen / sdcard / external_sd /
quelle