【问题标题】:Ubuntu - Error: Failed to create the SD cardUbuntu - 错误:无法创建 SD 卡
【发布时间】:2011-04-22 03:54:37
【问题描述】:

我看到很多关于写入 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 时,它只是报告它找不到文件或目录。 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 变量中,但我觉得我显然还缺少其他东西。也许某种访问权限?

尝试使用 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 唉,32M SD 卡仍然无法创建。 :(
  • @Alex Pritchard:这很奇怪。这些图像是在与 AVD 的其余部分 (~/.android/avd/whateveryoucalledit/) 相同的目录中创建的,所以我不太了解如何创建 AVD,但不能使用 SD 卡创建 AVD。
  • @CommonsWare 我一直在做更多的阅读,并认为我可能已经找到了一些东西。我怀疑可能有一些问题,因为我使用的是 64 位 linux 安装并且可能需要安装 ia32-libs。我回家后会试试这个,看看是否有帮助。
  • @Alex Pritchard:是的,我相信你需要这些。很惊讶它在没有它们的情况下运行,实际上。为了让 Android 能够在我的 64 位 Ubuntu 设置上运行,我不得不经历一些变化,尽管那是很久以前的事了,以至于我忘记了细节。

标签: android linux ubuntu


【解决方案1】:

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

【讨论】:

  • 谢谢,ubuntu 12.04 x64,它解决了这个问题。我只想说这些 ia32-lib 大约是 260mb
  • 是的!我找到了没有那些可怕的 240 个依赖包的方法!而不是ia32-libs 安装libstdc++6:i386 libgcc1:i386 zlib1g:i386 libncurses5:i386。感谢这个人,他从所有垃圾中拯救了我(希望还有其他人)的计算机:stackoverflow.com/a/10473415/998772 P.S.我正在使用 Linux Mint 13
  • 在 Fedora 上,dnf install glibc.i686 libstdc++.i686
  • 谢谢。我使用 Ubuntu 14.04 LTS amd,它解决了这个问题。我安装了像@pavel_kazlou 建议的单独的包
  • @nimrodm 我一直对这篇帖子的活跃度感到惊讶(我迄今为止最受欢迎的 SO 帖子,哈哈)。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    我遇到了和你一样的错误,我刚刚解决了它,所以也许它可以帮助你(虽然我不认为你的错误是由和我一样的问题引起的)。

    我发现../tools里面的所有工具都没有执行权限,所以我用了

    chmod -R 777 ../tools
    

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

    【讨论】:

    • 感谢您提供答案。 Stack Overflow 提供格式以增强答案的可读性。您可以使用代码格式来识别 shell 命令并将其与其他文本区分开来。
    • 有效,但这会导致.txt.xml 文件等具有可执行权限...如果知道所涉及的各个文件会很高兴
    【解决方案4】:

    我遇到了一个不同的问题:平台工具在我的路径中,但工具不在。因此,除了未创建 SDCard 映像外,一切正常。当我在 eclipse 中创建 avd 时没有注意到这一点,并且虚拟设备是用一个非常小的 sd 卡创建的,导致它在应用安装时不断抛出 media not available 错误。

    【讨论】:

      【解决方案5】:
      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
      

      它应该工作:)

      【讨论】:

        【解决方案6】:

        我在使用 32 位 Ubuntu 时遇到了不同的问题。当我尝试手动运行 mksdcard 时,我收到了一个找不到文件的错误。

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

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

        【讨论】:

          【解决方案7】:

          MyOS 是 Oracle Unbreakable Linux 6 - 为了解决这个问题,我必须安装 libstdc++-4.4.6-3.el6.i686 包。

          【讨论】:

            【解决方案8】:

            也有这个问题,安装 i386 包后,我能够为我的 Android 模拟器创建一个 SD 卡 我必须做两个步骤

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

            完成后,我就可以创建一个附有 SD 卡的模拟器

            【讨论】:

              【解决方案9】:

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

              【讨论】:

                【解决方案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++
                

                【讨论】:

                • 我唯一需要的是 lib32stdc++6。
                【解决方案11】:

                我遇到了同样的问题。故障排除后,我才知道,这是因为我的 Windows 是 32 位的,而我的 mksdcard 只兼容 64 位。然后我只是将 32 位的 mksdcard 复制到工具文件夹中,并删除了旧的。它解决了我的问题。

                【讨论】:

                  【解决方案12】:

                  在 debian 测试中,当我尝试运行 ./tools/mksdcards 时,我收到了错误:

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

                  安装 lib32stdc++6 可以解决问题,并且可以创建 avd。

                  【讨论】:

                    【解决方案13】:

                    如果您使用的是 Kali、Debian Jessie(或 Ubuntu 13.10+),请尝试

                    sudo apt-get install lib32stdc++6

                    而不是上面提到的 ia32-libs。

                    【讨论】:

                      【解决方案14】:

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

                      sudo apt-get install lib32stdc++6
                      

                      【讨论】:

                      • 我手动安装了 SDK(没有 Android Studio),这对我有用。
                      • 除此之外,为了制作模拟器,我不得不将 ~/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”禁用它。
                      • 宾果游戏。 Ubuntu 17.04。
                      【解决方案15】:
                      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++/**
                      

                      【讨论】:

                        【解决方案16】:

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

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

                        【讨论】:

                        • 这在 Kubuntu 17.04 上对我有用。但是 libstdc++ 仍然必须被删除。
                        【解决方案17】:

                        经过大量安装但没有得到任何结果,我发现它并且它有效。

                        这是因为sdk/tools 中的某些可执行文件无法执行。转到您的 Android Studio 和 Android SDK 文件夹,并通过以下命令使所有目录和文件可执行:

                        chmod +x -R *
                        

                        【讨论】:

                        • 让我大吃一惊,9 年后这个问题仍然存在。美好时光。感谢您分享您的经验。
                        【解决方案18】:

                        对于在 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。

                        【讨论】:

                          猜你喜欢
                          • 1970-01-01
                          • 2020-04-10
                          • 1970-01-01
                          • 1970-01-01
                          • 2011-07-30
                          • 2011-11-13
                          • 1970-01-01
                          相关资源
                          最近更新 更多