Comment lancer l'émulateur Android à partir de la ligne de commande?

373

Je suis sur Mac, je travaille sur le développement Android depuis le terminal. J'ai réussi à créer le projet HelloWorld et maintenant j'essaie de l'exécuter à partir de la ligne de commande dans l'émulateur Android. Quelle commande exécute l'émulateur pour mon projet HelloWorld?

J'ai déjà les outils Android et les outils de plateforme dans mon CHEMIN.

Éditer:

Comment dire à l'émulateur d'exécuter mon projet HelloWorld à partir de la ligne de commande? J'ai déjà construit le projet avec ant.

Thierry Lam
la source
Documents pertinents: créez avec avdmanageret lancez avec emulator.
jchook

Réponses:

380

Je suppose que vous avez construit votre projet et que vous avez juste besoin de le lancer, mais vous n'avez créé aucun AVD et devez utiliser la ligne de commande pour toutes les actions. Vous devez faire ce qui suit.

  1. Créez un nouvel appareil virtuel (AVD) pour la plateforme dont vous avez besoin. Si vous devez utiliser la ligne de commande pour créer votre AVD, vous pouvez appeler android create avd -n <name> -t <targetID>où targetID est le niveau d'API dont vous avez besoin. Si vous pouvez utiliser l'interface graphique, tapez simplement android avdet il lancera le gestionnaire, où vous pouvez faire de même. Vous pouvez en savoir plus sur la gestion AVD via l'interface graphique et la ligne de commande .
  2. Exécutez l'AVD à l'aide de la commande emulator -avd <name>ou via l'interface graphique précédemment lancée. Attendez que l'émulateur se charge complètement, cela prend un certain temps. Vous pouvez en savoir plus sur les options supplémentaires ici .
  3. Vous devez maintenant installer l'application sur votre AVD. Habituellement, pendant le développement, vous utilisez simplement le même script Ant que vous avez utilisé pour créer le projet, sélectionnez simplement la installcible. Cependant, vous pouvez installer l'application manuellement à l'aide de la commande adb install <path-to-your-APK>.
  4. Passez maintenant à l'émulateur et lancez votre application comme sur n'importe quel appareil normal, via le lanceur. Ou, comme alternative, vous pouvez utiliser la commande suivante: adb shell am start -a android.intent.action.MAIN -n <package>/<activity class>. Par exemple: adb shell am start -a android.intent.action.MAIN -n org.sample.helloworld/org.sample.helloworld.HelloWorld. Comme l'a suggéré un commentateur, vous pouvez également remplacer org.sample.helloworld.HelloWorlddans la ligne ci-dessus par juste .HelloWorld, et cela fonctionnera aussi.
Malcolm
la source
1
Votre liste de 4 points est ce que je recherche. Quand je cours adb install <path-to-your-APK>, je reçois error: device not found. Si j'exécute l'émulateur dans un shell et la commande adb install dans un autre, j'obtiens error: device offline. Comment configurer un périphérique virtuel émulé?
Thierry Lam
3
OK, a ramené des informations de la version précédente de la réponse. :) Si vous recevez le message que l'appareil est hors ligne, je pense que vous n'avez tout simplement pas laissé le système se charger. Il est inutile d'essayer d'envoyer des commandes à l'émulateur lorsqu'il affiche le logo Android, vous devez attendre jusqu'à ce qu'il vous montre l'écran de verrouillage. Et vous avez raison, vous devez utiliser une autre instance de shell pour envoyer des commandes à votre appareil. Au fait, vous pouvez vérifier l'état actuel des appareils à l'aide de la adb devicescommande.
Malcolm
1
@ThomasW Merci, j'ai ajouté cette information à la réponse.
Malcolm
1
@ L2G Si vous l'exécutez en tant que script, alors oui, vous pouvez le faire. Quand j'ai écrit la réponse, j'ai supposé que vous faisiez tout à la main, auquel cas, bien sûr, vous pouvez vous attendre.
Malcolm
4
redémarrez adb-server par: adb kill-server; adb start-serversi rien adb devices
n'apparaît
278

Listez tous vos émulateurs:

emulator -list-avds

Exécutez l'un des émulateurs répertoriés avec le -avddrapeau:

emulator -avd @name-of-your-emulator

emulatorest sous:

${ANDROID_SDK}/tools/emulator
azibi
la source
2
Si vous exécutez à partir d'un terminal Linux, vous devez cddans le dossier $ ANDROID_SDK / tools ou cela ne fonctionnera pas.
shimatai
4
Merci! Si vous utilisez emulatorplus souvent pourquoi ne pas créer un alias: nano ~/.bashrc> ajoutez alias emulator='$ANDROID_HOME/tools/emulator', enregistrez . ~/bashrcet vous avez terminé. (remplacez ANDROID_HOMEpar la bonne variable utilisée ou le chemin statique vers le dossier android).
Samuel Elh
3
Si l'erreur suivante se produit: ERREUR: ./ android / qt / qt_setup.cpp: 28: bibliothèque Qt introuvable à ../emulator/lib64/qt/lib, le démarrage de l'émulateur à partir de $ ANDROID_HOME / tools est une solution de contournement. github.com/decosoftware/deco-ide/issues/289
tebanep
Si vous ne naviguez vraiment pas vers le toolsdossier, cela ne fonctionnera vraiment pas. J'ai une erreur PANIC: Missing emulator engine program for 'x86' CPU.. (Je suis sous Linux, OpenSUSE.) Après avoir navigué toolset puis juste couru emulator -avd "{name}"- alors cela a fonctionné.
pesho hristov
100

Je pense que la meilleure façon de l'atteindre via le terminal est:

cd ~/Library/Android/sdk/tools

Pour exécuter un certain AVD directement:

./emulator -avd {AVD_NAME}

Pour répertorier vos AVD, utilisez:

./emulator -list-avds
Ali Sao
la source
Quel est le chemin pour Windows?
qwertzguy
9
Ah, je l'ai trouvé: C: \ Users \ <user> \ AppData \ Local \ Android \ sdk \ emulator
qwertzguy
1
un seul qui a fonctionné pour moi, thx - mais est-il de toute façon de l'ajouter à votre chemin ou smth bc cd'ing là à chaque fois est un peu compliqué
John D
Qu'est-ce que @JohnD a dit - comment pourrais-je inclure ./dans le cadre de la emulatorcommande dans un chemin / alias?
DaveNOTDavid
Sous Linux, le chemin est pour moi ~/Android/Sdk/emulator.
Tyler Collier
26

Juste pour ajouter ici, chaque fois que vous obtenez "error: device offline" signifie que la connexion avec l'émulateur et le pont adb a été interrompue en raison du temps pris au démarrage de l'émulateur.

Plutôt que de redémarrer l'émulateur à ce stade, essayez ci-dessous deux commandes qui arrêtent et redémarrent le pont adb.

adb kill-server

adb start-server

ABDroids
la source
Sous Windows, vous devrez peut-être également supprimer la tâche adb.exe à l'aide du Gestionnaire des tâches.
Carl
25

Ici, vous pouvez vérifier les options pour exécuter cette commande via la ligne de commande:

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

Par exemple, je l'utilise comme ceci ci-dessous:

emulator -avd ICS_ARM -wipe-data -no-boot-anim -cpu-delay 0
germangti
la source
Salut germangti, j'ai le même problème. J'obtiens "ABI valides: pas d'ABI. Erreur: --abi x86 non valide pour la cible sélectionnée.". Comment avez-vous résolu le problème?
Muneer Muhammed
15

CMD ouvert

  1. Ouvrir l'invite de commande
  2. tapez le chemin de l'émulateur dans mon cas

C: \ adt-bundle-windows-x86_64-20140702 \ sdk \ tools entrez la description de l'image ici

  1. écrire "emulator -avd emulatorname" dans mon cas

émulateur -avd AdilVD

entrez la description de l'image ici

Adiii
la source
13

Si vous essayez strictement d'exécuter l'émulateur à partir de la ligne de commande, essayez ceci dans OSX.

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

Vous pouvez le simplifier en ajoutant un alias au .bash_profile et en l'envoyant à un travail en arrière-plan.

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

Informez Bash des changements.

source ~/.bash_profile
Meule
la source
zsh: aucun fichier ou répertoire de ce type: NAMEOFDEVICE
Ben Sinclair
2
@Andy vous êtes censé remplacer NAMEOFDEVICEpar le nom réel de l'émulateur. faire une emulator -list-avdspour obtenir une liste des avds que vous avez dans votre système.
nabn
9

Ouvrez l'invite de commande et accédez à <android-Home>\sdk\tools>emulator -avd <AVD_NAME>

Voici "emulator"la commande utilisée pour ouvrir votre appareil virtuel Android .

Chandra Shekhar
la source
9

Si vous avez Git Bash, vous pouvez ouvrir votre émulateur avec un double-clic, avec une configuration initiale (testé dans Windows 10 uniquement) :

  1. Ouvrez Git Bash.
  2. Courir cd ~/AppData/Local/Android/sdk/emulator
  3. Exécutez ./emulator -list-avdset notez le nom de l'émulateur. MY_EMULATORpar exemple.
  4. Ouvrez le Bloc-notes et ajoutez ces deux lignes (insérez le nom de votre émulateur au lieu de MY_EMULATOR):

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

  5. Enregistrez le fichier quelque part convinient comme monfichier. sh . Vous pouvez modifier "monfichier" comme vous le souhaitez, mais l'extension .sh est nécessaire.

  6. Ouvrez Git Bash dans le répertoire où vous avez stocké myfile.sh et exécutez chmod +x myfile.sh. N'oubliez pas de mettre le nom de votre fichier au lieu de monfichier .

Et c'est tout! À partir de maintenant, chaque fois que vous devez démarrer cet émulateur, localisez simplement votre fichier myfile.sh et double-cliquez dessus et attendez que votre émulateur Android se lance!

romin21
la source
5

(Linux) Dans votre terminal, copiez et collez et changez les trois champs en bleu

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

vous pouvez voir les émulateurs dans votre dossier home cd /home/Youuser/.android/avd/

David Hackro
la source
5

La android create avdcommande est obsolète. Il est maintenant recommandé d'utiliseravdmanager place pour lancer les émulateurs à partir de la ligne de commande.

Créez d'abord un nouvel émulateur s'il n'en existe pas déjà:

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

Cela suppose que vous disposez déjà d'une image système X86 qui correspond à l'API 26 et que les API Google sont installées.

Vous pouvez ensuite lancer l'émulateur avec emulator @MyEmulator.

clé fractale
la source
4

De nos jours, en supposant que vous avez installé Android Studio (2.2) dans mon cas et seulement 1 émulateur, vous pouvez utiliser celui-ci

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

Si vous le faites souvent, rendez-le plus facile:

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

Ajouter un alias à ~.aliases

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

Rappelez-le source ~/.profile ~/.aliasesavant de le tester

La prochaine fois juste $ androidup

Jaime Agudo
la source
3

liste des noms avd disponibles sur

.android / avd

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

rinkesh
la source
3

Sous Windows, j'utilise ce script PowerShell pour le démarrer.

$em = $env:USERPROFILE+"\AppData\Local\Android\sdk\tools\emulator.exe"; 
Start-Process $em " -avd Nexus_5X_API_24" -WindowStyle Hidden;
Andy Li
la source
3
  1. CMD ouvert
  2. Pour obtenir la liste de tous les émulateurs (C: \ Users \ DJango \ AppData \ Local \ Android \ sdk \ emulator> emulator -list-avds)
  3. Choisissez n'importe quel émulateur (C: \ Users \ DJango \ AppData \ Local \ Android \ sdk \ emulator> emulator -avd Pixel_2_API_28)
Arman Javed
la source
1

Sur Mac (et Linux je pense), après avoir créé votre AVD, vous pouvez créer un alias: alias run-android='~/Library/Android/sdk/tools/emulator -avd ${YOUR_AVD_NAME} &'

Remarque : l'exécution de l'alias ne verrouillera pas votre terminal, si vous le souhaitez, supprimez simplement le dernier '&' .

Run emulatorit self vous donnera une erreur car il s'attend à ce que, dans votre position actuelle, vous ayez: /emulator/qemu/${YOUR_PATFORM}/qemu-system-x86_64'à démarrer l'émulateur.

Ariel Jiménez
la source
1

J'ai écrit ce script shell simple en utilisant Zenity qui vous permet de choisir quel avd vous souhaitez exécuter. Si ANDROID_HOME n'est pas défini, vous pouvez simplement le remplacer par le chemin d'accès complet à l'émulateur. Ce serait facile à faire avec select au lieu de Zenity également, mais j'ai opté pour Zenity car je l'exécute depuis le menu de l'application xfce (bien qu'un fichier .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
la source
1

Exécutez le premier émulateur disponible:

~/Library/Android/sdk/tools/emulator -avd `~/Library/Android/sdk/tools/emulator -list-avds | awk '{print $1}'`
Shl
la source
Je fais quelque chose de similaire:~/Library/Android/sdk/tools/emulator -avd $(~/Library/Android/sdk/tools/emulator -list-avds | head -1)
Kamen Tsvetkov
1

Je suis en retard, ici, mais je veux partager, alors ça peut aider quelqu'un et moi aussi quand on en aura besoin plus tard :), Voici donc la façon d'ouvrir l'émulateur à partir de la ligne de commande avec une commande en utilisant le script bash. J'utilise MX Linux mais le processus est le même sur tous les systèmes d'exploitation

1- Vérifiez d'abord les émulateurs installés

emulator -list-avds

il en résultera comme ci-dessous

emulator -list-avds
Nexus_4_API_28
Pixel_2_API_28

2- Ouvrez n'importe quel éditeur de texte ou de code brut et créez un nouveau fichier et écrivez comme ci-dessous

#!/bin/sh
emulator -avd Nexus_4_API_28

Nexus_4_API_28 est l'émulateur que je veux ouvrir vous écrivez le vôtre que vous avez obtenu de la première étape

enregistrer ce fichier avec l'extension .sh

3- Ensuite, changez les permissions sur le fichier pour le rendre exécutable:

chmod u+x emu.sh

4- Maintenant, ouvrez l'émulateur en exécutant simplement ce fichier de script bash avec la commande suivante

./emu.sh

entrez la description de l'image ici

javeedishaq
la source
Cette réponse me fait gagner beaucoup de temps à moi et à mon équipe. Merci
Sopia Alfred
0

Démarrage de l'émulateur à partir de la ligne de commande avec l'aide du DNS

Emplacement du programme de l'émulateur: / Users / {{UserName}} / Library / Android / sdk / tools

  1. Vérifier avd existant: - émulateur -list-avds

  2. Démarrez l'émulateur avec le jeu de DNS / Users / {{UserName}} / Library / Android / sdk / tools / emulator -avd Pixel_API_26 -dns-server 8.8.8.8

Dayanand
la source
0

Voir les instructions ci-dessous pour Ubuntu Linux avec zsh :

  1. Ouvrir la fenêtre du terminal ( CTRL+ ALT+T )
  2. Exécuter la commande nano ~/.zshrc pour modifier votre profil
  3. Ajoutez les lignes suivantes dans le fichier ouvert:
export ANDROID_SDK_HOME="~/Android/Sdk"
alias emulator="$ANDROID_SDK_HOME/emulator/emulator"
  1. Enregistrez le fichier ( CTRL+ O, CTRL+X )
  2. Source du profil en exécutant la commande source ~/.zshrc ou déconnectez-vous et reconnectez-vous
  3. Testez en exécutant la commande emulator -help dans le terminal

REMARQUE : Doit être identique bashen remplaçant .zshrcpar.bashrc

Saikat
la source