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: Вам, вероятно, не нужна поддельная SD-карта на 1024 Мбайт. Попробуйте вместо этого 32M и посмотрите, повезет ли вам больше.
CommonsWare
@CommonsWare Увы, SD карту на 32M все равно не получается создать. :(
Алекс Причард
@Alex Pritchard: Это довольно странно. Образы создаются в том же каталоге, что и остальная часть AVD ( ~/.android/avd/whateveryoucalledit/), поэтому я не могу понять, как вы можете создать AVD, но не AVD с SD-картой.
CommonsWare
@CommonsWare Я читал немного больше и думаю, что мог что-то найти. Я подозреваю, что это может быть некоторая проблема, потому что я использую 64-битную установку Linux и, возможно, потребуется установить ia32-libs. Я собираюсь попробовать это, когда вернусь домой, и посмотрю, поможет ли это.
Алекс Притчард,
@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-libsinstall 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 Я постоянно удивляюсь активности в этом посте (мой самый популярный пост SO на сегодняшний день, ха).
Alex Pritchard
80

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

sudo apt-get install lib32stdc++6
GeekLei
источник
Я установил SDK вручную (без Android Studio), и у меня это сработало.
CTodea
1
Кроме того, мне пришлось переименовать ~ / Android / Sdk / emulator / lib64 / libstdc ++ / libstdc ++. So.6 и libstdc ++. So.6.0.18 во что-то еще, чтобы заставить эмулятор работать. Я мог заставить его работать только без OpenGL. --------------- ./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
Спасибо за ответ. Stack Overflow обеспечивает форматирование для повышения удобочитаемости вашего ответа. Вы можете использовать форматирование кода, чтобы идентифицировать команду оболочки и выделить ее отдельно от остального текста.
this.josh
Работает, но это приводит к тому .txt, что .xmlфайлы и т. Д. Имеют права на исполнение ... было бы неплохо узнать,
какие
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).

paulsm4
источник
5

В elementary OS и 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

он должен работать :)

imon_iut
источник
4

Если вы используете Kali, Debian Jessie (или Ubuntu 13.10+), попробуйте

sudo apt-get установить 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-картой, из-за чего оно постоянно выдавало ошибку media not available при установке приложения.

Эндрю Пол Симмонс
источник
1

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

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

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

CosmicCat
источник
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.

SerVel
источник
0

После долгой установки и отсутствия результата я нашел это, и это сработало.

Это происходит потому, что некоторые исполняемые файлы sdk/toolsне могут быть выполнены. Перейдите в папки Android Studio и Android SDK и сделайте все каталоги и файлы исполняемыми с помощью этой команды:

chmod +x -R *
Ахмед Мубарак
источник
Меня удивляет, что 9 лет спустя эта проблема все еще возникает. Хорошие времена. Спасибо, что поделились своим опытом.
Alex Pritchard
-1

Попробуйте переместить папку android sdk в домашнюю папку. Оно работает.

user3133745
источник
-1

У меня такая же проблема. После устранения неполадок я узнал, что это потому, что моя Windows 32-битная, а моя mksdcard совместима только с 64-битной. Затем я просто скопировал 32-битную mksdcard в папку инструментов и удалил старую. Это решило мою проблему.

Джомия
источник
-1

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

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

Затем в зависимости от типа вашей системы (для меня это была x64) загрузите / обновите последнюю версию Microsoft Visual C ++ Redistributable для Visual Studio 2019 по ссылке https://visualstudio.microsoft.com/downloads/

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

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

Shaby
источник