No se puede ejecutar el emulador en Android Studio

96

Acabo de terminar de instalar Android Studio e intentar probarlo. Cuando intento ejecutar mi aplicación, aparece el siguiente mensaje de error

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

¿¿¿¿Sabe alguien cómo arreglar esto????

Ted pottel
fuente
1
Consulte esta respuesta stackoverflow.com/questions/9712605/…
Psypher
@Ted pottel, ¿alguna de las siguientes respuestas respondió a su pregunta? Si es así, haga clic en la marca de verificación junto a él.
Harris

Respuestas:

27

Es posible que realmente no tenga imágenes del sistema. Verifique que $ANDROID_HOME/system-images/android-<YOUR DESIRED API>/armeabi-v7aexista y que no esté vacío. Si realmente faltan, instale / reinstale con SDK Manager.

tse
fuente
2
Tengo dos problemas: 1: No puedo encontrar $ANDROID_HOME/system-images/android-<YOUR DESIRED API>/armeabi-v7a, 2: Cómo reinstalar un dispositivo virtual usando SDK Manager
Musa Haidari
Sin embargo, al leer su respuesta, pude hacer una solución alternativa, y fue crear un nuevo dispositivo virtual y el problema no ocurrió para el nuevo
Musa Haidari
4
Dentro del SDK Manager, asegúrese de marcar "Mostrar detalles del paquete" para que pueda ver qué imágenes del sistema están instaladas y, de no ser así, instálelas
Martyn Davis
21

Vaya a Herramientas | Android | Gerente de AVD

Haga clic en la flecha debajo de la columna Acciones en el extremo derecho (donde está el mensaje de error)

Elija Editar

Deje la selección predeterminada (para mí, MNC x86 Android M)

Haga clic en Siguiente

Haga clic en Finalizar

Guarda su AVD y el error ha desaparecido de la última columna. Y el emulador funciona bien ahora.

Harris
fuente
15

Solo arreglé esto. Espero que esto ayude a otros. (Problema como en Android Studio v2) Este problema es para emuladores de brazo. En este ejemplo, estoy usando armeabi-v7a API 16

La solución es de tres pasos:

Paso 1: Abra sdk manager y asegúrese de haber instalado ARM EABI v7a System Image

Paso 2. Este es el caso obvio de agregar la ubicación de sdk a las variables del sistema.

Haga clic derecho en el icono "Esta PC" en el escritorio, luego

Properties -> Advanced system settings -> Environment Variables... Luego agregue la ruta a sdk como nueva en la sección de variables del sistema usando el nombre de la variable ANDROID_SDK_ROOT.

Paso 3. Reinicie Android Studio para registrar los cambios. Después de corregir el ANDROID_SDK_ROOTproblema no definido, el emulador aún no puede encontrar los archivos del kernel a pesar de que puede ver que el administrador sdk lo instaló en

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

La razón es una confusión entre la ubicación en la que sdk manager instala el archivo del kernel y la ubicación que el emulador está buscando.

Si abre su config.ini (Android Studio -> AVD Mananger -> "Show On Disk") para su emulador, verá la siguiente línea:

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

(es decir, \ ruta-a-sdk \ complementos \ complemento -....)

En lugar de cambiar este valor en el archivo config.ini que copié

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

(archivo de kernel de la carpeta sdk manager instalado)

a

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

Y ese era el archivo del kernel que faltaba. Puede ejecutar el emulador. (Deberá cerrar Android Studio y volver a abrirlo) Dale algo de tiempo al emulador, ya que es 10 veces más lento en comparación con x86. (El mío tardó unos 5 minutos en comenzar)

Asi Mugrabi
fuente
Uh, ¿dónde está el 'config.ini para su emulador'?
Jay
Android Studio -> AVD Mananger -> "Mostrar en disco". Editando la respuesta.
Asi Mugrabi
Esta es la respuesta que realmente funcionó para mí, en mi caso, esta fue mi línea editada:image.sysdir.1=system-images\android-16\default\armeabi-v7a
yvesmancera
Esto me sirvió para el emulador de Nexus 4. Tuvo que la actualización image.sysdir.1a `system-imágenes \ android-15 \ google_apis \ armeabi-v7a`
ramita
10

Lo solucioné ejecutando "C: \ Archivos de programa \ Android \ android-sdk \ AVD Manager.exe" y reparando mi dispositivo roto.

airo
fuente
5

Respuesta corta : intente crear la misma imagen usando la vieja escuela <AndroidSDK>\AVD Manager.exe.

Trabajando en Android Studio, ejecutando todas las herramientas integradas, me resultó natural no usar los antiguos administradores (AVD / SDK).

En mi caso, tuve este problema cuando usé el nuevo AVD Manager (integrado) para crear dispositivos con imágenes de sistema antiguas (API 11 e inferior, como he probado).

Cuando intenté utilizar la herramienta AVD Manager de la vieja escuela (ubicada en <AndroidSDK>\AVD Manager.exe) para crear estas imágenes de dispositivos antiguos, tuve éxito.

Luan
fuente
2
Gracias por la sugerencia, parece que la herramienta independiente sabe cómo configurar las cosas para las plataformas más antiguas. En OS X / macOS: ~/Library/Android/sdk/tools/android avd.
neuralmer
4

Oye, acabo de encontrar el mismo problema que tu, el tercer enlace en Google me llevó a este fragmento de código que arroja el error,

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

a lo que la persona escribió:

"/ * Si el nombre de la imagen del kernel termina en" -armv7 ", entonces cambia el tipo de cpu * automáticamente. Este es un enfoque pobre para la gestión de la configuración *, pero debería permitirnos superar la construcción de imágenes del sistema ARMv7 * con dex preopt pass "

Así que volví y descargué la versión x86 intel atom para mi nivel de API deseado y pude activar el emulador sin el error. Espero que también te ayude ...

Brandon
fuente
2

Normalmente, el error se producirá debido a un emulador AVD inadecuado para el tipo de aplicación para la que está desarrollando. Por ejemplo, si está desarrollando una aplicación para un dispositivo portátil pero está intentando usar un emulador de teléfono para ejecutarlo.

M Muli
fuente
2

Yo tenía el mismo error. La solución para mí fue cambiar la ruta ANDROID_HOME . Primero eché un vistazo a herramientas-> android-> administrador sdk de Android Studio. En esa ventana, podemos ver la ruta donde Android Studio busca el SDK: imagen

Luego abrí un shell CMD de Windows, ejecuté:

echo %ANDROID_HOME%

pero el camino era diferente al de la CONFIGURACIÓN DE ANDROID STUDIO del primer paso.

La solución fue cambiar el entorno de usuario, el ANDROID_HOME, al del primer paso: imagen

Finalmente cerré el shell cmd y abrí otro shell cmd para ejecutar:

echo %ANDROID_HOME%

la ruta se actualizó y pude ejecutar mi emulador perfectamente.

Héctor Pasarin
fuente
1

En mi caso (Windows 10), la razón fue que me atreví a descomprimir el sdk de Android en una carpeta no predeterminada. Cuando lo moví al predeterminado c: / Users / [username] / AppData / Local / Android / Sdk y cambié las rutas en Android Studio y System Variables, comenzó a funcionar.

Lukas Hanacek
fuente
1
  • Abra el estudio de Android.
  • Vaya a configuración> Configuración del sistema> SDK de Android
  • Obtén la "Ubicación del SDK de Android".
  • Establezca la variable de entorno ANDROID_SDK_ROOT en este valor.

Me funcionó y estoy en Windows 10 y Android Studio 2.3.3

3lokh
fuente
1
  1. Vaya a "Editar las variables del entorno del sistema".
  2. Haga clic en el botón Nuevo e ingrese "ANDROID_SDK_ROOT" en el nombre de la variable e ingrese la ruta completa de Android SDK en el valor de la variable. Haga clic en Aceptar y cierre.
  3. Actualizar AVD.
  4. Esto resolverá el error.
Ritika Ranjan
fuente
-1

Un enfoque común a seguir para resolver este problema.

1.COMPRUEBE su administrador de SDK ejecutando desde su estudio de Android y la carpeta sdk de pie alons ejecutando le ./android.shayuda a encontrar paquetes rotos

  1. Intente instalar imágenes del emulador del sistema con soporte de API de Google que el de Intel. Al igual que, resolví mi problema al ejecutar otra imagen del sistema.

  2. Experimento de virtualización basado en KVM sugerido por Google para Linux

Daniel Adenew
fuente