Не удается запустить эмулятор в Android Studio


97

Я только что закончил установку Android-студии и пытался протестировать ее. Когда я пытаюсь запустить свое приложение, я получаю следующее сообщение об ошибке

emulator: ERROR: This AVD's configuration is missing a kernel file!!
emulator: ERROR: ANDROID_SDK_ROOT is undefined

Кто-нибудь знает, как это исправить ????


1
Посмотрите этот ответ stackoverflow.com/questions/9712605/…
Psypher,

@ Тед Поттель, ответил ли на ваш вопрос какой-либо из ответов ниже? Если да, пожалуйста, нажмите на галочку рядом с ним.
Харрис

Ответы:


27

Возможно, у вас действительно нет образов системы. Еще раз проверьте, что $ANDROID_HOME/system-images/android-<YOUR DESIRED API>/armeabi-v7aсуществует и не пусто. Если они действительно отсутствуют - установите / переустановите с помощью диспетчера SDK.


2
У меня две проблемы: 1: не могу найти $ANDROID_HOME/system-images/android-<YOUR DESIRED API>/armeabi-v7a, 2: как переустановить виртуальное устройство с помощью диспетчера SDK
Муса Хайдари

Однако, прочитав ваш ответ, я мог найти обходной путь, а именно создать новое виртуальное устройство, и проблема не возникла для нового
Муса Хайдари

4
В диспетчере SDK убедитесь, что вы отметили «Показать сведения о пакете», чтобы увидеть, какие системные образы установлены, а если нет, установите их
Мартин Дэвис,

21

Перейдите в Инструменты | Android | AVD Manager

Щелкните стрелку под столбцом Действия справа (где находится сообщение об ошибке)

Выберите Edit

Оставьте выбор по умолчанию (для меня MNC x86 Android M)

Нажмите кнопку "Далее

Нажмите Готово

Это сохраняет ваш AVD, и ошибка теперь исчезла из последнего столбца. И эмулятор теперь работает нормально.


15

Просто исправил это. Надеюсь, это поможет другим. (Проблема, как в Android Studio v2) Эта проблема касается эмуляторов руки. В этом примере я использую armeabi-v7a API 16

Исправление состоит из трех шагов:

Шаг 1. Откройте диспетчер SDK и убедитесь, что вы установили образ системы ARM EABI v7a.

Шаг 2. Это очевидный случай добавления местоположения sdk к системным переменным.

Щелкните правой кнопкой мыши значок «Этот компьютер» на рабочем столе, затем

Properties -> Advanced system settings -> Environment Variables... Затем добавьте путь к sdk как новый в раздел системных переменных, используя имя переменной ANDROID_SDK_ROOT.

Шаг 3. Перезапустите Android Studio, чтобы внести изменения. После исправления ANDROID_SDK_ROOTошибки undefined эмулятор по-прежнему не может найти файлы ядра, хотя и видит, что диспетчер sdk установил его в

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

Причина заключается в путанице между местоположением, в которое диспетчер sdk устанавливает файл ядра, и местоположением, которое эмулятор ищет.

Если вы откроете файл config.ini (Android Studio -> AVD Mananger -> «Показать на диске») для своего эмулятора, вы увидите следующую строку:

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

(т.е. \ путь-к-SDK \ дополнения \ аддон -....)

Вместо того, чтобы изменять это значение в файле 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 и снова открыть) Дайте эмулятору время, так как он в 10 раз медленнее по сравнению с x86. (У меня на запуск ушло около 5 минут)


А где "config.ini для вашего эмулятора"?
Джей

Android Studio -> AVD Mananger -> «Показать на диске». Редактируем ответ.
Аси Муграби

Это ответ, который на самом деле image.sysdir.1=system-images\android-16\default\armeabi-v7a
помог

Это помогло мне в эмуляторе Nexus 4. Пришлось обновить image.sysdir.1до `system-images \ android-15 \ google_apis \ armeabi-v7a`
веточка

10

Я исправил это, запустив «C: \ Program Files \ Android \ android-sdk \ AVD Manager.exe» и починив сломанное устройство.


5

Короткий ответ : попробуйте создать такой же образ с помощью старой школы <AndroidSDK>\AVD Manager.exe.

Работая в Android Studio, работая со всеми интегрированными инструментами, для меня стало естественным не использовать старые менеджеры (AVD / SDK).

В моем случае эта проблема возникла при использовании нового (интегрированного) AVD Manager для создания устройств со старыми образами системы (API 11 и ниже, как я тестировал).

Когда я попытался использовать старый школьный инструмент AVD Manager (расположенный внутри <AndroidSDK>\AVD Manager.exe) для создания этих старых образов устройств, я добился успеха.


2
Спасибо за предложение - похоже, что автономный инструмент знает, как настроить вещи для старых платформ. На OS X / MacOS: ~/Library/Android/sdk/tools/android avd.
neuralmer

4

Привет, я столкнулся с той же проблемой, что и вы, третья ссылка в Google привела меня к этому фрагменту кода, который вызывает ошибку,

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);

на что человек написал:

"/ * Если имя образа ядра заканчивается на" -armv7 ", то автоматически меняет тип процессора *. Это плохой подход к управлению * конфигурацией, но он должен позволить нам обойтись без сборки системных образов ARMv7 * с проходом dex preopt "

Итак, я вернулся и загрузил версию Intel Atom для x86 для желаемого уровня API и смог запустить эмулятор без ошибок. Надеюсь, это тоже поможет ...


2

Обычно ошибка возникает из-за неподходящего эмулятора AVD для типа приложения, для которого вы разрабатываете. Например, если вы разрабатываете приложение для носимого устройства, но пытаетесь использовать эмулятор телефона для его запуска.


2

У меня была такая же ошибка. Решением для меня было изменение пути ANDROID_HOME . Сначала я заглянул в tools-> android-> sdk manager из Android Studio. В этом окне мы видим путь, по которому Android Studio ищет SDK: image

Затем я открыл оболочку Windows CMD, выполнил:

echo %ANDROID_HOME%

но путь отличался от пути в КОНФИГУРАЦИИ ANDROID STUDIO первого шага.

Решением было изменить пользовательскую среду, ANDROID_HOME, на одну из первых шагов: image

Наконец, я закрыл оболочку cmd и открыл другую оболочку cmd для выполнения:

echo %ANDROID_HOME%

путь был обновлен, и я смог отлично запустить свой эмулятор.


1

В моем случае (Windows 10) причина заключалась в том, что я осмелился распаковать android sdk в папку, отличную от папки по умолчанию. Когда я переместил его на значение по умолчанию c: / Users / [имя пользователя] / AppData / Local / Android / Sdk и изменил пути в Android Studio и системных переменных, он начал работать.


1
  • Откройте студию Android.
  • Перейдите в настройки> Системные настройки> Android SDK
  • Получите «Местоположение Android SDK».
  • Установите это значение для переменной среды ANDROID_SDK_ROOT.

Это сработало для меня, и я использую Windows 10 и Android Studio 2.3.3


1
  1. Перейдите в «Редактировать переменные системной среды».
  2. Нажмите кнопку «Создать» и введите «ANDROID_SDK_ROOT» в имя переменной и введите полный путь к android sdk в значении переменной. Нажмите ОК и закройте.
  3. Обновите AVD.
  4. Это устранит ошибку.

-1

Общий подход к решению этой проблемы.

1.ПРОВЕРЬТЕ свой менеджер SDK, запустив его из своей студии Android, и выделите папку sdk, выполнив ./android.sh, чтобы найти сломанные пакеты

  1. Попробуйте установить образы системного эмулятора с поддержкой API Google, а не Intel. Точно так же я решил свою проблему, запустив другой образ системы.

  2. Эксперимент по виртуализации на основе KVM, предложенный Google для Linux

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.