Ubuntu-错误:无法创建SD卡


84

我看到很多关于写入SD卡的帖子,但是我相信我的问题有所不同。在建立AVD的过程中,我无法创建SD卡。

我最初尝试使用Android SDK和AVD Manager来执行此操作,选择
名称:my_avd
目标:Android 2.2-API级别8
SD卡:大小:1024 MiB
皮肤:内置:默认(HVGA)
硬件:属性:抽象的LCD密度,值: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时,它只是报告它找不到文件或目录。是否可以在Linux中以这种方式使用mksdcard工具?

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 tools目录添加到了我的PATH变量中,但是我感觉显然还有其他东西我想念。也许某种访问权限?

尝试使用sudo运行android命令似乎都没有帮助:

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卡。改用32M,看看您是否有更好的运气。
CommonsWare,2010年

@CommonsWare las,该32M SD卡仍然无法创建。:(
Alex Pritchard,2010年

@Alex Pritchard:这很奇怪。图像与其余的AVD(~/.android/avd/whateveryoucalledit/)在同一目录中创建,因此我不太想知道如何创建AVD,而不能创建带有SD卡的AVD。
CommonsWare 2010年

@CommonsWare我一直在做更多的阅读,认为我可能已经找到了一些东西。我怀疑可能存在一些问题,因为我正在使用64位linux安装,并且可能需要安装ia32-libs。我回家后要尝试一下,看看是否有帮助。
亚历克斯·普里查德

@Alex Pritchard:是的,我相信您需要那些。实际上,没有它们,它竟然运行了。我必须经历一些旋转才能使Android在我的64位Ubuntu安装程序上运行,尽管那已经很久了,以至于我忘记了细节。
CommonsWare,2010年

Answers:


101

所以我发现了问题。我使用的是64位Linux安装,默认情况下未安装ia32-libs软件包。没有此软件包,mksdcard实用程序将无法运行。安装后,我可以使用AVD管理器毫无问题地构建AVD。


1
谢谢,ubuntu 12.04 x64,它解决了问题。我只此话,这些IA32-库是260MB左右
yetanothercoder

43
是! 我找到了没有所有这些可怕的240个依赖包的方法!代替ia32-libs安装libstdc++6:i386 libgcc1:i386 zlib1g:i386 libncurses5:i386。这个人的荣誉,他从所有垃圾中救了我(以及希望的其他人)计算机:stackoverflow.com/a/10473415/998772 PS我正在使用Linux Mint 13
pavel_kazlou 2012年

4
在Fedora上dnf install glibc.i686 libstdc++.i686
Dominic Cleal

谢谢。我使用Ubuntu 14.04 LTS amd,它解决了这个问题。我安装了建议的@pavel_kazlou之类的单独软件包
Joao Polo

1
@nimrodm我对此帖子的活动感到惊讶(我迄今为止最受欢迎的SO帖子,哈哈)。
Alex Pritchard

80

在使用Android Studio 2.1(也在2.3.3上进行测试)的Ubuntu 16.04 LTS x64上,从终端运行:

sudo apt-get install lib32stdc++6

我已经手动安装了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'禁用它。
弗朗西斯科·弗朗西斯科

1
答对了。Ubuntu 17.04。
piratemurray

22

我遇到了与您相同的错误,而我刚刚解决了它,因此也许可以为您提供帮助(尽管我不认为您的错误是由与我相同的问题引起的)。

我发现../tools中的所有工具均无权执行,因此我使用了

chmod -R 777 ../tools

从命令行开始,它终于可以工作了


1
感谢您提供答案。堆栈溢出提供了格式化功能,可以增强答案的可读性。您可以使用代码格式来识别shell命令,并将其与其他文本区分开来。
this.josh 2011年

可以,但是这样会导致.txt.xml文件等具有可执行权限...很高兴知道所涉及的单个文件
funkybro

10

正如其他人已经写过的那样,问题是您的Linux发行版是64位的,而目前,Android虚拟设备AVD)需要x86库才能正常工作。

有人建议安装ia32-libs。但是,在Ubuntu 14.04 LTS中找不到该库。我使用以下替代库解决了:lib32z1lib32ncurses5lib32bz2-1.0lib32stdc ++

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

3
我唯一需要的是lib32stdc ++ 6。
Big McLargeHuge

6

我刚遇到同样的问题。如果没有安装ia32-libs(例如:sudo apt-get install ia32-libs),则所有SDK工具都无法在64位Ubuntu上运行。


5

在基本OS和ubuntu中,解决方案是安装以下软件包

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

这在Kubuntu 17.04上对我有用。但必须删除libstdc ++。
阿瓦曼德

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+),请尝试

须藤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软件包后,我能够为我的Android仿真器创建SD卡,我必须执行两个步骤

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

完成后,我可以创建一个带有SD卡的仿真器


2

我有一个不同的问题:平台工具在我的道路上,但工具不在。因此,除了未创建SDCard映像以外,其他所有方法均有效。当我在eclipse中创建avd并使用非常小的sd卡创建虚拟设备时,对此并没有任何注意,这会导致它在应用程序安装时不断抛出媒体不可用错误。


1

使用32位Ubuntu时遇到了另一个问题。当我尝试手动运行mksdcard时,出现文件未找到错误。

问题是open-jre / jdk。我安装了oracle java,问题已解决。不幸的是,您不能再通过apt / synaptic安装oracle java,而不得不跳过一些额外的步骤:

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年后这个问题仍然出现。祝您有个愉快的时刻。感谢您分享经验。
亚历克斯·普里查德

-1

尝试将android sdk文件夹移动到主文件夹。有用。


-1

我有同样的问题。经过故障排除后,我知道这是因为我的Windows是32位,而我的mksdcard仅与64位兼容。然后,我只是将32位的mksdcard复制到tools文件夹,并删除了较旧的mksdcard。它解决了我的问题。


-1

对于在Windows上面临相同问题的人们。对我来说是因为mksdcard.exe工具无法成功运行。某些SDK工具(例如mksdcard.exe)需要Microsoft Visual C ++运行时。因此,请转到系统属性并检查系统类型:

在此处输入图片说明

然后根据您的系统类型,(对我来说是x64)从https://visualstudio.microsoft.com/downloads/链接下载/更新Visual Studio 2019的最新Microsoft Visual C ++ Redistributable

在此处输入图片说明

安装Microsoft Visual C ++之后,我的问题已解决。我能够成功创建AVD。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.