Ubuntu - Fehler: Fehler beim Erstellen der SD-Karte

84

Ich sehe viele Beiträge über das Schreiben auf die SD-Karte, aber ich glaube, mein Problem ist anders. Ich kann die SD-Karte während des Erstellens einer AVD nicht erstellen.

Ich habe zunächst versucht, das Android SDK und den AVD Manager zu verwenden, indem ich
Name : my_avd ausgewählt habe.
Ziel : Android 2.2 - API Level 8
SD-Karte : Größe: 1024 MiB
Skin : Integriert: Standard (HVGA)
Hardware : Eigenschaft: Abstraktes LCD Dichte, Wert: 160

Daraufhin wird ein Fenster mit der Meldung
angezeigt : "Ergebnis der Erstellung von AVD 'my_avd':
Fehler: Fehler beim Erstellen der SD-Karte."

Ich habe versucht, den Vorgang über die Befehlszeile zu wiederholen, wobei ein ähnlicher Fehler angezeigt wurde:

alex@alex-desktop:~$ android create avd -n my_avd -t 1 -c 1024M
Android 2.2 is a basic Android platform.
Do you wish to create a custom hardware profile [no]no
Error: Failed to create the SD card.

Der Versuch, Anweisungen zur Verwendung von mksdcard zu befolgen, war ebenso unproduktiv. Ich denke, mein grundlegender Mangel an Linux-Erfahrung kann mir hier ein Problem bereiten. Wenn ich versuche, mksdcard zu verwenden, wird nur gemeldet, dass die Datei oder das Verzeichnis nicht gefunden werden kann. Ist das Tool mksdcard für die Verwendung auf diese Weise unter Linux verfügbar?

alex@alex-desktop:~$ mksdcard 1024M ./sdcard.iso
bash: /home/alex/android-sdk-linux_x86/tools/mksdcard: No such file or directory
alex@alex-desktop:~$ sudo android create avd -n my_avd -t 1 -c 1024M

Ich habe das Verzeichnis der Android-Tools zu meiner PATH-Variablen hinzugefügt, aber ich habe das Gefühl, dass mir offensichtlich noch etwas fehlt. Vielleicht irgendeine Art von Zugriffsrechten?

Der Versuch, den Android-Befehl mit sudo auszuführen, schien auch nicht zu helfen:

alex@alex-desktop:~/android-sdk-linux_x86/tools$ sudo ./android create avd -n my_avd -t 1 -c 1024M
Android 2.2 is a basic Android platform.
Do you wish to create a custom hardware profile [no]no
Error: Failed to create the SD card.

Ich habe sogar versucht, Eclipse und das ADT-Plugin zu installieren und den Manager von dort ohne Erfolg auszuführen. Alle Tipps wäre sehr dankbar. Erweiterte Warnung, dass ich ein unerfahrener Linux-Benutzer bin. Selbst wenn es ein Kinderspiel ist, dies zu überprüfen, hätte ich es trotzdem übersehen können.

Alex Pritchard
quelle
@ Alex Pritchard: Sie benötigen wahrscheinlich keine gefälschte 1024M SD-Karte. Versuchen Sie stattdessen 32M und sehen Sie, ob Sie mehr Glück haben.
CommonsWare
@ CommonsWare Leider kann die 32M SD-Karte immer noch nicht erstellt werden. :(
Alex Pritchard
@ Alex Pritchard: Das ist ziemlich seltsam. Die Bilder werden im selben Verzeichnis wie der Rest der AVD ( ~/.android/avd/whateveryoucalledit/) erstellt, daher kann ich mir nicht vorstellen, wie Sie eine AVD erstellen können, aber keine AVD mit einer SD-Karte.
CommonsWare
@CommonsWare Ich habe ein bisschen mehr gelesen und denke, ich hätte vielleicht etwas gefunden. Ich vermute, dass möglicherweise ein Problem vorliegt, da ich die 64-Bit-Linux-Installation verwende und möglicherweise die ia32-libs installieren muss. Ich werde es versuchen, wenn ich nach Hause komme und sehen, ob es hilft.
Alex Pritchard
@ Alex Pritchard: Ja, ich glaube, dass du die brauchst. Überrascht läuft es eigentlich gar nicht ohne sie. Ich musste einige Drehungen durchlaufen, um Android auf meinem 64-Bit-Ubuntu-Setup zum Laufen zu bringen, obwohl das lange genug her ist, dass ich die Details vergesse.
CommonsWare

Antworten:

101

Also habe ich das Problem gefunden. Ich habe eine 64-Bit-Linux-Installation verwendet, auf der das ia32-libs-Paket nicht standardmäßig installiert war. Das Dienstprogramm mksdcard wird ohne dieses Paket nicht ausgeführt. Nach der Installation konnte ich die AVD problemlos mit dem AVD-Manager erstellen.

Alex Pritchard
quelle
1
Danke, Ubuntu 12.04 x64, es hat das Problem gelöst. Ich möchte nur bemerken, dass diese ia32-libs ungefähr
260
43
Ja! Ich habe den Weg ohne all diese schrecklichen 240 Abhängigkeitspakete gefunden! Anstatt zu ia32-libsinstallieren libstdc++6:i386 libgcc1:i386 zlib1g:i386 libncurses5:i386. Ein großes Lob an diesen Kerl, der meinen (und hoffentlich auch andere) Computer vor all dem Müll gerettet hat : stackoverflow.com/a/10473415/998772 PS Ich verwende Linux Mint 13
pavel_kazlou
4
Auf Fedora,dnf install glibc.i686 libstdc++.i686
Dominic Cleal
Danke. Ich benutze Ubuntu 14.04 LTS amd und es löst das Problem. Ich habe getrennte Pakete installiert, wie @pavel_kazlou vorgeschlagen hat
Joao Polo
1
@nimrodm Ich bin immer wieder überrascht über die Aktivitäten in diesem Beitrag (mein bisher beliebtester SO-Beitrag, hah).
Alex Pritchard
80

Führen Sie unter Ubuntu 16.04 LTS x64 mit Android Studio 2.1 (ebenfalls unter 2.3.3 getestet) von einem Terminal aus:

sudo apt-get install lib32stdc++6
GeekLei
quelle
Ich habe das SDK manuell installiert (ohne Android Studio), und das hat bei mir funktioniert.
CTodea
1
Außerdem musste ich ~ / Android / Sdk / emulator / lib64 / libstdc ++ / libstdc ++. So.6 und libstdc ++. So.6.0.18 in etwas anderes umbenennen, damit der Emulator ausgeführt wurde. Ich konnte es nur zum Laufen bringen, ohne es zu öffnen. --------------- ./emulator @ Nexus_4_API_23 konnte kein zeichnbares getGLES2ExtensionString erstellen: GLES 2.x Pbuffer konnte nicht erstellt werden! Fehler beim Abrufen der GLES 2.x-Erweiterungszeichenfolge! Emulierter Framebuffer-Emulator konnte nicht initialisiert werden: FEHLER: OpenglES-Emulation konnte nicht initialisiert werden. Deaktivieren Sie sie mit '-gpu off'.
Francisco Junior
1
Bingo. Ubuntu 17.04.
Piratenemurray
22

Ich hatte den gleichen Fehler wie Sie und habe ihn gerade behoben. Vielleicht kann er Ihnen helfen (obwohl ich nicht glaube, dass Ihr Fehler durch das gleiche Problem wie ich verursacht wird).

Ich habe festgestellt, dass alle Tools in ../tools nicht die Berechtigung zum Ausführen haben, also habe ich verwendet

chmod -R 777 ../tools

von der Kommandozeile und es funktioniert endlich

Cynicholas
quelle
1
Vielen Dank für Ihre Antwort. Der Stapelüberlauf bietet Formatierungen, um die Lesbarkeit Ihrer Antwort zu verbessern. Sie können die Code-Formatierung verwenden, um den Shell-Befehl zu identifizieren und von Ihrem anderen Text abzuheben.
this.josh
Funktioniert, aber dies führt dazu .txt, dass .xmlDateien usw. ausführbare Berechtigungen haben ... wäre schön, die einzelnen beteiligten Dateien zu kennen
funkybro
10

Wie andere bereits geschrieben haben, besteht das Problem darin, dass Ihre Linux-Distribution eine 64-Bit- Distribution ist und Android Virtual Device ( AVD ) derzeit die x86- Bibliothek benötigt, um ordnungsgemäß zu funktionieren.

Jemand hat vorgeschlagen, ia32-libs zu installieren . In Ubuntu 14.04 LTS finden Sie diese Bibliothek jedoch nicht. Ich habe mit diesen alternativen Bibliotheken gelöst: lib32z1 , lib32ncurses5 , lib32bz2-1.0 und lib32stdc ++ .

sudo apt-get update
sudo apt-get install lib32z1 lib32ncurses5 lib32bz2-1.0 lib32stdc++
Paolo Rovelli
quelle
3
Das einzige was ich brauchte war lib32stdc ++ 6.
Big McLargeHuge
6

Ich bin gerade auf das gleiche Problem gestoßen. Keines der SDK-Tools kann unter 64-Bit-Ubuntu ausgeführt werden, ohne ia32-libs zu installieren (BEISPIEL: sudo apt-get install ia32-libs).

paulsm4
quelle
5

In elementaren Betriebssystemen und Ubuntu bestand die Lösung darin, die folgenden Pakete zu installieren

sudo apt-get install lib32ncurses5 lib32z1
sudo apt-get install libgcc1:i386
Lugty
quelle
Das hat bei Kubuntu 17.04 bei mir funktioniert. Libstdc ++ muss jedoch noch entfernt werden.
Avamander
4
alex@alex-desktop:~$ mksdcard 1024M ./sdcard.iso
bash: /home/alex/android-sdk-linux_x86/tools/mksdcard: No such file or directory
alex@alex-desktop:~$ sudo android create avd -n my_avd -t 1 -c 1024M

Ich habe dieses Problem gefunden und finde zuerst einen Weg:

cd /home/alex/android-sdk-linux_x86/tools/

dann schreibe das:

sudo chmod 755 mksdcard
mksdcard 1024M ./sdcard.iso
sudo android create avd -n my_avd -t 1 -c 1024M

es sollte funktionieren :)

imon_iut
quelle
4

Wenn Sie Kali, Debian Jessie (oder Ubuntu 13.10+) verwenden, versuchen Sie es

sudo apt-get install lib32stdc ++ 6

anstelle der oben genannten ia32-libs.

Larry_C
quelle
4
sudo apt-get install lib32stdc++6

Danach werden möglicherweise folgende Fehler angezeigt

Cannot launch AVD in emulator.
Output:
libGL error: unable to load driver: i965_dri.so
libGL error: driver pointer missing
libGL error: failed to load driver: i965
libGL error: unable to load driver: swrast_dri.so
libGL error: failed to load driver: swrast
X Error of failed request:  GLXBadContext
  Major opcode of failed request:  154 (GLX)
  Minor opcode of failed request:  6 (X_GLXIsDirect)
  Serial number of failed request:  49
  Current serial number in output stream:  48
libGL error: unable to load driver: i965_dri.so
libGL error: driver pointer missing
libGL error: failed to load driver: i965
libGL error: unable to load driver: swrast_dri.so
libGL error: failed to load driver: swrast
X Error of failed request:  GLXBadContext
  Major opcode of failed request:  154 (GLX)
  Minor opcode of failed request:  6 (X_GLXIsDirect)
  Serial number of failed request:  49
  Current serial number in output stream:  48
libGL error: unable to load driver: i965_dri.so
libGL error: driver pointer missing
libGL error: failed to load driver: i965
libGL error: unable to load driver: swrast_dri.so
libGL error: failed to load driver: swrast
emulator: WARNING: VM heap size set below hardware specified minimum of 228MB
X Error of failed request:  BadValue (integer parameter out of range for operation)
emulator: WARNING: Setting VM heap size to 384MB
  Major opcode of failed request:  154 (GLX)
  Minor opcode of failed request:  24 (X_GLXCreateNewContext)
  Value in failed request:  0x0
  Serial number of failed request:  33
  Current serial number in output stream:  34
QObject::~QObject: Timers cannot be stopped from another thread

Verwenden Sie diese 3 Befehle, um diese zu lösen

mv ~/Android/Sdk/tools/lib64/libstdc++/libstdc++.so.6{,.bak}
mv ~/Android/Sdk/tools/lib64/libstdc++/libstdc++.so.6.0.18{,.bak}
ln -s /usr/lib/libstdc++.so  ~/Android/Sdk/tools/lib64/libstdc++/**
Kumar Ayush
quelle
3

Hatte auch dieses Problem und nach der Installation des i386-Pakets konnte ich eine SD-Karte für meinen Android-Emulator erstellen. Ich musste zwei Schritte ausführen

sudo apt-get update
sudo apt-get install ia32-libs

Nachdem dies abgeschlossen war, konnte ich einen Emulator mit einer angeschlossenen SD-Karte erstellen

rubenj
quelle
2

Ich hatte ein anderes Problem: Plattform-Tools waren auf meinem Weg, Tools jedoch nicht. Es hat also alles funktioniert, außer dass das SDCard-Image nicht erstellt wurde. Dies wurde nicht bemerkt, als ich die AVD in Eclipse erstellte und das virtuelle Gerät mit einer wirklich kleinen SD-Karte erstellt wurde, wodurch es bei der App-Installation ständig den Fehler "Medien nicht verfügbar" auslöste.

Andrew Paul Simmons
quelle
1

Ich hatte ein anderes Problem mit 32bit Ubuntu. Als ich versuchte, mksdcard von Hand auszuführen, wurde der Fehler "Datei nicht gefunden" angezeigt.

Das Problem war open-jre / jdk. Ich habe Oracle Java installiert und das Problem wurde behoben. Leider können Sie Oracle Java nicht mehr über apt / synaptic installieren und müssen durch einige zusätzliche Rahmen springen:

https://github.com/flexiondotorg/oab-java6

CosmicCat
quelle
1

Beim Debian-Test, als ich versuchte, ./tools/mksdcards auszuführen, erhielt ich den Fehler:

error while loading shared libraries: libstdc++.so.6: 
cannot open shared object file: No such file or directory

Die Installation von lib32stdc ++ 6 behebt das Problem und es war möglich, die avd zu erstellen.

David Carlos
quelle
0

MyOS ist Oracle Unbreakable Linux 6 - um dieses Problem zu lösen, musste ich das Paket libstdc ++ - 4.4.6-3.el6.i686 installieren.

SerVel
quelle
0

Nach viel Installation und ohne Ergebnis fand ich dies und es funktionierte.

Dies liegt daran, dass einige ausführbare Dateien in sdk/toolsnicht ausgeführt werden können. Gehen Sie zu Ihren Android Studio- und Android SDK-Ordnern und machen Sie alle Verzeichnisse und Dateien mit diesem Befehl ausführbar:

chmod +x -R *
Ahmed Mubarak
quelle
Es macht mich wahnsinnig, dass dieses Problem 9 Jahre später immer noch auftaucht. Gute Zeiten. Danke, dass Sie Ihre Erfahrungen geteilt haben.
Alex Pritchard
-1

Versuchen Sie, den Android SDK-Ordner in den Home-Ordner zu verschieben. Es klappt.

user3133745
quelle
-1

Ich hatte das gleiche Problem. Nach der Fehlerbehebung habe ich festgestellt, dass mein Windows 32-Bit ist und meine mksdcard nur mit 64-Bit kompatibel ist. Dann habe ich einfach eine 32-Bit-mksdcard in den tools-Ordner kopiert und die ältere gelöscht. Es hat mein Problem gelöst.

Jomia
quelle
-1

Für die Leute, die das gleiche Problem unter Windows hatten. Für mich lag es daran, dass das Tool mksdcard.exe nicht erfolgreich ausgeführt werden konnte. Einige SDK-Tools wie mksdcard.exe erfordern eine Microsoft Visual C ++ - Laufzeit. Gehen Sie also zu Ihren Systemeigenschaften und überprüfen Sie Ihren Systemtyp:

Geben Sie hier die Bildbeschreibung ein

Laden Sie dann basierend auf Ihrem Systemtyp (für mich war es x64) das neueste Microsoft Visual C ++ Redistributable für Visual Studio 2019 über den Link https://visualstudio.microsoft.com/downloads/ herunter / aktualisieren Sie es.

Geben Sie hier die Bildbeschreibung ein

Nach der Installation von Microsoft Visual C ++ wurde mein Problem behoben. Ich konnte AVD erfolgreich erstellen.

Shaby
quelle