无法在Android Studio中运行模拟器

Ted*_*tel 87 android android-emulator android-studio

我刚刚完成安装Android工作室并尝试将其用于测试运行.当我尝试运行我的应用程序时,我收到以下错误消息

emulator: ERROR: This AVD's configuration is missing a kernel file!!
emulator: ERROR: ANDROID_SDK_ROOT is undefined
Run Code Online (Sandbox Code Playgroud)

有谁知道如何解决这个问题????

tse*_*tse 25

您可能确实没有系统映像.仔细检查是否$ANDROID_HOME/system-images/android-<YOUR DESIRED API>/armeabi-v7a存在且不为空.如果它们确实丢失了 - 使用SDK管理器安装/重新安装.

  • 在 SDK 管理器中,确保选中“显示包详细信息”,以便您可以查看安装了哪些系统映像,如果没有,请安装它们 (4认同)
  • 我有两个问题:1:我找不到`$ ANDROID_HOME/system-images/android- <你想要的API>/armeabi-v7a`,2:如何使用SDK管理器重新安装虚拟设备 (2认同)

Har*_*ris 19

转到工具| Android | AVD经理

单击最右侧"操作"列下的箭头(其中显示错误消息)

选择编辑

保留默认选择(对我而言,MNC x86 Android M)

点击下一步

单击完成

它保存了您的AVD,现在错误从最后一列开始.而模拟器现在工作正常.


Asi*_*abi 13

刚修好了.希望这有助于其他人.(Android studio v2中的问题)此问题适用于arm模拟器.在这个例子中,我使用的是armeabi-v7a API 16

修复是三个步骤:

步骤1:打开sdk管理器并确保已安装ARM EABI v7a System Image

步骤2.这是将sdk的位置添加到系统变量的明显情况.

右键单击桌面上的"此PC"图标,然后

Properties -> Advanced system settings -> Environment Variables... 然后使用变量名称将sdk的路径添加为系统变量部分的新路径ANDROID_SDK_ROOT.

步骤3.重新启动Android Studio以进行注册更改.在纠正了ANDROID_SDK_ROOT未定义的问题之后,模拟器仍然无法找到内核文件,即使它可以看到sdk管理器将其安装到

path-to-sdk\sdk\system-images\android-16\default\armeabi-v7a\kernel-qemu

原因是sdk管理器安装内核文件的位置与模拟器正在寻找它的位置之间存在混淆.

如果您为模拟器打开config.ini(Android Studio - > AVD Mananger - >"Show On Disk"),您将看到以下行:

image.sysdir.1=add-ons\addon-google_apis-google-16\images\armeabi-v7a\

(即\ path-to-sdk\add-ons\addon -....)

而不是在我复制的config.ini文件中更改此值

path-to-sdk\sdk\system-images\android-16\default\armeabi-v7a\kernel-qemu

(安装了sdk manager文件夹的内核文件)

\path-to-sdk\add-ons\addon-google_apis-google-16\images\armeabi-v7a\

那是缺少的内核文件.您可以运行模拟器.(您需要关闭Android Studio并重新打开)给模拟器一些时间,因为它比x86慢10倍.(我花了大约5分钟开始)


小智 10

我通过运行"C:\ Program Files\Android\android-sdk\AVD Manager.exe"并修复我损坏的设备来修复它.


小智 5

嘿,刚刚遇到了与您相同的问题,谷歌中的第三个链接将我带到了引发错误的这段代码,

if (kernelFile == NULL) {
        kernelFile = avdInfo_getKernelPath(avd);
        if (kernelFile == NULL) {
            derror( "This AVD's configuration is missing a kernel file!!" );
            const char* sdkRootDir = getenv("ANDROID_SDK_ROOT");
            if (sdkRootDir) {
                derror( "ANDROID_SDK_ROOT is defined (%s) but cannot find kernel file in "
                        "%s" PATH_SEP "system-images" PATH_SEP
                        " sub directories", sdkRootDir, sdkRootDir);
            } else {
                derror( "ANDROID_SDK_ROOT is undefined");
            }
            exit(2);
Run Code Online (Sandbox Code Playgroud)

该人写道:

"/* 如果内核映像名称以 "-armv7" 结尾,则自动更改 cpu * 类型。这是一种穷人的配置 * 管理方法,但应该允许我们通过 dex preopt pass 构建 ARMv7 * 系统映像”

因此,我返回并下载了符合我所需 API 级别的 x86 intelatom 版本,并且能够在没有错误的情况下启动模拟器。希望对你也有帮助......


Lua*_*uan 5

简答:尝试使用旧学校创建相同的图像<AndroidSDK>\AVD Manager.exe.

在Android Studio中运行,运行所有集成工具,我很自然地不使用旧管理器(AVD/SDK).

在我的情况下,当使用新的(集成的)AVD管理器来创建具有旧系统映像的设备(API 11及以下,正如我已经测试过)时,我遇到了这个问题.

当我尝试使用旧学校的AVD Manager工具(位于<AndroidSDK>\AVD Manager.exe)创建这些旧设备图像时,我获得了成功.

  • 感谢您的建议 - 似乎独立工具知道如何为旧平台设置内容.在OS X/macOS上:`〜/ Library/Android/sdk/tools/android avd`. (2认同)