Android模拟器错误消息:" PANIC:缺少模拟器引擎程序' x86' 。CPUS#&34;

时间:2014-10-21 09:31:17

标签: android android-emulator

我正在尝试使用AVD Manager运行Android模拟器。 这是我的avd: http://image-upload.de/image/fnx79V/52b0d050ee.png

这就是开始时发生的事情:

http://image-upload.de/image/vGpQfa/e912d83939.png

我有Macbook Pro Retina。直接从intel页面安装Haxm驱动程序。

没有模拟器正在运行。所有人都得到相同的“错误”消息。

运行命令(这个错误是当我使用Homebrew安装Android-sdk和Android平台工具时|任何遇到同样问题的人应该删除它或查看冲突的位置)

export ANDROID_EMULATOR_DEBUG=1 test20

emulator:Found AVD name 'test20'
emulator:Found AVD target architecture: x86
emulator:Looking for emulator-x86 to emulate 'x86' CPU
emulator:Probing program: ./emulator-x86
emulator:Probing path for: emulator-x86
emulator:Found target-specific emulator binary: /usr/local/bin/emulator-x86
emulator:Probing for: /usr/local/bin/libOpenglRender.dylib
emulator:Probing for: /usr/local/bin/lib/libOpenglRender.dylib
emulator:Probing for: /usr/local/lib/libOpenglRender.dylib
emulator:Probing for: /usr/local/bin/lib64OpenglRender.dylib
emulator:Probing for: /usr/local/bin/lib/lib64OpenglRender.dylib
emulator:Probing for: /usr/local/lib/lib64OpenglRender.dylib
emulator:Could not find OpenGLES emulation host libraries!
emulator: ERROR: This AVD's configuration is missing a kernel file!!

emulator -avd test21
emulator:Found AVD name 'test21'
emulator:Found AVD target architecture: x86_64
emulator:Looking for emulator backend for x86_64 CPU
emulator:Probing program: ./emulator-x86_64
emulator:Probing path for: emulator-x86_64
emulator:Looking for emulator-x86 to emulate 'x86_64' CPU
emulator:Probing program: ./emulator-x86
emulator:Probing path for: emulator-x86
PANIC: Missing emulator engine program for 'x86_64' CPUS.

我用Homebrew修复了问题:

我试了一下,发现了这个:

emulator64-x86 -avd test20
Creating filesystem with parameters:
    Size: 69206016
    Block size: 4096
    Blocks per group: 32768
    Inodes per group: 4224
    Inode size: 256
    Journal blocks: 1024
    Label: 
    Blocks: 16896
    Block groups: 1
    Reserved block group size: 7
Created filesystem with 11/4224 inodes and 1302/16896 blocks
emulator: ERROR: Could not load OpenGLES emulation library: dlopen(lib64OpenglRender.dylib, 1): image not found
emulator: WARNING: Could not initialize OpenglES emulation, using software renderer.
HAX is working and emulator runs in fast virt mode
qemu: could not load PC BIOS 'bios.bin'

对于所有遇到同样问题的人,也许这些步骤有帮助:

在调试模式下运行模拟器:

export ANDROID_EMULATOR_DEBUG=1 emulatorName

如果有一个看起来奇怪的路径检查其他安装如Homebrew并删除冲突(卸载一个)

当缺少库时,您需要导出变量:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ANDROID_HOME/tools/lib

当出现错误“qemu:无法加载PC BIOS'bios.bin'”时,一个修复就是以完整路径运行模拟器:

/Applications/Android\ Studio.app/sdk/tools/emulator64-x86 -avd test20
In your case it is maybe a other path.

31 个答案:

答案 0 :(得分:173)

如果您使用的是macOS,请将Android SDK emulatortools目录添加到路径中:

第1步:在我的情况下,订单非常重要,首先是emulator,然后是tools

export ANDROID_SDK=$HOME/Library/Android/sdk
export PATH=$ANDROID_SDK/emulator:$ANDROID_SDK/tools:$PATH

第2步:根据操作系统重新加载.bash_profile.bashrc

第3步:获取可用的模拟器列表: $emulator -list-avds

第4步:从命令行启动模拟器并将avd替换为模拟器的名称$emulator @avd

请勿忘记添加@符号。

使用macOS High Sierra 10.13.4和Android Studio 3.1.2测试。

答案 1 :(得分:48)

以下解决方案启动emulator-x86对我有用:

cd $SDK/tools; 
ln -s emulator64-x86 emulator-x86

或在Windows上打开命令提示符(管理员)

cd %ANDROID_SDK_ROOT%\tools
mklink emulator64-x86.exe emulator-x86.exe

现在模拟器将从SDK管理器启动。

注意:仿真器位于emulators文件夹中的更新版本中。

答案 2 :(得分:40)

将Android Studio升级到3.2,甚至升级一些SDK软件包后,我都遇到了这个问题。

原因是仿真器的路径已更改,因此请勿使用...../Android/Sdk/tools/emulator,而应使用....../Android/Sdk/emulator/emulator

答案 3 :(得分:33)

导航到位于Android SDK folder / emulator内的仿真器文件夹

cd ${ANDROID_HOME}/emulator

然后键入以下命令以在没有android studio的情况下打开模拟器:

$ ./emulator -list-avds
$ ./emulator -avd Nexus_5X_API_28_x86

Nexus_5X_API_28_x86是我的AVD,您需要提供您的AVD名称

答案 4 :(得分:14)

对于Windows 10,5.29.18:

使用命令promt我刚进入模拟器目录:

cd C:\Android\sdk\emulator

然后输入命令:

emulator -avd Nexus_S_API_27

Nexus_S_API_27是我的自定义模拟器的名称。

Othewize它会滥用:

PANIC: Missing emulator engine program for 'x86' CPU.

答案 5 :(得分:12)

在Mac上,安装Android Studio IDE android-studio-ide-173.4907809-mac.dmg并使用Studio SDK Manager安装SDK工具后

enter image description here

使用~/.profile~/.bash_profile添加到PATH中,并确保$ANDROID_HOME/emulator之前的$PATH中有$ANDROID_HOME/tools,如下所示:

export ANDROID_HOME=$HOME/Library/Android/sdk
export PATH=$PATH:$ANDROID_HOME/emulator
export PATH=$PATH:$ANDROID_HOME/tools
export PATH=$PATH:$ANDROID_HOME/tools/bin
export PATH=$PATH:$ANDROID_HOME/platform-tools

alias androidemulator='emulator -avd Nexus_5X_API_28_x86'

答案 6 :(得分:7)

在macOS Mojave 10.14.5上进行了测试。

原因和解决方案:

我们使用 sdk/tools/emulator ,我们应该使用 sdk/emulator

WM-C02WM0T3HTD8:~ zgong$ emulator -avd Pixel_3_XL_API_Q_x86
PANIC: Unknown AVD name [Pixel_3_XL_API_Q_x86], use -list-avds to see valid list.
HOME is defined but there is no file Pixel_3_XL_API_Q_x86.ini in $HOME/.android/avd
(Note: Directories are searched in the order $ANDROID_AVD_HOME, $ANDROID_SDK_HOME/avd, and $HOME/.android/avd)
WM-C02WM0T3HTD8:~ zgong$ emulator -avd Pixel_3_XL_API_Q
PANIC: Missing emulator engine program for 'x86' CPU.

我们可以检查模拟器的位置:

WM-C02WM0T3HTD8:~ zgong$ which emulator
/Users/zgong/Library/Android/sdk/tools/emulator

我做了很多谷歌搜索,而大多数答案都是关于 在终端中正确设置路径,事实证明它实际上是 与在最新版本的SDK(模拟器)中进行的更改有关 应用位于/ emulator中,而不是/ tools中。留在这里 反正遇到了同样的问题。

我们需要使用以下内容:

{sdk location}/emulator -avd {avd name}

这是真实的输出:

WM-C02WM0T3HTD8:~ zgong$ /Users/zgong/Library/Android/sdk/emulator/emulator -avd Pixel_3_XL_API_Q
pc_memory_init: above 4g size: 40000000
emulator: WARNING: UpdateCheck: Failure: Error
emulator: WARNING: UpdateCheck: failed to get the latest version, skipping check (current version '29.2.1-5889189')
emulator: WARNING: UpdateCheck: Failure: Error
WebSocketServer listening on port 55850
Qt WebEngine ICU data not found at /Users/joshuaduong/qt-build-5.12.1/install-darwin-x86_64/resources. Trying parent directory...
Qt WebEngine ICU data not found at /Users/joshuaduong/qt-build-5.12.1/install-darwin-x86_64/resources. Trying parent directory...
Qt WebEngine ICU data not found at /Users/joshuaduong/qt-build-5.12.1/install-darwin-x86_64. Trying application directory...
Qt WebEngine ICU data not found at /Users/joshuaduong/qt-build-5.12.1/install-darwin-x86_64. Trying application directory...
Installed Qt WebEngine locales directory not found at location /Users/joshuaduong/qt-build-5.12.1/install-darwin-x86_64/translations/qtwebengine_locales. Trying application directory...
Qt WebEngine locales directory not found at location /Users/zgong/Library/Android/sdk/emulator/lib64/qt/libexec/qtwebengine_locales. Trying fallback directory... Translations MAY NOT not be correct.
Installed Qt WebEngine locales directory not found at location /Users/joshuaduong/qt-build-5.12.1/install-darwin-x86_64/translations/qtwebengine_locales. Trying application directory...
Qt WebEngine locales directory not found at location /Users/zgong/Library/Android/sdk/emulator/lib64/qt/libexec/qtwebengine_locales. Trying fallback directory... Translations MAY NOT not be correct.
Path override failed for key ui::DIR_LOCALES and path '/Users/zgong/.QtWebEngineProcess'
Path override failed for key ui::DIR_LOCALES and path '/Users/zgong/.QtWebEngineProcess'
Qt WebEngine resources not found at /Users/joshuaduong/qt-build-5.12.1/install-darwin-x86_64/resources. Trying parent directory...
Qt WebEngine resources not found at /Users/joshuaduong/qt-build-5.12.1/install-darwin-x86_64. Trying application directory...
Qt WebEngine resources not found at /Users/joshuaduong/qt-build-5.12.1/install-darwin-x86_64/resources. Trying parent directory...
Qt WebEngine resources not found at /Users/joshuaduong/qt-build-5.12.1/install-darwin-x86_64. Trying application directory...
[0403/154905.171893:WARNING:resource_bundle_qt.cpp(116)] locale_file_path.empty() for locale
[0403/154905.171871:WARNING:resource_bundle_qt.cpp(116)] locale_file_path.empty() for locale
Qt WebEngine ICU data not found at /Users/joshuaduong/qt-build-5.12.1/install-darwin-x86_64/resources. Trying parent directory...
Qt WebEngine ICU data not found at /Users/joshuaduong/qt-build-5.12.1/install-darwin-x86_64. Trying application directory...
Installed Qt WebEngine locales directory not found at location /Users/joshuaduong/qt-build-5.12.1/install-darwin-x86_64/translations/qtwebengine_locales. Trying application directory...
Qt WebEngine locales directory not found at location /Users/zgong/Library/Android/sdk/emulator/lib64/qt/libexec/qtwebengine_locales. Trying fallback directory... Translations MAY NOT not be correct.
Path override failed for key ui::DIR_LOCALES and path '/Users/zgong/.QtWebEngineProcess'
Qt WebEngine resources not found at /Users/joshuaduong/qt-build-5.12.1/install-darwin-x86_64/resources. Trying parent directory...
Qt WebEngine resources not found at /Users/joshuaduong/qt-build-5.12.1/install-darwin-x86_64. Trying application directory...
[0403/154907.393116:WARNING:resource_bundle_qt.cpp(116)] locale_file_path.empty() for locale

参考: https://www.reddit.com/r/androiddev/comments/a978kx/mac_can_run_emulator_fine_through_android_studio/

答案 7 :(得分:3)

只需遵循以下Mac专用步骤:

  1. 转到: /Users/{username}/Library/Android/sdk/emulator

  2. ./emulator -list-avds

  3. ./emulator @avdName

答案 8 :(得分:3)

您还可以尝试这里建议的内容:https://www.stkent.com/2017/08/10/update-your-path-for-the-new-android-emulator-location.html

简而言之,从sdk/emulator文件夹

运行模拟器

答案 9 :(得分:2)

你无法启动emulator-x86目录,因为它需要专门设置LD_LIBRARY_PATH才能找到PC Bios和GPU仿真库(这就是为什么'仿真器'存在,它修改路径,然后调用emulator-x86)。

您是否更新了第一个输出?看起来'模拟器'仍然找到'/ usr / local / bin / emulator-x86'

答案 10 :(得分:2)

在我的情况下,这就像一种魅力:

  1. 打开终端

  2. 类型:open ~/.bash_profile

  3. 添加以下行:

    export ANDROID_SDK=$HOME/Library/Android/sdk
    export PATH=$ANDROID_SDK/emulator:$PATH
    export PATH=$ANDROID_SDK/tools:$PATH
    export PATH=$ANDROID_SDK/tools/bin:$PATH
    export PATH=$ANDROID_SDK/platform-tools:$PATH
    export ANDROID_SDK_ROOT=$ANDROID_SDK 
    export ANDROID_AVD_HOME=$HOME/.android/and
    alias emulator='$ANDROID_SDK/emulator/emulator'
    
  4. 保存(按 Command + S )。您可以关闭窗口或不关闭窗口。

  5. 返回到终端,输入:source ~/.bash_profile

  6. 显示已安装的仿真器:emulator -list-avds,类似于:

    Pixel_2_API_29
    Pixel_3a_API_29
    Pixel_C_API_29
    
  7. 最后,运行仿真器:emulator @Pixel_2_API_29

答案 11 :(得分:2)

有两个名为emulator的二进制文件。位于$SDK/tools/emulator下的另一个$SDK/emulator/

下的
  • 请确保您具有正确的模拟器configure(需要将$SDK/emulator添加到您的环境路径中

我已经编写了一个脚本来帮助我调用avd列表

    #!/bin/bash -e


    echo "--- $# $(PWD)"
    HOME_CURRENT=$(PWD)
    HOME_EMULATOR=/Users/pcao/Library/Android/sdk/emulator

    if [ "$#" -eq 0 ]
    then
        echo "ERROR pls try avd 23 or avd 28 " 
    fi

    if [ "$1" = "23" ]
    then
        echo "enter 23"
        cd $HOME_EMULATOR
        ./emulator -avd Nexus_5_API_23_Android6_ &
        cd $HOME_CURRENT
    fi

    if [ "$1" = "28" ]
    then
        echo "enter 28"
        cd $HOME_EMULATOR
        ./emulator -avd Nexus_5_API_28_GooglePlay_ &
        cd $HOME_CURRENT
    fi


答案 12 :(得分:2)

在Windows7 64bit上有同样的问题。之所以没有在sdk / tools下丢失emulator-x86.exe文件。通过使用Android SDK Manager删除Android SDK工具并再次安装来修复它。该文件现在存在,模拟器按预期工作。

答案 13 :(得分:1)

删除Android SDK工具和Android SDK PLatform工具;然后再次下载这两个包。现在,创建一个新的模拟器并启动它;它会工作。您可以运行旧的模拟器。

答案 14 :(得分:1)

就我而言,通过执行which emulator返回了$ANDROID_HOME/tools/emulator 但应该是$ANDROID_HOME/emulator/emulator

所以我刚刚在PATH变量中的$ANDROID_HOME/emulator之前添加了$ANDROID_HOME/tools,现在可以正常使用

答案 15 :(得分:1)

尝试以下解决方法来启动emulator-x86:

export LD_LIBRARY_PATH=$SDK/tools/lib:$LD_LIBRARY_PATH
$SDK/tools/emulator-x86 <your-other-options>

其中$ SDK是SDK安装的路径。简而言之,“模拟器”试图做什么。如果前者存在,你可能想要启动emulator64-x86而不是emulator-x86。

答案 16 :(得分:1)

对于Ubuntu用户

如果您遇到PANIC: Missing emulator engine program for 'x86' CPU. 这个错误

尝试从SDK的仿真器文件夹中启动仿真器,如上

usama@usama-Aspire-V5-471:~/Android/Sdk/emulator$ ./emulator -avd Pixel_2_API_29

答案 17 :(得分:1)

在WINDOWS上-更新系统路径对我有用。为您的sdk的位置创建一个名为ANDROID_SDK的环境变量,然后按以下顺序将它们添加到您的路径中:

%ANDROID_SDK%\emulator
%ANDROID_SDK%\platform-tools
%ANDROID_SDK%\tools
%ANDROID_SDK%\tools\bin

答案 18 :(得分:1)

Avast Antivirus感知emulator-arm.exe是一个线程,并且由于某些原因而阻塞。当您在病毒库页面中添加排除项时,右键单击 - &gt; &#34;恢复并添加到排除项目&#34;它在未来的运行中没有解决。要在Avast 2015中永久解决这个问题:

设置 - &gt;

Active Protection - &gt;

File System Shield - &gt;

自定义 - &gt;

排除然后添加线程作为排除。然后按确定。

答案 19 :(得分:1)

这对我在macOS上有用:

echo 'export PATH=$PATH:'$HOME'/Library/Android/sdk/emulator:'$HOME'/Library/Android/sdk/tools:'$HOME'/Library/Android/sdk/platform-tools' >> ~/.bash_profile
source ~/.bash_profile

答案 20 :(得分:0)

首先,检查通过which emulator获得的路径,如果得到/usr/local/share/android-sdk/tools/emulator,则删除或重命名该模拟器(它是旧的),而改用{{3} }}。

如果您使用的是Homebrew并安装了/usr/local/share/android-sdk/emulator/emulator,则需要:

  1. 验证您的.bashrc或.zshrc是否设置了正确的路径:
brew cask install android-sdk android-studio
  1. 然后重新启动终端外壳,并检查路径是否符合您的预期:

    # Remove $HOME/Library/Android paths # The new way is to use ANDROID_SDK_ROOT export ANDROID_SDK_ROOT="/usr/local/share/android-sdk" # For good measure, add old paths to be backwards compatible with any scripts or whatnot. And to hopefully decrease confusion: export ANDROID_HOME=$ANDROID_SDK_ROOT export ANDROID_NDK_HOME=$ANDROID_SDK_ROOT/ndk-bundle

  2. 最后,设置正确的路径后,通常需要安装ndk和一些工具:

    set | grep ANDROID

    并检查列表中是否有其他类似sdkmanager "ndk-bundle" "cmake;3.10.2.4988404" "lldb;3.1"

  3. 的作品

我还关闭了Android Studio,删除了我的$ HOME文件夹下的旧Android / Sdk文件夹,然后重新启动Studio,当它询问我的SDK到哪里时,我粘贴了SDK路径:sdkmanager --list

答案 21 :(得分:0)

对于我来说,我需要从Sdk管理器安装Android模拟器,它会得到修复

enter image description here

答案 22 :(得分:0)

我遇到了同样的问题,除了直到进入仿真器文件夹,我试图导出仿真器文件夹,但对我不起作用

cd $android_home/emulator and run emulator

,最后,我在.bashrc文件中为命令编写了Elias

alias emulator="$ANDROID_HOME/emulator/emulator"

答案 23 :(得分:0)

在OSX / MacOS上适用于我的示例(设备的替代名称)

~/Library/Android/sdk/emulator/emulator @Pixel_2_API_28 -no-snapshot -wipe-data

答案 24 :(得分:0)

点击以下命令。它对我有用。 Android已将模拟器目录从 / tools 更改为 sdk / emulator

/Users/yourusername/Library/Android/sdk/emulator/emulator -avd Pixel_API_27

答案 25 :(得分:0)

添加对我来说可以接受的最低Android版本的虚拟设备。 (在此之前,我尝试了多个最新的Android版本并收到了Missing emulator engine program for 'x86_64' CPUS错误。)

答案 26 :(得分:0)

我的问题是在VS Code中使用集成终端。那给了我一个不同的路径设置(因此首先显示了工具路径而不是仿真器路径)。您所需要做的就是使用正确的bash更改全局vscode设置,如下所述:https://stackoverflow.com/a/53971796/3437868

答案 27 :(得分:0)

问题源于 SDK 更改,因为 emulator 现在拥有自己的目录。
我没有注意到(也不关心)运行一个过时的模拟器,虽然它仍然有效......
这是一个停滞的 SDK 迁移。使用 -verbose 开关运行时:

emulator -avd Nexus_6_API_R -verbose

人们可以看到它开始恐慌的地方:

emulator:try dir C:\Android\tools
emulator:Looking for emulator-x86 to emulate 'x86' CPU
emulator:Probing program: C:\Android\tools/emulator-x86.exe
PANIC: Missing emulator engine program for 'x86' CPU.

但是没有 emulator-x86.exe 可用,实际的模拟器驻留在目录 emulator 中。卸载“SDK 工具”后(在尝试重新安装它们时),该条目意外地从列表中消失,留下一个空的 tools 目录,该目录可能会从 PATH 中删除和移除。

不需要也不建议使用 x86_64 仿真(因为这将运行停滞版本的仿真器)。通过卸载“SDK 工具”来适应 SDK 路径更改是“答案”。人们可能可以在 tools 上用 emulator 替换 PATH,但这会留下混乱。


为了比较,30.3.5.0 版本的实际启动顺序应该是这样的:

emulator: Android emulator version 30.3.5.0 (build_id 7033400) (CL:N/A)
emulator: Found AVD name 'Nexus_6_API_R'
emulator: Found AVD target architecture: arm
emulator: argv[0]: 'emulator.exe'; program directory: 'C:\Android\emulator'

如果可能有类似的后续错误:

PANIC: Broken AVD system path. Check your ANDROID_SDK_ROOT value

这意味着 *.ini 中的系统映像路径可能有误。
下载 x86 系统映像,然后创建新的模拟器很有帮助。

答案 28 :(得分:0)

这里的问题是由设置为“自动”时使用硬件加速 GLES 的默认 AVD 引起的。必须编辑 AVD 并将其设置为“软件 - GLES 2.0”

settings

答案 29 :(得分:-1)

此消息表示$ SDK / tools /中缺少'emulator-x86'或'emulator64-x86'程序,或由于某种原因无法找到。

首先,您确定您有效下载/安装SDK吗?

答案 30 :(得分:-2)

查看您的.exe文件是否在您的防病毒隔离区

解决方案:

  1. 再次从https://developer.android.com/tools/sdk
  2. 下载adt-bundle
  3. 打开Zip文件。
  4. 从文件夹\sdk\tools
  5. 复制丢失的.exe文件
  6. 过去Android\sdk\tools目录中的已复制文件。