¿Cómo inicio el emulador de Android desde la línea de comandos?

373

Estoy en Mac, trabajando en el desarrollo de Android desde la terminal. He creado con éxito el proyecto HelloWorld y ahora estoy tratando de ejecutarlo desde la línea de comandos en el emulador de Android. ¿Qué comando ejecuta el emulador para mi proyecto HelloWorld?

Ya tengo las herramientas de Android y las herramientas de plataforma en mi RUTA.

Editar:

¿Cómo le digo al emulador que ejecute mi proyecto HelloWorld desde la línea de comandos? Ya he construido el proyecto con hormiga.

Thierry Lam
fuente
Documentos relevantes: crear con avdmanagery lanzar con emulator.
jchook

Respuestas:

380

Supongo que ha creado su proyecto y solo necesita iniciarlo, pero no tiene ningún AVD creado y tiene que usar la línea de comando para todas las acciones. Tienes que hacer lo siguiente.

  1. Cree un nuevo dispositivo virtual (AVD) para la plataforma que necesita. Si tiene que usar la línea de comando para crear su AVD, puede llamar a android create avd -n <name> -t <targetID>donde targetID es el nivel de API que necesita. Si puede usar la GUI, simplemente escriba android avdy se abrirá el administrador, donde puede hacer lo mismo. Puede leer más sobre la administración de AVD a través de la GUI y la línea de comandos .
  2. Ejecute el AVD mediante el comando emulator -avd <name>o mediante la GUI iniciada anteriormente. Espere hasta que el emulador se cargue completamente, lleva un tiempo. Puede leer sobre opciones adicionales aquí .
  3. Ahora debe instalar la aplicación en su AVD. Por lo general, durante el desarrollo solo usa el mismo script Ant que usó para construir el proyecto, solo seleccione el installdestino. Sin embargo, puede instalar la aplicación manualmente usando el comando adb install <path-to-your-APK>.
  4. Ahora cambie al emulador e inicie su aplicación como en cualquier dispositivo normal, a través del iniciador. O, como alternativa, puede utilizar el siguiente comando: adb shell am start -a android.intent.action.MAIN -n <package>/<activity class>. Por ejemplo: adb shell am start -a android.intent.action.MAIN -n org.sample.helloworld/org.sample.helloworld.HelloWorld. Como sugirió un comentarista, también puede reemplazar org.sample.helloworld.HelloWorlden la línea anterior con solo .HelloWorld, y también funcionará.
Malcolm
fuente
1
Su lista de 4 puntos es lo que estoy buscando. Cuando corro adb install <path-to-your-APK>, consigo error: device not found. Si ejecuto el emulador en un shell y el comando de instalación adb en otro, obtengo error: device offline. ¿Cómo configuro un dispositivo virtual emulado?
Thierry Lam
3
OK, trajo información de la versión anterior de la respuesta. :) Si recibe el mensaje de que el dispositivo está fuera de línea, creo que simplemente no ha dejado que se cargue el sistema. Es inútil intentar enviar comandos al emulador cuando muestra el logotipo de Android, debe esperar hasta que muestre la pantalla de bloqueo. Y tiene razón en que tiene que usar otra instancia de shell para enviar comandos a su dispositivo. Por cierto, puede verificar el estado actual de los dispositivos mediante el adb devicescomando.
Malcolm
1
@ThomasW Gracias, he agregado esta información a la respuesta.
Malcolm
1
@ L2G Si ejecuta esto como un script, entonces sí, puede hacerlo. Cuando escribí la respuesta, asumí que hacías todo a mano, en cuyo caso, por supuesto, puedes esperar tú mismo.
Malcolm
44
reinicie adb-server: adb kill-server; adb start-serversi no aparece nadaadb devices
evandrix
278

Lista todos tus emuladores:

emulator -list-avds

Ejecute uno de los emuladores enumerados con -avdbandera:

emulator -avd @name-of-your-emulator

donde emulatorestá debajo:

${ANDROID_SDK}/tools/emulator
azibi
fuente
2
Si ejecuta desde un terminal de Linux, debe cdingresar a la carpeta $ ANDROID_SDK / tools o no funcionará.
shimatai
44
¡Gracias! Si usa emulatormás a menudo, ¿por qué no crea un alias: nano ~/.bashrc> agregar alias emulator='$ANDROID_HOME/tools/emulator', guardar . ~/bashrcy listo? (reemplace ANDROID_HOMEcon la variable correcta utilizada o la ruta estática a la carpeta de Android).
Samuel Elh
3
Si se genera el siguiente error: ERROR: ./ android / qt / qt_setup.cpp: 28: la biblioteca Qt no se encuentra en ../emulator/lib64/qt/lib, iniciar el emulador desde $ ANDROID_HOME / tools es una solución alternativa. github.com/decosoftware/deco-ide/issues/289
tebanep
Si realmente no navegas a la toolscarpeta, realmente no funcionará. Tengo error PANIC: Missing emulator engine program for 'x86' CPU.. (Estoy en Linux, OpenSUSE). Después de que navegué toolsy luego simplemente corrí emulator -avd "{name}", funcionó.
pesho hristov
100

Creo que la mejor manera de llegar a través de la terminal es:

cd ~/Library/Android/sdk/tools

Para ejecutar un determinado AVD directamente:

./emulator -avd {AVD_NAME}

Para enumerar sus AVD use:

./emulator -list-avds
Ali Sao
fuente
¿Cuál es el camino para Windows?
qwertzguy
99
Ah lo encontré: C: \ Users \ <user> \ AppData \ Local \ Android \ sdk \ emulator
qwertzguy
1
solo uno que funcionó para mí, gracias, pero de todos modos hay que agregarlo a su camino o hacer algo raro cada vez que es una molestia
John D
Lo que dijo @JohnD: ¿cómo incluiría ./como parte del emulatorcomando en una ruta / alias?
DaveNOTDavid
En Linux el camino para mí es ~/Android/Sdk/emulator.
Tyler Collier
26

Solo para agregar aquí, cada vez que aparece "error: dispositivo fuera de línea" significa que la conexión con el emulador y el puente adb se ha interrumpido debido al tiempo empleado en el inicio del emulador.

En lugar de reiniciar el emulador en este punto, intente debajo de dos comandos que se detienen y comience adb bridge nuevamente.

adb kill-server

servidor de inicio adb

ABDroids
fuente
En Windows, es posible que también necesite eliminar la tarea adb.exe con el Administrador de tareas.
Carl
25

Aquí puede verificar las opciones para ejecutar este comando a través de la línea de comandos:

emulator -avd avd_name [-option [value]] ... [-qemu args]

Por ejemplo, lo uso así a continuación:

emulator -avd ICS_ARM -wipe-data -no-boot-anim -cpu-delay 0
germangti
fuente
Hola germangti, tengo el mismo problema. Estoy obteniendo "ABI válidos: no ABI. Error: Inválido --abi x86 para el objetivo seleccionado". ¿Cómo ha solucionado el problema?
Muneer Muhammed
15

CMD abierto

  1. Abrir símbolo del sistema
  2. escriba la ruta del emulador en mi caso

C: \ adt-bundle-windows-x86_64-20140702 \ sdk \ tools ingrese la descripción de la imagen aquí

  1. escriba "emulator -avd emulatorname" en mi caso

emulador -avd AdilVD

ingrese la descripción de la imagen aquí

Adiii
fuente
13

Si está intentando ejecutar estrictamente el emulador desde la línea de comandos, intente esto en OSX.

"/Applications/Android Studio.app/sdk/tools/emulator" -avd <NAMEOFDEVICE> -netspeed full -netdelay none

Puede simplificarlo agregando un alias al .bash_profile y enviándolo a un trabajo en segundo plano.

alias android='/Applications/Android\ Studio.app/sdk/tools/emulator <NAMEOFDEVICE> -netspeed full -netdelay none &'

Deje que Bash sepa sobre los cambios.

source ~/.bash_profile
Almiar
fuente
zsh: no existe tal archivo o directorio: NAMEOFDEVICE
Ben Sinclair
2
@Andy, se supone que debes reemplazarlo NAMEOFDEVICEcon el nombre real del emulador. haz una emulator -list-avdspara obtener una lista de los avds que tienes en tu sistema.
nabn
9

Abra el símbolo del sistema y vaya a <android-Home>\sdk\tools>emulator -avd <AVD_NAME>

Aquí "emulator"está el comando utilizado para abrir su dispositivo virtual Android .

Chandra Shekhar
fuente
9

Si tiene Git Bash, puede abrir su emulador con un doble clic, con alguna configuración inicial (probado solo en Windows 10) :

  1. Abre Git Bash.
  2. correr cd ~/AppData/Local/Android/sdk/emulator
  3. Ejecute ./emulator -list-avdsy tome nota del nombre del emulador. MY_EMULATORpor ejemplo.
  4. Abra el Bloc de notas y agregue estas dos líneas (inserte el nombre de su emulador en lugar de MY_EMULATOR):

    cd ~/AppData/Local/Android/sdk/emulator; ./emulator -avd MY_EMULATOR

  5. Guarde el archivo en algún lugar conveniente como myfile. sh . Puede cambiar "myfile" como más le convenga, pero se necesita la extensión .sh .

  6. Abra Git Bash en el directorio donde almacenó myfile.sh y ejecútelo chmod +x myfile.sh. Recuerde poner el nombre de su archivo en lugar de myfile .

¡Y eso es! A partir de ahora, cada vez que necesite iniciar ese emulador, simplemente ubique myfile.sh y haga doble clic en él y espere a que se inicie su emulador de Android.

romin21
fuente
5

(Linux) En su terminal Copie y pegue y cambie los tres campos en azul

/home/YouUser/Folder/adt-bundle-linux-x86_64-20140702/sdk/tools/emulator64-x86 -avd Android5.1.1

YouUser = user of session in linux
Folder = path of folfer
Android5.1.1 = You version of android in the emulator,for example (Android4.4.2)

puedes ver los emuladores en tu carpeta home cd /home/Youuser/.android/avd/

David Hackro
fuente
5

El android create avdcomando está en desuso. Ahora se recomienda usar avdmanageren su lugar para iniciar emuladores desde la línea de comandos.

Primero, cree un nuevo emulador si aún no existe:

avdmanager create avd --name "MyEmulator" -k "system-images;android-
26;google_apis;x86"

Esto supone que ya tiene instalada una imagen del sistema X86 que coincide con la API 26 y tiene instaladas las API de Google.

Luego puede iniciar el emulador con emulator @MyEmulator.

llave inglesa
fuente
4

Hoy en día, suponiendo que tenga Android Studio instalado (2.2) en mi caso y solo 1 emulador, puede usar este forro

export ANDROID_SDK_ROOT=~/Library/Android/sdk/ && emulator '@'`emulator -list-avds`

Si haces esto a menudo, hazlo más fácil:

$ echo 'export ANDROID_SDK_ROOT=~/Library/Android/sdk/' >> ~/.profile

Agregar un alias a ~.aliases

alias androidup="emulator '@'`emulator -list-avds`" 

Recordar source ~/.profile ~/.aliasesantes de probarlo

La próxima vez solo $ androidup

Jaime Agudo
fuente
3

lista de nombre avd disponible en

.android / avd

/ SDK_PATH / tools / emulator -netdelay none -netspeed full -avd "AVD_NAME"

rinkesh
fuente
3

En Windows, uso este script de PowerShell para iniciarlo.

$em = $env:USERPROFILE+"\AppData\Local\Android\sdk\tools\emulator.exe"; 
Start-Process $em " -avd Nexus_5X_API_24" -WindowStyle Hidden;
Andy Li
fuente
3
  1. CMD abierto
  2. Para obtener toda la lista de emuladores (C: \ Users \ DJango \ AppData \ Local \ Android \ sdk \ emulator> emulator -list-avds)
  3. Elija cualquier emulador (C: \ Users \ DJango \ AppData \ Local \ Android \ sdk \ emulator> emulator -avd Pixel_2_API_28)
Arman Javed
fuente
1

En Mac (y Linux, creo), después de haber creado su AVD, puede crear un alias: alias run-android='~/Library/Android/sdk/tools/emulator -avd ${YOUR_AVD_NAME} &'

Nota : la ejecución del alias no bloqueará su terminal, si lo desea, simplemente elimine el último '&' .

Ejecutarlo emulatorsolo le dará un error porque espera que, en su posición actual, tenga: /emulator/qemu/${YOUR_PATFORM}/qemu-system-x86_64'para iniciar el emulador.

Ariel Jiménez
fuente
1

Escribí este simple script de shell usando Zenity que te permite elegir qué avd quieres ejecutar. Si no tiene ANDROID_HOME definido, puede reemplazarlo con la ruta completa al emulador. Esto sería fácil de hacer con select en lugar de Zenity también, pero opté por Zenity ya que lo estoy ejecutando desde el menú de la aplicación xfce (a través de un archivo .desktop).

#!/bin/sh

opt=$(zenity --title="Choose AVD" --text="Choose which emulator to start" --list \
                   --column="Devices" --separator="\n" `$ANDROID_HOME/emulator/emulator -list-avds`);

$ANDROID_HOME/emulator/emulator -avd $opt
Pauli Kettunen
fuente
1

Ejecute el primer emulador disponible:

~/Library/Android/sdk/tools/emulator -avd `~/Library/Android/sdk/tools/emulator -list-avds | awk '{print $1}'`
Shl
fuente
Hago algo similar:~/Library/Android/sdk/tools/emulator -avd $(~/Library/Android/sdk/tools/emulator -list-avds | head -1)
Kamen Tsvetkov
1

Llego tarde, aquí, pero quiero compartir, así que puede ser útil para alguien y para mí cuando sea necesario más tarde :), así que a continuación se muestra la forma de abrir el emulador desde la línea de comandos con un comando usando el script bash. Estoy usando MX Linux pero el proceso es el mismo en todos los sistemas operativos

1- Primero verifica los emuladores instalados

emulator -list-avds

resultará como abajo

emulator -list-avds
Nexus_4_API_28
Pixel_2_API_28

2- abre cualquier editor de texto plano o código y crea un nuevo archivo y escribe como se muestra a continuación

#!/bin/sh
emulator -avd Nexus_4_API_28

Nexus_4_API_28 es el emulador que quiero abrir, escriba el suyo que obtuvo del primer paso

guarde este archivo con la extensión .sh

3- Luego, cambie los permisos en el archivo para hacerlo ejecutable:

chmod u+x emu.sh

4- Ahora abra el emulador simplemente ejecutando este archivo de script bash con el siguiente comando

./emu.sh

ingrese la descripción de la imagen aquí

javeedishaq
fuente
Esta respuesta nos ahorró a mí y a mi equipo mucho tiempo. Gracias
Sopia Alfred
0

Iniciando el emulador desde la línea de comando con ayuda de dns

Ubicación del programa del emulador: / Users / {{UserName}} / Library / Android / sdk / tools

  1. Compruebe avd existente: - emulator -list-avds

  2. Inicie el emulador con dns set / Users / {{UserName}} / Library / Android / sdk / tools / emulator -avd Pixel_API_26 -dns-server 8.8.8.8

día y
fuente
0

Consulte las instrucciones a continuación para Ubuntu Linux con zsh :

  1. Abrir ventana de terminal ( CTRL+ ALT+ T)
  2. Ejecutar comando nano ~/.zshrc para editar su perfil
  3. Agregue las siguientes líneas en el archivo abierto:
export ANDROID_SDK_HOME="~/Android/Sdk"
alias emulator="$ANDROID_SDK_HOME/emulator/emulator"
  1. Guarde el archivo ( CTRL+ O, CTRL+ X)
  2. Obtenga el perfil ejecutando el comando source ~/.zshrc o simplemente cierre la sesión y vuelva a iniciarla
  3. Pruebe ejecutando el comando emulator -helpen la terminal

NOTA : Debe ser igual bashal reemplazar .zshrccon.bashrc

Saikat
fuente