Android Emulator SD-Karte Push-Fehler: Schreibgeschütztes Dateisystem

70

Ich entwickle unter Android 1.6 (Android SDK 2.1). Ich erstelle eine AVD mit dem AVD-Manager in Eclipse. Als ich diese avd startete, stellte ich fest, dass die Berechtigung des Verzeichnisses / sdcard "d ---------" ist. Ich kann die Datei also nicht auf die SD-Karte übertragen.

Weiß jemand, wie man dieses Problem löst?

Leox
quelle
Versuchen Sie dies: stackoverflow.com/questions/2083709/…
intrepidis

Antworten:

48

Sobald Sie den Emulator von einer Shell aus gestartet haben, melden Sie sich bei einer anderen Shell an und geben Sie ein

adb shell

Sie sollten sehen # prompt, dass dies Ihre Geräte- (Emulator-) Shell ist. Geben Sie nun den folgenden Befehl in die adb-Shell ein.

mount -o remount rw /sdcard

Dies wird nun /sdcardmit rw(read-write)Erlaubnis erneut bereitgestellt und Sie können Ihre Dateien /sdcardmit dem folgenden Befehl aus Ihrer Host-Shell verschieben.

`adb push filename.mp3 /sdcard,`

Dabei kann filename.mp3 eine beliebige Datei sein, die Sie in den Android Emulator übertragen möchten.

Hoffe das hilft :)

Ashutosh
quelle
Auch wenn Remount nicht funktioniert, prüfen Sie, ob der Link korrekt ist. Das ist /sdcard -> /mnt/sdcard. Wenn dies ordnungsgemäß verknüpft ist, überprüfen Sie die Berechtigungen des Verzeichnisses /mnt/sdcard. Wenn die erforderlichen Berechtigungen nicht vorhanden sind, geben Sie dazu den Befehl chmod aus. Zum Beispiel # chmod 0777 /mnt/sdcardsollte funktionieren. PS: Normalerweise benötigen Sie keine Ausführungsberechtigung.
Subin Sebastian
12
Ich hatte das gleiche Problem wie @Hissain. Ich konnte es stattdessen mit diesen Befehlen zum Laufen bringen: mount -o rw,remount rootfs /und chmod 777 /mnt/sdcard. Hoffe das hilft.
TragedyStruck
su: nicht gefunden ... mount: Erlaubnis verweigert
Marek Bernád
19

Stellen Sie im AVD Manager-Dienstprogramm für den Emulator zwei Dinge sicher:

  1. Die SD-Kartengröße wird zB 512 angegeben.

  2. Drücken Sie im Hardware-Tag auf Neu und wählen Sie "SD-Kartenunterstützung" aus dem Dropdown-Menü.

Starten Sie nun den Emulator. Die SD-Karte unterstützt jetzt auch das Schreiben.

Sumit
quelle
1
Wo ist das Hardware-Tag? Ich sehe das nicht in Android Virtual Device (AVD)
bearbeiten
Ich sehe Hardware-Tag für AVDs, die nur über die Befehlszeile erstellt wurden.
Tumbudu
10

Android Studio Version 0.8.9 und höher hat einen Fehler beim Erstellen von AVDs.

Siehe Ausgabe 78434 .

Problemumgehung

  • Gehen Sie zu Ihrem ADV-Ordner im Ordner .android und suchen Sie Ihre AVD config.ini
  • Öffnen Sie es mit einem Texteditor, der Unix-Zeilenumbrüche verarbeiten kann. (Notepad führt die Zeilen zusammen aus, da sie keine CR-LFs haben.)
  • wechseln hw.sdCard=nozuhw.sdCard=yes

Dies sollte für alle in neuen Builds funktionieren

afra mehrparvar
quelle
2
Danke für den Link, das hat mir geholfen. Die empfohlene Lösung besteht nun darin, Ihre AVD config.ini zu finden und hw.sdCard = no in hw.sdCard = yes zu ändern. Das hat bei mir funktioniert.
Tim Malseed
Ja, das ist eine neue Lösung. u willkommen :) wirklich froh, dass es dir geholfen hat. Ja, das ist eine sehr gute Lösung. denn auf keinen Fall kann man mit all diesen Linux-Codes setzen, solange dieses Problem weiterhin besteht :)
afra mehrparvar
Erstaunlich, wie viel Zeit ich gerade dadurch verloren habe ... Vielen Dank!
rectummelancolique
7

Vielleicht klingt es dumm, aber es hat bei mir funktioniert, als ich das gleiche Problem hatte: Löschen Sie die erstellte AVD und erstellen Sie eine neue über AVD Manager mit einer SD-Karte von beispielsweise 512 MB.

Überprüfen Sie, ob beide über die richtigen Berechtigungen verfügen, und versuchen Sie, diese mit chmod zu ändern, wenn dies nicht der Fall ist.

Und wenn immer noch alles fehlschlägt, wiederholen Sie den Vorgang, aber erstellen Sie die AVD- und SD-Karte manuell über das Terminal:

android create avd -n my_avd -t 7
mksdcard -l e 512M mysdcard.img
emulator -avd my_avd -sdcard mysdcard.img

Hoffentlich hilft das!

Edu Zamora
quelle
@AnkitSrivastava Sie sollten diese Befehle in Ihrem Terminal ausführen (in meinem Fall Bash).
Edu Zamora
Die AVD musste nicht neu erstellt werden, sondern muss nur neu gestartet werden.
Stich
Ja. Das Erstellen eines anderen AVD-Typs funktioniert. Vielen Dank. Dies behebt auch ein anderes Problem. Jetzt kann ich die Kamera benutzen.
Makkasi
6

Ich denke, das Problem hier ist, dass Sie vergessen haben, die SD-Kartengröße einzustellen

Befolgen Sie diese Schritte, damit es funktioniert:

  1. Schritt 1: Schließen Sie den laufenden Emulator
  2. Schritt 2: Öffnen Sie den Android Virtual Device Manager (Eclipse-Menüleiste).
  3. Schritt 3: Wählen Sie Ihren Emulator -> Bearbeiten -> und stellen Sie dann die SD-Kartengröße ein

Das funktioniert gut in meinem Emulator!

bräunen
quelle
4

Stellen Sie sicher, dass Sie im Fenster "AVD erstellen" für diesen bestimmten Emulator einen Wert angegeben haben, der für die SD-Kartengröße größer als Null ist .

Eintauchen
quelle
3

mount -o remount, rw / sdcard

Dies ist der richtige Weg, um Ihre SD-Karte mit Ihrem Emulator erneut zu mounten.

Teddy
quelle
3

Ich habe versucht, @ user2002993 große Hilfe, aber es ist ein Ort, es muss ein wenig bearbeitet werden, so habe ich bearbeitet und hier, was für mich auf Android Studio, Emulator Android 5 funktioniert.

Gehen Sie zu Ihrem ADB-Ordner, klicken Sie mit der rechten Maustaste auf den leeren Bereich und wählen Sie " Befehlsfenster hier öffnen ". Wenn Sie ADB von ADB-Installer installiert haben, öffnen Sie cmdund geben Sie die folgenden Befehle ein:

adb devices

Es sollte Ihre Emulatornummer und Details anzeigen. Dann folgte hier der Befehl:

adb shell

Jetzt sollte es Ihnen die Eingabeaufforderung # anzeigen

su

mount -o rw,remount rootfs

chmod 777 /mnt/sdcard

exit

exit

Ja, doppelter Exit erforderlich, jetzt ist Ihre Eingabeaufforderung von adb shell weg. Legen Sie eine Datei in Ihrem ADB-Ordner ab, geben Sie diesen Befehl ein und prüfen Sie, ob er behoben wurde.

adb push "your file name like : 1.jpg" /sdcard/

oder

adb push "your file name like : 1.jpg" /storage/sdcard/

Jetzt in cmd sollte es Ihnen die Übertragungszeit anstelle der gruseligen schreibgeschützten Sache zeigen 😊

afra mehrparvar
quelle
und wie ich leider sehe .. android studio version 8.10 und höher, die ein wenig ändern
studiostruktur
2

Ich habe den virtuellen Speicher der SD-Karte für den Emulator auf 512 MB erhöht, und das war genug

user2604908
quelle
1

Ich denke, Sie haben zum Zeitpunkt der Erstellung von avd keine Speichergröße eingefügt. Sie können dies tun, indem Sie die avd bearbeiten.Bildschirmfoto

Suresh Sharma
quelle
0

Stellen Sie sicher, dass Sie über die richtigen Berechtigungen verfügen.

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
esse
quelle
0

Windows verwendet Schrägstriche, Linux Schrägstriche.

nomapp
quelle
0

Manchmal kann dies einen sehr einfachen Grund haben. Gehen Sie in Eclipse zu Ihrer Liste und prüfen Sie, ob Sie die SDCard-Größe festgelegt haben


quelle
0

Ich hatte dieses Problem in der Android L-Entwicklervorschau und zumindest für diese Version habe ich es gelöst, indem ich eine SD-Karte mit einer Größe von Quadrat 2 (z. B. 128 MB, 256 MB usw.) erstellt habe.

Eli
quelle
0

In adb Version 1.0.32 und Eclipse Luna (v 4.4.1).

Ich habe in der avd / mnt / media_rw / sdcard ein Verzeichnis gefunden, in das Sie mit dem Befehl adb schreiben können. adb push {source} / mnt / media_rw / sdcard

Es scheint rw Zugriff auf dieses Verzeichnis zu geben.

Hoffe das hilft :-)

Gregrobinz
quelle
0

Alternativ: Entfernen Sie das Laufwerk (aus den Einstellungen / dem Speicher) und mounten Sie die SD-Karte erneut, um das Problem zu beheben. (Überprüfen Sie dies, indem Sie eine Datei vom internen Speicher auf die SD-Karte verschieben.) Auf jeden Fall hat diese einfache Methode diesmal meinen Hintern gerettet :)

Raymond Fraikin
quelle
0
  1. Geben Sie Sdcard im Emulator eine beliebige Größe
  2. Deaktiviert die Option "Nur Lesen" in den Eigenschaften "c: \ user ... android \ avd ->"
  3. Schieben Sie eine Datei durch den Datei-Explorer
  4. Starten Sie den Emulator neu

Es wird definitiv funktionieren

Kamleshwer Purohit
quelle
0

Am Ende half mir der Emulator, den Anwendungsmanager auszuführen und Berechtigungen für den Speicher festzulegen.

momik bęc
quelle
0

Versuchen Sie dies in einem Terminal-Emulator als root:

restorecon -v -R /data/media
unerschrocken
quelle