我正在尝试运行我在Galaxy Nexus上为API 16创建的AVD:
emulator @Galaxy_Nexus_Jelly_Bean_API_16
这给出了错误
PANIC:缺少'arm'CPU的仿真器引擎程序。
尝试通过按下Android Studio内部AVD Manager的播放按钮启动它会在工具库中暂时弹出一些内容,但它会很快消失,没有任何显示,也没有明显的错误消息。
我查看了其他类似问题的帖子。大多数人都认为Windows上的Avast导致了这个问题。我在Mac上运行。我没有安装Avast。
AVD具有以下配置:
Name: Galaxy_Nexus_Jelly_Bean_API_16
CPU/ABI: Google APIs ARM (armeabi-v7a)
Path: /Users/prisoner/.android/avd/Galaxy_Nexus_API_16.avd
Target: google_apis [Google APIs] (API level 16)
Skin: galaxy_nexus
SD Card: 100 MB
hw.dPad: no
hw.lcd.height: 1280
runtime.network.speed: full
hw.accelerometer: yes
hw.device.name: Galaxy Nexus
vm.heapSize: 80
skin.dynamic: yes
hw.device.manufacturer: Google
hw.lcd.width: 720
hw.gps: yes
hw.initialOrientation: Portrait
image.androidVersion.api: 16
hw.audioInput: yes
image.sysdir.1: add-ons/addon-google_apis-google-16/images/armeabi-v7a/
hw.cpu.model: cortex-a8
tag.id: google_apis
showDeviceFrame: yes
hw.camera.back: virtualscene
hw.mainKeys: no
AvdId: Galaxy_Nexus_Jelly_Bean_API_16
hw.camera.front: emulated
hw.lcd.density: 320
avd.ini.displayname: Galaxy Nexus Jelly Bean API 16
hw.arc: false
hw.gpu.mode: auto
hw.device.hash2: MD5:5c288d27461585ecc73a535555e7cf61
hw.ramSize: 1024
hw.trackBall: no
PlayStore.enabled: false
fastboot.forceColdBoot: no
hw.battery: yes
hw.cpu.ncore: 4
hw.sdCard: no
tag.display: Google APIs
runtime.network.latency: none
hw.keyboard: yes
hw.sensors.proximity: yes
disk.dataPartition.size: 800M
hw.sensors.orientation: yes
avd.ini.encoding: UTF-8
hw.gpu.enabled: yes
Android Studio环境:
Android Studio 3.1.4
Build #AI-173.4907809, built on July 23, 2018
JRE: 1.8.0_152-release-1024-b01 x86_64
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
Mac OS X 10.12.6
我已经为SDK Manager中提供的此版本SDK安装了所有内容:
我安装了最新版本的模拟器。我已经尝试卸载并重新安装它。
ANDROID_HOME
环境变量似乎已正确设置(它与SDK Manager中的Android SDK location
匹配.emulator
程序似乎也是此家庭环境下的程序:
Mulan:~ prisoner$ echo $ANDROID_HOME /Users/prisoner/Library/Android/sdk Mulan:~ prisoner$ which emulator /Users/prisoner/Library/Android/sdk/tools/emulator
据我所知,模拟器和体系结构特定的模拟器也在ANDROID_HOME
下:
我不知道在哪里可以查看错误消息或那里的模拟器,但系统无法找到,或者如何解决问题。
更新1:显式指定路径。
尝试明确指定路径也不起作用:
Mulan:~ prisoner$ /Users/prisoner/Library/Android/sdk/tools/emulator @Galaxy_Nexus_Jelly_Bean_API_16 PANIC: Missing emulator engine program for 'arm' CPU. Mulan:~ prisoner$ /Users/prisoner/Library/Android/sdk/emulator/emulator @Galaxy_Nexus_Jelly_Bean_API_16 emulator: ERROR: This AVD's configuration is missing a kernel file! Please ensure the file "kernel-qemu" is in the same location as your system image. emulator: ERROR: ANDROID_SDK_ROOT is undefined
果然,ANDROID_SDK_ROOT
没有定义。将它定义为与ANDROID_HOME
相同的内容执行以下操作:
Mulan:~ prisoner$ export ANDROID_SDK_ROOT="$ANDROID_HOME" Mulan:~ prisoner$ /Users/prisoner/Library/Android/sdk/emulator/emulator @Galaxy_Nexus_Jelly_Bean_API_16 emulator: ERROR: This AVD's configuration is missing a kernel file! Please ensure the file "kernel-qemu" is in the same location as your system image. emulator: ERROR: ANDROID_SDK_ROOT is defined (/Users/prisoner/Library/Android/sdk) but cannot find kernel file in /Users/prisoner/Library/Android/sdk/system-images/ sub directories
在system-images
目录下面,我们看到每个API平台的目录:
Mulan:~ prisoner$ ls ~/Library/Android/sdk/system-images/ android-16 android-19 android-23 android-26 android-17 android-21 android-24 android-27 android-18 android-22 android-25 android-28
看看android-16
目录下,我们有
./default ./default/armeabi-v7a ./default/armeabi-v7a/build.prop ./default/armeabi-v7a/kernel-qemu ./default/armeabi-v7a/NOTICE.txt ./default/armeabi-v7a/package.xml ./default/armeabi-v7a/ramdisk.img ./default/armeabi-v7a/source.properties ./default/armeabi-v7a/system.img ./default/armeabi-v7a/userdata.img ./default/mips ./default/mips/build.prop ./default/mips/kernel-qemu ./default/mips/NOTICE.txt ./default/mips/package.xml ./default/mips/ramdisk.img ./default/mips/source.properties ./default/mips/system.img ./default/mips/userdata.img ./default/x86 ./default/x86/build.prop ./default/x86/kernel-qemu ./default/x86/kernel-ranchu ./default/x86/NOTICE.txt ./default/x86/package.xml ./default/x86/ramdisk.img ./default/x86/source.properties ./default/x86/system.img ./default/x86/userdata.img ./google_apis ./google_apis/x86 ./google_apis/x86/advancedFeatures.ini ./google_apis/x86/build.prop ./google_apis/x86/kernel-qemu ./google_apis/x86/kernel-ranchu ./google_apis/x86/NOTICE.txt ./google_apis/x86/package.xml ./google_apis/x86/ramdisk.img ./google_apis/x86/source.properties ./google_apis/x86/system.img ./google_apis/x86/userdata.img
只是在我的Mac上尝试并验证,要解决此问题,您需要手动指定-kernel
路径。即
$ ~/Library/Android/sdk/emulator/emulator @Galaxy_Nexus_Jelly_Bean_API_16 -kernel ~/Library/Android/sdk/system-images/android-16/default/armeabi-v7a/kernel-qemu
一些参考资料:
---编辑---
为避免每次都输入-kernel
参数,您还可以将~/Library/Android/sdk/system-images/android-16/default/armeabi-v7a/kernel-qemu
文件复制到~/Library/Android/sdk/add-ons/addon-google_apis-google-16/images/armeabi-v7a
。
也许这是模拟器工具路径问题。尝试指定模拟器路径的完整路径。
试试这里的答案。 Windows emulator.exe PANIC: Missing emulator engine program for 'x86' CPU