Ubuntu - Błąd: nie udało się utworzyć karty SD

84

Widzę wiele postów o zapisywaniu na kartę SD, ale uważam, że mój problem jest inny. Nie mogę utworzyć karty SD podczas tworzenia AVD.

Początkowo próbowałem użyć Android SDK i AVD Manager, aby to zrobić, wybierając
Nazwa : my_avd
Cel : Android 2.2 - API Poziom 8
Karta SD : Rozmiar: 1024 MiB
Skórka : Wbudowana: Domyślna (HVGA)
Sprzęt : Właściwość: Abstrakcyjny wyświetlacz LCD Gęstość, wartość: 160

Pojawi się okno z komunikatem:
„Wynik tworzenia AVD 'my_avd':
Błąd: nie udało się utworzyć karty SD”.

Próbowałem powtórzyć proces z linii poleceń, otrzymując podobny błąd:

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.

Próba wykonania instrukcji korzystania z mksdcard była równie bezproduktywna; Myślę, że mój podstawowy brak doświadczenia w Linuksie może powodować tutaj problem. Kiedy próbuję użyć mksdcard, po prostu zgłasza, że ​​nie może znaleźć pliku lub katalogu. Czy narzędzie mksdcard jest dostępne do użytku w ten sposób w systemie Linux?

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

Dodałem katalog narzędzi Androida do mojej zmiennej PATH, ale wydaje mi się, że jest coś innego, czego mi brakuje. Może jakieś prawa dostępu?

Próba uruchomienia polecenia Androida z sudo również nie pomogła:

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.

Próbowałem nawet zainstalować Eclipse i wtyczkę ADT i uruchomić stamtąd menedżera bez skutku. Wszelkie wskazówki będą mile widziane. Zaawansowane ostrzeżenie, że jestem nieco początkującym użytkownikiem Linuksa, więc nawet jeśli wydaje się oczywistą rzeczą do sprawdzenia, nadal mogłem to przeoczyć.

Alex Pritchard
źródło
@Alex Pritchard: Prawdopodobnie nie potrzebujesz fałszywej karty SD 1024 MB. Spróbuj zamiast tego 32M i zobacz, czy masz więcej szczęścia.
CommonsWare
@CommonsWare Niestety, 32M karta SD nadal nie działa. :(
Alex Pritchard
@Alex Pritchard: To dość dziwne. Obrazy są tworzone w tym samym katalogu, co reszta AVD ( ~/.android/avd/whateveryoucalledit/), więc nie mogę do końca pojąć, jak można utworzyć AVD, ale nie AVD z kartą SD.
CommonsWare
@CommonsWare Czytałem trochę więcej i myślę, że mogłem coś znaleźć. Podejrzewam, że może być jakiś problem, ponieważ używam 64-bitowej instalacji Linuksa i może być konieczne zainstalowanie ia32-libs. Spróbuję tego, kiedy wrócę do domu i zobaczę, czy to pomoże.
Alex Pritchard
@Alex Pritchard: Tak, uważam, że tego potrzebujesz. Zaskoczony, że w ogóle działa bez nich. Musiałem przejść przez kilka zawirowań, aby Android działał na mojej 64-bitowej konfiguracji Ubuntu, chociaż było to wystarczająco dawno temu, że zapomniałem o szczegółach.
CommonsWare,

Odpowiedzi:

101

Więc znalazłem problem. Używałem 64-bitowej instalacji Linuksa, która domyślnie nie miała zainstalowanego pakietu ia32-libs. Narzędzie mksdcard nie będzie działać bez tego pakietu. Po zainstalowaniu udało mi się bez problemu zbudować AVD za pomocą menedżera AVD.

Alex Pritchard
źródło
1
Dzięki, Ubuntu 12.04 x64, rozwiązało problem. Chciałbym tylko zauważyć, że te ia32-biblioteki mają około 260mb
yetanothercoder.
43
Tak! Znalazłem drogę bez tych wszystkich okropnych 240 pakietów zależności! Zamiast ia32-libsinstalować libstdc++6:i386 libgcc1:i386 zlib1g:i386 libncurses5:i386.
Wyrazy uznania
4
W Fedorzednf install glibc.i686 libstdc++.i686
Dominic Cleal
Dziękuję Ci. Używam Ubuntu 14.04 LTS i to rozwiązuje problem. Zainstalowałem oddzielne pakiety, jak zasugerował @pavel_kazlou
Joao Polo
1
@nimrodm Ciągle jestem zaskoczony aktywnością w tym poście (mój najpopularniejszy jak do tej pory post w SO, hah).
Alex Pritchard
80

Na Ubuntu 16.04 LTS x64, używając Android Studio 2.1 (również testowanego na 2.3.3), uruchom z terminala:

sudo apt-get install lib32stdc++6
GeekLei
źródło
Zainstalowałem SDK ręcznie (bez Android Studio) i to zadziałało.
CTodea,
1
Poza tym musiałem zmienić nazwę ~ / Android / Sdk / emulator / lib64 / libstdc ++ / libstdc ++. So.6 i libstdc ++. So.6.0.18 na coś innego, aby emulator działał. Mogłem go tylko uruchomić bez opengl tough. --------------- ./emulator @ Nexus_4_API_23 nie utworzył możliwego do rysowania getGLES2ExtensionString: nie można utworzyć bufora GLES 2.x! Nie udało się uzyskać ciągu rozszerzeń GLES 2.x! Nie można zainicjować emulowanego emulatora bufora ramki: BŁĄD: Nie można zainicjować emulacji OpenglES, użyj opcji „-gpu off”, aby ją wyłączyć.
Francisco Junior
1
Bingo. Ubuntu 17.04.
piratemurray
22

Miałem taki sam błąd jak ty i właśnie go rozwiązałem, więc może to ci pomoże (chociaż nie sądzę, że twój błąd jest spowodowany tym samym problemem, co ja).

Okazało się, że wszystkie narzędzia w ../tools nie mają uprawnień do wykonywania, więc użyłem

chmod -R 777 ../tools

z wiersza poleceń i wreszcie działa

cynicholas
źródło
1
Dziękuję za udzielenie odpowiedzi. Stack Overflow zapewnia formatowanie poprawiające czytelność odpowiedzi. Możesz użyć formatowania kodu, aby zidentyfikować polecenie powłoki i odróżnić je od innego tekstu.
this.josh
Działa, ale powoduje to .txt, że .xmlpliki itp.
Mają
10

Jak inni już napisali, problem polega na tym, że twoja dystrybucja Linuksa jest 64-bitowa i obecnie urządzenie wirtualne Androida ( AVD ) wymaga biblioteki x86 do prawidłowego działania.

Ktoś zasugerował zainstalowanie ia32-libs . Jednak w Ubuntu 14.04 LTS nie znajdziesz tej biblioteki. Rozwiązałem za pomocą tych alternatywnych bibliotek: lib32z1 , lib32ncurses5 , lib32bz2-1.0 i lib32stdc ++ .

sudo apt-get update
sudo apt-get install lib32z1 lib32ncurses5 lib32bz2-1.0 lib32stdc++
Paolo Rovelli
źródło
3
Jedyny, którego potrzebowałem, to lib32stdc ++ 6.
Big McLargeHuge
6

Właśnie napotkałem ten sam problem. ŻADNE z narzędzi SDK nie będzie działać na 64-bitowym systemie Ubuntu bez instalowania ia32-libs (PRZYKŁAD: sudo apt-get install ia32-libs).

paulsm4
źródło
5

W elementarnym systemie operacyjnym i ubuntu rozwiązaniem była instalacja następujących pakietów

sudo apt-get install lib32ncurses5 lib32z1
sudo apt-get install libgcc1:i386
Lugty
źródło
To działało dla mnie na Kubuntu 17.04. Ale libstdc ++ nadal musi zostać usunięte.
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

Znalazłem ten problem i najpierw znajduję sposób:

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

następnie napisz to:

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

powinno działać :)

imon_iut
źródło
4

Jeśli używasz Kali, Debian Jessie (lub Ubuntu 13.10+), spróbuj

sudo apt-get install lib32stdc ++ 6

zamiast wspomnianych powyżej bibliotek ia32.

Larry_C
źródło
4
sudo apt-get install lib32stdc++6

Po tym mogą pojawić się następujące błędy

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

Użyj tych 3 poleceń, aby je rozwiązać

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
źródło
3

Miałem też ten problem i po zainstalowaniu pakietu i386 udało mi się stworzyć kartę SD dla mojego emulatora Androida, musiałem zrobić dwa kroki

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

Po zakończeniu udało mi się stworzyć emulator z dołączoną kartą SD

rubenj
źródło
2

Miałem inny problem: narzędzia platformy były na mojej drodze, ale narzędzia nie. Tak więc wszystko działało, z wyjątkiem tego, że obraz SDCard nie został utworzony. Nie było o tym żadnej wiadomości, gdy utworzyłem avd w eclipse, a urządzenie wirtualne zostało utworzone z naprawdę małą kartą SD, co spowodowało ciągłe wyrzucanie błędu niedostępnego nośnika podczas instalacji aplikacji.

Andrew Paul Simmons
źródło
1

Miałem inny problem podczas korzystania z 32-bitowego Ubuntu. Kiedy próbowałem ręcznie uruchomić mksdcard, otrzymywałem komunikat o błędzie nie znaleziono pliku.

Problem dotyczył open-jre / jdk. Zainstalowałem Oracle Java i problem został rozwiązany. Niestety nie możesz już zainstalować Oracle Java przez apt / synaptic i musisz przeskoczyć przez kilka dodatkowych obręczy:

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

CosmicCat
źródło
1

Podczas testów Debiana, kiedy próbowałem uruchomić ./tools/mksdcards, otrzymałem błąd:

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

Zainstalowanie lib32stdc ++ 6 rozwiązuje problem i było możliwe utworzenie pliku avd.

David Carlos
źródło
0

MyOS to Oracle Unbreakable Linux 6 - aby rozwiązać ten problem musiałem zainstalować pakiet libstdc ++ - 4.4.6-3.el6.i686.

SerVel
źródło
0

Po wielu instalacjach i nie uzyskaniu żadnego wyniku znalazłem to i zadziałało.

Dzieje się tak, ponieważ sdk/toolsnie można wykonać niektórych plików wykonywalnych w programie . Przejdź do folderów Android Studio i Android SDK i ustaw wszystkie katalogi i pliki jako wykonywalne za pomocą tego polecenia:

chmod +x -R *
Ahmed Mubarak
źródło
Łamie mnie, że 9 lat później ten problem wciąż się pojawia. Dobre czasy, dziękujemy za podzielenie się swoimi doświadczeniami.
Alex Pritchard
-1

Spróbuj przenieść folder SDK systemu Android do folderu domowego. To działa.

user3133745
źródło
-1

Miałem ten sam problem. Po rozwiązaniu problemu dowiedziałem się, że to dlatego, że mój system Windows jest 32-bitowy, a moja karta mksdcard jest kompatybilna tylko z 64-bitową. Następnie po prostu skopiowałem 32-bitową kartę mksdcard do folderu narzędzi i usunąłem starszą. To rozwiązało mój problem.

Jomia
źródło
-1

Dla osób, które miały ten sam problem z oknami. Dla mnie to dlatego, że narzędzie mksdcard.exe nie mogło działać pomyślnie. Niektóre narzędzia SDK, takie jak mksdcard.exe, wymagają środowiska uruchomieniowego Microsoft Visual C ++. Więc przejdź do właściwości systemu i sprawdź typ systemu:

wprowadź opis obrazu tutaj

Następnie na podstawie typu systemu (dla mnie był to x64) pobierz / zaktualizuj najnowszy pakiet redystrybucyjny Microsoft Visual C ++ dla programu Visual Studio 2019 z linku https://visualstudio.microsoft.com/downloads/

wprowadź opis obrazu tutaj

Po zainstalowaniu Microsoft Visual C ++ mój problem został rozwiązany. Udało mi się pomyślnie stworzyć AVD.

shaby
źródło