Android Emulator错误消息:“ PANIC:'x86'CPUS缺少仿真器引擎程序。”


232

我正在尝试使用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-platform-tools时遇到的问题|遇到相同问题的任何人都应删除此错误或查看冲突在哪里)

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.

3
在我的情况下,出现此错误是因为SDK管理器未安装32位二进制文​​件(emulator-arm和emulator-x86),但是默认情况下,模拟器程序仍在查找它们。删除并重新安装sdk工具并没有为我添加32个二进制文件。我可以通过从Terminal运行emulator64-arm -avd'avdname'来启动模拟器,但是我仍然无法获得Android Studio的AVD管理器来意识到它需要寻找64位二进制文​​件。Eclipse的AVD经理似乎要被罚款
CCJ

不管是我参加的emulator还是tools我参加的,PATH修复都不适合我-我必须-kernel根据此信息手动指定参数stackoverflow.com/a/52161215/3700490
Casey L

Answers:


363

如果您使用的是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进行了测试。


14
这是正确的答案,因为$ ANDROID_SDK / tools / emulator需要访问$ ANDROID_SDK / emulator /文件夹中的仿真器体系结构类型。
罗伯特·布里斯塔

9
如果您对某些情况感兴趣,我在这里写过有关此更改的信息 :)
stkent '18

2
同样的答案适用于Ubuntu 18.04 Bionic Beaver。
巴塞尔Shishani

真好 这也修复了一个错误:“您的模拟器已过时,请通过启动Android Studio进行更新”
Michael Bushe,

如果您使用Windows怎么办?
niico

88

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

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


2
我正在使用Android Studio 3.4.2,该解决方案也对我有用。
哈米特·埃内斯

58

以下启动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较新版本的文件夹中。


105
该仿真器已被移动出来tools,进入emulator目录。
rmtheis

15
正如@rmtheis所说,除了创建符号链接并试图欺骗系统之外,您还应该检查并在路径中添加正确的可执行文件。运行which emulator以检查实际选择了哪一个。 /Users/{$USER_NAME}/Library/Android/sdk/emulator/emulator是要使用的正确可执行文件。
Sameer Achanta

1
@Sameer-不确定您的建议是否可以解决我的解决方案中遇到的相同问题。我的解决方案有效地修复了SDK中的错误。IIRC,SDK安装确实已经配置了路径,但不幸的是错过了64位系统上的一些关键二进制文件。使用which将找不到正确的二进制文件,因为它最初不在路径中。我考虑了基于路径的解决方案,但是觉得符号链接解决方案更有可能在升级后幸存下来并成为独立的解决方案。另外,听起来好像SDK的创建者自2015年以来就搬了东西,但不确定我的解决方案是否适用。
Tongfa '18

12
对于CLI开发人员,将其全部更改/Users/amama/Library/Android/sdk/tools/emulator @PIXEL_2_XL/Users/amama/Library/Android/sdk/emulator/emulator @PIXEL_2_XL
Ray Foss,

5
@RayFoss的解决方案适用于Android 28-运行emulator/emulator.exe而不是tools/emulator
马克

46

导航到模拟器文件夹位于内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名称


27

对于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.

4
就我而言,它抛出PANIC: Missing emulator engine program for 'x86' CPU.了有效的AVD路径。如stackoverflow.com/a/51627009/2914140中所述,较新版本的仿真器使用emulator/emulatorpath,而我从开始tools/emulator
CoolMind

17

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

在此处输入图片说明

使用~/.profile或将其添加到PATH中,~/.bash_profile并确保$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'

这使我找到了Windows 10和Android Studio上的简单解决方案。由于某些未知的原因,未安装模拟器并且未检查Android模拟器。(尽管我上周使用过,也许是Android Studio的拙劣更新)。选中它,单击“应用”按钮,安装模拟器,一切都很好。
slogan621 '19

8

有两个命名的emulator二进制文件。在$SDK/tools/emulator另一个下$SDK/emulator/

  • 请确保您具有正确的模拟器配置(需要添加$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


就我而言,这是因为$ ANDROID_SDK / tools在$ ANDROID_SDK / emulator之前的路径中。
法国奥斯汀

5

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

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

4

在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发生了变化,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/



2

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

您是否更新了第一个输出?看起来“仿真器”仍在查找“ / usr / local / bin / emulator-x86”


我现在不在我的条目中修复它。如果有人遇到这种问题,我就把它
放在那里

2

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


3
删除Android SDK工具后-不要关闭SDK管理器。否则您将无法再次安装。回答不佳,没有警告。
Kiran 2014年

非常感谢,这解决了我在Windows 10 64位上的问题。我还按照@Kiran的建议,让我的sdk经理保持打开状态
BeeLabeille


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。


1
不管怎么说,还是要谢谢你!您使我向前迈了很多步:)。我将导出与库路径一起使用,并启动了模拟器。现在,他告诉我### emulator64-x86 -avd test20 | HAX正在运行,并且模拟器在快速环绕模式下运行 qemu:无法加载PC BIOS'bios.bin'###一个文件仍然丢失
Visores 2014年

1
好吧,如果我以完整路径运行模拟器,此问题将得到解决,为什么Oo?/ Applications / Android \ Studio.app/sdk/tools/emulator64-x86 -avd test20也许您知道如何解决此问题:D?
Visores 2014年

“ bios.bin”的问题已在此处解决:groups.google.com/forum
#!msg/adt

1
仿真器已从tools移入emulator
rmtheis

1

Avast Antivirus正在将emulator-arm.exe感知为线程,并由于某些原因被阻止。右键单击->“还原并添加到排除项”在Virus Chest页面中添加排除项时,以后的运行将无法解决。为了在Avast 2015中永久解决此问题:

设置->

主动保护->

文件系统防护->

自定义->

然后,排除项将线程添加为排除项。然后按确定。


1

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


1
非常重要的一点是要安装模拟器,然后从Android Studio启动它,以便模拟器首先引导android
哈里(Harry)

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

1

首先,检查你得到的路径which emulator,如果你/usr/local/share/android-sdk/tools/emulator再删除或重命名该仿真器(它是一个古老的一个),而使用/usr/local/share/android-sdk/emulator/emulator的新路径

如果您使用的是Homebrew并安装了该软件,brew cask install android-sdk android-studio则需要:

  1. 验证您的.bashrc或.zshrc是否设置了正确的路径:
# 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
  1. 然后重新启动终端外壳程序,并检查路径是否符合预期:

    set | grep ANDROID

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

    sdkmanager "ndk-bundle" "cmake;3.10.2.4988404" "lldb;3.1"

    并检查列表中是否有其他类似的内容 sdkmanager --list

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


1

我遇到了同样的问题,除了直到进入模拟器文件夹,我一直没有为我工作,我尝试导出模拟器文件夹,但对我来说不起作用

cd $android_home/emulator and run emulator

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

alias emulator="$ANDROID_HOME/emulator/emulator"

无需cd访问模拟器目录,$ANDROID_HOME/emulator只需将PATH 添加到PATH中即可
kopos

我试图将仿真器文件夹添加到该路径,但是没有用。
Mohannd

请确保在$ ANDROID_HOME / tools
kopos 19'May

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

我删除了链接,只是简单地解释了一下。谢谢
UA_

-1

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

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


我以为我有一个有效的下载。下载了两次,但我可以再试一次。
Visores 2014年

然后我再次尝试...相同的消息。我从sdk Manager中删除了所有已安装的软件,重新安装了它们,删除了所有avd映像,然后....但是它仍然不起作用:/在我的Windows 7 PC上,我只需要5min即可运行,但是在我的Mac上出了点问题:/
Visores 2014年

您可以从命令行手动启动吗,例如:$ SDK / tools / emulator @ <avd-name>如果不起作用,您可以尝试将ANDROID_EMULATOR_DEBUG定义为1,例如:export ANDROID_EMULATOR_DEBUG = 1 $ SDK / tools / emulator @ <avd-name> -verbose这应该打印有关程序尝试执行的信息(即找到引擎二进制文件)。请让我们知道输出。
2014年

当我运行模拟器-avd test20模拟器时:错误:此AVD的配置缺少内核文件!
Visores 2014年

1
将解释为什么它几天前起作用,我会尝试。
Visores

-3

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

解决方案:

  1. https://developer.android.com/tools/sdk再次下载adt-bundle
  2. 打开Zip文件。
  3. 从文件夹中复制丢失的.exe文件 \sdk\tools
  4. 将复制的文件粘贴到Android\sdk\tools目录中。
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.