Ubuntu - Помилка: Не вдалося створити SD-карту


84

Я бачу багато публікацій про запис на SD-карту, але я вважаю, що моя проблема інша. Я не можу створити SD-карту під час створення AVD.

Спочатку я спробував використовувати для цього Android SDK та AVD Manager, вибравши
Ім'я : my_avd
Ціль : Android 2.2 - API рівня 8
SD-карта : Розмір: 1024 Мб
Скін : Вбудований: За замовчуванням (HVGA)
Обладнання : Властивість: Абстрагований РК-дисплей Щільність, значення: 160

З'явиться вікно із повідомленням:
"Результат створення AVD 'my_avd':
Помилка: Не вдалося створити SD-карту."

Я спробував повторити процес із командного рядка, отримавши подібну помилку:

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.

Спроба дотримуватися інструкцій щодо використання mksdcard була однаково малопродуктивною; Я думаю, що мій основний брак досвіду роботи з Linux може спричинити мені проблеми тут. Коли я намагаюся використовувати mksdcard, він просто повідомляє, що не може знайти файл або каталог. Чи доступний інструмент mksdcard для використання таким чином у 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

Я додав каталог інструментів android до своєї змінної PATH, але я відчуваю, що я, очевидно, маю щось інше, чого мені не вистачає. Можливо, якісь права доступу?

Спроба запустити команду android за допомогою sudo теж не допомогла:

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.

Я навіть спробував встановити Eclipse і плагін ADT і запустити менеджер звідти безрезультатно. Будь-які поради були б дуже вдячні. Попереджене попередження про те, що я дещо початківець користувач Linux, тому навіть якщо це здається незрозумілою очевидною справою для перевірки, я все одно міг пропустити це.


@Alex Pritchard: Вам, мабуть, не потрібна 1024M підроблена SD-карта. Спробуйте натомість 32 мільйони і перевірте, чи вам більше щастить.
CommonsWare

@CommonsWare На жаль, 32-мегапіксельну SD-карту все ще не вдається створити. :(
Alex Pritchard,

@Alex Pritchard: Це досить дивно. Зображення створюються в тому самому каталозі, що й решта AVD ( ~/.android/avd/whateveryoucalledit/), тому я не можу зрозуміти, як можна створити AVD, але не AVD із SD-картою.
CommonsWare

@CommonsWare Я трохи більше читаю і думаю, що міг щось знайти. Я підозрюю, що можуть виникнути проблеми, оскільки я використовую 64-розрядну установку Linux, і, можливо, доведеться встановити ia32-libs. Я збираюся спробувати це, повернувшись додому, і подивитися, чи допоможе це.
Alex Pritchard,

@Alex Pritchard: Так, я вважаю, що вони вам потрібні. Насправді здивований, що він працює зовсім без них. Мені довелося пройти кілька обертань, щоб запустити Android на моїй 64-бітовій установці Ubuntu, хоча це було досить давно, щоб я забув подробиці.
CommonsWare

Відповіді:


101

Тож я знайшов проблему. Я використовував 64-розрядну інсталяцію Linux, в якій за замовчуванням не було встановлено пакет ia32-libs. Утиліта mksdcard не працює без цього пакета. Після його встановлення я зміг без проблем створити AVD за допомогою менеджера AVD.


1
Дякуємо, ubuntu 12.04 x64, він вирішив проблему. Я лише зауважу, що ці ia32-libs складають приблизно
260 Мб

43
Так! Я знайшов шлях без усіх тих жахливих 240 пакетів залежностей! Замість ia32-libsвстановити libstdc++6:i386 libgcc1:i386 zlib1g:i386 libncurses5:i386. Похвала цьому хлопцеві, який врятував мій (і, сподіваюсь, інші) комп’ютер від усього сміття: stackoverflow.com/a/10473415/998772 PS Я використовую Linux Mint 13
pavel_kazlou

4
На Fedora,dnf install glibc.i686 libstdc++.i686
Домінік Кліл,

Дякую. Я використовую Ubuntu 14.04 LTS amd, і це вирішує проблему. Я встановив окремі пакети, як запропонував @pavel_kazlou
Жоао Поло

1
@nimrodm Я постійно здивований активністю на цій посаді (мій найпопулярніший пост на сьогодні, ха).
Alex Pritchard,

80

На Ubuntu 16.04 LTS x64, використовуючи Android Studio 2.1 (також протестований на 2.3.3), запустіть з терміналу:

sudo apt-get install lib32stdc++6

Я встановив SDK вручну (без Android Studio), і це спрацювало для мене.
CTodea

1
Крім того, мені довелося перейменувати ~ / Android / Sdk / emulator / lib64 / libstdc ++ / libstdc ++. So.6 та libstdc ++. So.6.0.18 на щось інше, щоб запустити емулятор. Я міг лише змусити його працювати без жорсткого відкриття. --------------- ./emulator @ Nexus_4_API_23 не вдалося створити витягуваний getGLES2ExtensionString: Не вдалося створити GLES 2.x Pbuffer! Не вдалося отримати рядок розширень GLES 2.x! Не вдалося ініціалізувати емулятор емулятора фреймбуфера: ПОМИЛКА: Не вдалося ініціалізувати емуляцію OpenglES, використовуйте '-gpu off', щоб вимкнути її.
Francisco Junior

1
Бінго. Ubuntu 17.04.
piratemurray

22

У мене була така ж помилка, як у вас, і я щойно її вирішив, тож, можливо, це може вам допомогти (хоча я не думаю, що ваша помилка викликана такою ж проблемою, як я).

Я виявив, що всі інструменти в ../tools не мають дозволу на виконання, тому я використав

chmod -R 777 ../tools

з командного рядка, і це нарешті працює


1
Дякуємо, що надали відповідь. Переповнення стека забезпечує форматування для підвищення читабельності вашої відповіді. Ви можете використовувати форматування коду для ідентифікації команди оболонки та виділення її з іншого тексту.
this.josh

Працює, але це призводить до того .txt, що .xmlфайли тощо мають дозвіл на виконання ... було б непогано знати окремі задіяні файли
funkybro

10

Як вже писали інші, проблема полягає в тому, що ваш дистрибутив Linux є 64-розрядним і, на даний момент, віртуальним пристроєм Android ( AVD ) потрібна бібліотека x86 для коректної роботи.

Хтось запропонував встановити ia32-libs . Однак у Ubuntu 14.04 LTS ви не знайдете цієї бібліотеки. Я вирішив, використовуючи ці альтернативні бібліотеки: lib32z1 , lib32ncurses5 , lib32bz2-1.0 та lib32stdc ++ .

sudo apt-get update
sudo apt-get install lib32z1 lib32ncurses5 lib32bz2-1.0 lib32stdc++

3
Мені потрібен був лише lib32stdc ++ 6.
Big McLargeHuge

6

Я просто зіткнувся з тією ж проблемою. Жоден із інструментів SDK не буде працювати на 64-розрядному Ubuntu без встановлення ia32-libs (ПРИКЛАД: sudo apt-get install ia32-libs).


5

В елементарній ОС та ubuntu рішенням було встановити наступні пакети

sudo apt-get install lib32ncurses5 lib32z1
sudo apt-get install libgcc1:i386

Це працювало для мене на Kubuntu 17.04. Але libstdc ++ все одно слід видалити.
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

Я знайшов цю проблему і спочатку знаходжу спосіб:

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

тоді напишіть це:

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

це повинно працювати :)


4

Якщо ви використовуєте Kali, Debian Jessie (або Ubuntu 13.10+), спробуйте

sudo apt-get install lib32stdc ++ 6

замість згаданих вище ia32-libs.


4
sudo apt-get install lib32stdc++6

Після цього ви можете отримати наступні помилки

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

Використовуйте ці 3 команди для їх вирішення

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++/**

3

Також мала цю проблему, і після встановлення пакета i386 я зміг створити SD-карту для мого емулятора Android, мені довелося зробити два кроки

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

Після цього я зміг створити емулятор із прикріпленою SD-картою


2

У мене була інша проблема: інструменти платформи були на моєму шляху, але інструменти ні. Отже, все працювало, крім того, що образ SDCard не створювався. Цього не було помічено, коли я створив avd в eclipse, а віртуальний пристрій був створений з дуже маленькою SD-картою, що постійно видає помилку, недоступну для носія, під час встановлення програми.


1

У мене була інша проблема з використанням 32-бітного Ubuntu. Коли я намагався запустити mksdcard вручну, я отримував помилку файлу не знайдено.

Проблема полягала в open-jre / jdk. Я встановив oracle java, і проблема була виправлена. На жаль, ви більше не можете встановлювати oracle java через apt / synaptic, і вам доведеться перейти через додаткові обручі:

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


1

Під час тестування debian, коли я спробував запустити ./tools/mksdcards, я отримав помилку:

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

Встановлення lib32stdc ++ 6 вирішує проблему і можна створити avd.


0

MyOS - Oracle Unbreakable Linux 6 - для вирішення цієї проблеми мені довелося встановити libstdc ++ - 4.4.6-3.el6.i686.


0

Після багатого встановлення та не отримання результату я знайшов це, і це спрацювало.

Це відбувається тому, що деякі виконувані файли в sdk/toolsне можуть бути виконані. Перейдіть до папок Android Studio та Android SDK і зробіть усі каталоги та файли виконуваними за допомогою цієї команди:

chmod +x -R *

Тріскає мене, що через 9 років ця проблема все ще з’являється. Гарні часи. Дякуємо, що поділилися своїм досвідом.
Alex Pritchard,


-1

У мене була та сама проблема. Після усунення несправностей я дізнався, що це через те, що у мене Windows 32-бітна, а моя mksdcard сумісна лише з 64-бітною. Потім я просто скопіював 32-бітну mksdcard до папки інструментів і видалив стару. Це вирішило мою проблему.


-1

Для людей, які стикалися з тією ж проблемою на вікнах. Для мене це було тому, що інструмент mksdcard.exe не міг успішно працювати. Деякі засоби SDK, такі як mksdcard.exe, вимагають виконання Microsoft Visual C ++. Тож перейдіть до властивостей системи та перевірте тип системи:

введіть тут опис зображення

Потім на основі типу вашої системи (для мене це був x64) завантажте / оновіть останню версію Microsoft Visual C ++, що розповсюджується для Visual Studio 2019 за посиланням https://visualstudio.microsoft.com/downloads/

введіть тут опис зображення

Після встановлення Microsoft Visual C ++ моя проблема була виправлена. Мені вдалося створити AVD успішно.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.