Comment désactiver L'émulateur Android via la ligne de commande

Je ne peux pas arrêter l'émulateur de l'invite de commande avec élégance.

j'utilise la version Ubuntu 10.04 de Linux (64 bits) et la Version SDK Android est 2.3.

j'ai démarré l'émulateur en utilisant son snapshot. Maintenant, mon souci est d'éteindre gracieusement L'instance courante de L'émulateur. J'ai essayé avec kill -9 (process Id pour le fonctionnement de l'émulateur) qui arrête l'émulateur mais la prochaine fois il ne démarre pas car son snapshot a été corrompu. Merci de m'aider pour éviter énergique de la fermeture de l'un émulateur.

une idée de comment le réparer?

20
demandé sur VividD 2011-05-06 17:50:46

3 réponses

s'il vous Plaît ne pas utiliser kill -9 sans discernement, c'est une très mauvaise habitude.

la commande correcte est

 $ adb emu kill

ou plutôt était la commande correcte jusqu'à quelques changements récents adb . Il semble que quelqu'un a oublié d'ajouter l'authentification.

dans la dernière (à partir de juin 2016) la dernière adb version est

$ adb version
Android Debug Bridge version 1.0.36
Revision 0a04cdc4a62f-android

et quand vous essayez

$ adb emu kill

rien ne se passe, et c'est pourquoi

...
connect(3, {sa_family=AF_INET, sin_port=htons(5554), 
sin_addr=inet_addr("127.0.0.1")}, 16) = 0
write(3, "kill\nquit\n", 10)            = 10
read(3, "73", 8192)             = 3
read(3, "7373"151930920"75"151930920"", 8192) = 9
read(3, "Android Console: Authentication required\r\nAndroid Console: type 'auth <auth_token>' to authenticate\r\nAndroid Console: you can find your <auth_token> in \r\n'/home/diego/.emulator_console_auth_token'\r\nOK\r\n", 8192) = 202
read(3, "k[K", 8192)                 = 4
read(3, "[Dki[K", 8192)           = 8
read(3, "[D[Dkil[K[D[D[Dkill[K", 8192) = 28
read(3, "\r\nKO: unknown command, try 'help'\r\n", 8192) = 35
read(3, "q[K[Dqu[K", 8192)     = 12
read(3, "[D[Dqui[K[D[D[Dquit[K", 8192) = 28
read(3, "\r\n", 8192)                   = 2
read(3, "", 8192)                       = 0
close(3)                                = 0
exit_group(0)                           = ?
+++ exited with 0 +++

alors nous avons besoin d'une autre solution.

si la commande précédente ne fonctionne pas (comme certains utilisateurs l'ont signalé pour Windows), vous pouvez essayer ( dans la commande suivante 5554 est le port utilisé par l'émulateur ).

Copiez le contenu du fichier token ( ~/.emulator_console_auth_token ) dans le presse-papiers pour que vous puissiez collez-le pendant votre session telnet:

$ telnet localhost 5554

Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Android Console: Authentication required
Android Console: type 'auth <auth_token>' to authenticate
Android Console: you can find your <auth_token> in 
'/home/user/.emulator_console_auth_token'
OK
auth <YOUR_TOKEN_HERE>
Android Console: type 'help' for a list of commands
OK
Android console command help:

    help|h|?         print a list of commands
    crash            crash the emulator instance
    kill             kill the emulator instance
    quit|exit        quit control session
    redir            manage port redirections
    power            power related commands
    event            simulate hardware events
    avd              control virtual device execution
    finger           manage emulator fingerprint
    geo              Geo-location commands
    sms              SMS related commands
    cdma             CDMA related commands
    gsm              GSM related commands
    rotate           rotate the screen by 90 degrees

try 'help <command>' for command-specific help
OK

Ensuite, vous pouvez simplement entrer kill à l'invite de commande

kill
OK: killing emulator, bye bye
Connection closed by foreign host.

et l'émulateur va quitter.

mais attendez, il devrait y avoir un meilleur moyen. Et en fait, il y est!

Ce gist propose une solution automatisée à l'aide de s'attendre à au lieu d'avoir à couper et passé l'authentification jeton à chaque fois.

J'espère que vous le trouverez utile.

48
répondu Diego Torres Milano 2016-06-29 17:43:58

sur Ubuntu 16-04, en utilisant la version 1.0.32 de L'ADB, j'exécute L'émulateur pour Android 4.4 (API 19) dans un conteneur docker. Les ports exposés sont 30004 pour la console et 30005 pour ADB.

je peux me connecter en faisant adb connect 0.0.0.0:30005 .

pour tuer l'émulateur cependant, je dois utiliser adb -s emulator-30004 emu kill , en utilisant 0.0.0.0:30005 me donne error: no emulator detected .

0
répondu user276648 2017-01-12 02:15:46

j'ai eu des problèmes à ubuntu où l'émulateur ouvrirait continuellement de nouveaux processus. Je n'ai jamais pu fermer l'émulateur et il ne répondait pas.

j'ai utilisé htop

dans htop:

  1. F4 à filtrer.
  2. filtre pour "avd".
  3. F5 pour arbre.
  4. trouver et cliquez sur processus parent.
  5. F9 pour élever tuer menu.
  6. sélectionner le signal 9 et entrer.
0
répondu Shannanigans 2017-07-20 09:07:37