Android模拟器错误信息:“PANIC:缺少模拟器引擎程序'x86'cpu !”

我试图通过使用AVD管理器运行Android模拟器。 这是我的avd: http://image-upload.de/image/fnx79V/52b0d050ee.png < / p >

这就是开始时的情况:

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: could not load PC BIOS ' BIOS .bin'”出现时,一个修复方法是使用完整路径运行模拟器:

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

这条消息意味着' simulator -x86'或'emulator64-x86'程序从$SDK/tools/中丢失,或由于某种原因无法找到。

首先,你确定你有一个有效的SDK下载/安装?

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

你更新了第一个输出吗?看起来'emulator'仍然找到' /usr/local/bin/emulator-x86'

尝试以下方法启动模拟器-x86:

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

其中$SDK是SDK安装的路径。这就是“模拟器”试图做的事情。你可能想启动emulator64-x86而不是simulator -x86(如果前者存在的话)。

在Windows7 64bit上也有同样的问题。它没有的原因是sdk/tools下缺少emulator-x86.exe文件。通过使用Android SDK管理器删除Android SDK工具并重新安装来修复。该文件现在存在,模拟器按预期工作。

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

解决方案:

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

Avast Antivirus将emultor -arm.exe作为线程进行检测,并由于某些原因阻塞。当你在病毒箱页面用右键单击->“恢复并添加到排除项”添加排除项时,它在未来的运行中没有解决。在Avast 2015中永久解决这个问题:

设置- >

主动保护->

文件系统屏蔽-> . txt

自定义- >

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

下面是启动模拟器-x86的方法:

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

或者在Windows上打开命令提示符(Admin)

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

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

请注意:模拟器在最新版本中位于emulators文件夹中。

删除Android SDK Tools和Android SDK PLatform-tools;然后重新下载这两个包。现在,创建一个新的模拟器并启动它;它会起作用的。您可以运行旧的模拟器。

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

在我的例子中,顺序很重要,首先是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 < / p >

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

不要忘记添加@符号。

这是在macOS High Sierra 10.13.4和Android Studio 3.1.2上测试的。

这在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

Windows 10, 5.29.18:

使用命令提示符,我刚刚进入模拟器目录:

cd C:\Android\sdk\emulator

然后输入命令:

emulator -avd Nexus_S_API_27

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

否则会滥用:

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

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

简而言之,从sdk/emulator文件夹运行模拟器

导航到位于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名称

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

  • 请确保你有正确的模拟器配置(需要添加$SDK/emulator到你的env路径

我写了一个脚本来帮助我调用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




在Mac上安装Android Studio IDE android-studio-ide-173.4907809-mac.dmg并使用Studio SDK管理器安装SDK工具

enter image description here

使用~/.profile~/.bash_profile添加到你的PATH中,并确保你的$PATH中有$ANDROID_HOME/emulator$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'

在将Android Studio升级到3.2,甚至升级了一些SDK-Packages后,我遇到了这个问题。

原因是模拟器的路径已经改变,所以不要使用...../Android/Sdk/tools/emulator,而是使用....../Android/Sdk/emulator/emulator

在WINDOWS上——更新系统路径对我来说很有用。为sdk的位置创建一个名为ANDROID_SDK的环境变量,然后将这些变量添加到你的路径中,顺序如下:

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

首先,检查你用which emulator得到的路径,如果你得到/usr/local/share/android-sdk/tools/emulator,然后删除或重命名该模拟器(它是一个旧的模拟器),而是使用/usr/local/share/android-sdk/emulator/emulator,即新路径

如果你正在使用家酿并安装了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. 然后重新启动你的终端shell,检查你的路径是否如你所期望的那样:

    set | grep ANDROID < / p >

  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

在我的情况下,我需要从Sdk管理器安装Android模拟器,它得到了修复

enter image description here

我遇到了同样的问题,从来没有为我工作,除非去到模拟器文件夹,我尝试导出模拟器文件夹,但不为我工作

cd $android_home/emulator and run emulator

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

alias emulator="$ANDROID_HOME/emulator/emulator"

对于Ubuntu用户

如果你正在得到PANIC:缺少'x86' CPU的模拟器引擎程序。 此错误

尝试从SDK中的模拟器文件夹中启动模拟器,就像上面那样

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

在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最新版本的转变有关,其中模拟器 App位于/emulator而不是/tools。把这个留在这里 Case也会遇到同样的问题

我们需要使用如下:

{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
< p >参考: https://www.reddit.com/r/androiddev/comments/a978kx/mac_can_run_emulator_fine_through_android_studio/ < / p >

在OSX / MacOS上为我工作的示例(替换设备名称)

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

点击下面的命令。这对我很管用。Android已经将模拟器目录从/工具更改为sdk /模拟器

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

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

  1. < p > 终端开放

  2. < p >类型: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. 保存(命中命令+ 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

简单地按照以下步骤具体到mac:

    <李> < p >去: /Users/{username}/Library/Android/sdk/emulator < / p >
  1. < p > ./emulator -list-avds

  2. < p > ./emulator @avdName

在我的例子中,通过执行which emulator,它返回$ANDROID_HOME/tools/emulator 但它应该是$ANDROID_HOME/emulator/emulator

所以我只是在PATH变量的$ANDROID_HOME/tools之前添加了$ANDROID_HOME/emulator,现在它工作正常了

添加最低安卓版本的虚拟设备对我来说是可行的。(在此之前,我尝试了几个最近的Android版本,并一直得到Missing emulator engine program for 'x86_64' CPUS错误。)

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

这个问题源于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”后;(在尝试重新安装它们时),该条目意外地从列表中消失,留下一个空的tools目录,该目录可以从PATH中删除和删除。

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


作为比较,版本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系统映像,然后创建一个新的模拟器。

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

settings

最新的Android Studio路径已经改变。

使用下面的路径来定位模拟器

cd /Users/<username>/Library/Android/sdk/emulator

然后执行这个命令

./emulator -avd Pixel_2_XL_API_28

我的模拟器名称是“Pixel 2 XL API 28”;

享受吧!