L’émulateur Android ne termine jamais son démarrage lorsque l’indicateur “-no-window” est utilisé

Mon but est d’exécuter l’émulateur Android en mode “-no-window” parce que je veux l’exécuter sur une machine distante sans carte moniteur / graphique. J’ai lutté pendant des jours sans succès.

Tout d’abord, laissez-moi décrire ce qui fonctionne. Je décrirai ensuite ce qui ne fonctionne pas, ce qui est vraiment ce que je veux réaliser.

Ce qui fonctionne

Je peux exécuter l’émulateur sur la machine distante sans l’indicateur “-no-window”. La machine distante est une machine nue (ce n’est pas une machine virtuelle) avec Ubuntu installé. Lorsque l’émulateur fonctionne, je peux le “voir” sur mon écran local. Voici ce que j’ai fait:

  1. Je ssh dans la machine distante avec le drapeau “-Y” pour que le rendu apparaisse sur ma machine locale:
ssh -Y username@my-remote-machine 
  1. Une fois connecté à la machine distante via ssh, j’exécutais l’émulateur à l’aide de cette commande:
 $ uname -a Linux cell1 4.13.0-16-generic #19-Ubuntu SMP Wed Oct 11 18:35:14 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux cd ~/Android/Sdk/emulator ./emulator -show-kernel -no-boot-anim -netdelay none -netspeed full -no-snapshot-load -avd Nexus_5X_API_22_64bit 
  1. J’ai ensuite attendu un peu et l’émulateur apparaissait sur ma machine cliente en moins d’une minute.

  2. J’ai exploré l’interface utilisateur un peu puis j’ai appuyé sur Ctrl-C dans la console pour arrêter l’émulateur correctement. Les choses ont fonctionné comme prévu et j’ai vu ce qui suit dans la console:

 [ 123.257075] healthd: battery l=100 v=0 t=0.0 h=2 st=2 chg=a ^C emulator: Saving state on exit with session uptime 132314 ms 

Ce qui ne fonctionne pas

  1. Je me suis connecté à la machine distante de la même manière.

  2. Ensuite, j’ai tenté d’exécuter l’émulateur avec l’indicateur “-no-window” car – en fin de compte – je veux lancer l’émulateur depuis un cronjob et il n’y aura pas de AFFICHAGE pour qu’il apparaisse.

 ./emulator -show-kernel -no-boot-anim -netdelay none -netspeed full -no-snapshot-load -avd Nexus_5X_API_22_64bit -no-window 
  1. J’ai attendu 3 minutes dans l’espoir que cela finirait de démarrer. Mais mon espoir était déçu. Comment ai-je su que le démarrage ne s’est pas terminé? J’ai appris cela quand j’ai appuyé sur Ctrl-C et vu ce qui suit dans la console:
 shell@generic_x86_64:/ $ ^C emulator: WARNING: Skipping state saving as emulator not finished booting. 

Ma question est la suivante: est-ce que quelqu’un sait pourquoi l’émulateur n’a pas fini de démarrer avec le drapeau “-no-window”? Comment puis-je exécuter l’émulateur sur une machine distante (une machine nue) sans moniteur? Toute suggestion / aide est appréciée.

Merci beaucoup!

Je viens de rencontrer le même problème. J’ai réussi à démarrer une fois avec -no-window , mais toutes les tentatives suivantes ont échoué après avoir utilisé l’émulateur avec une fenêtre.

D’après ce que j’ai trouvé, cela semble être lié à la persistance de l’état (même si le lancement avec -no-window permet de détecter un changement de configuration et donc de réinitialiser l’état).

Si je lance avec l’ emulator -no-window -wipe-data -avd TEST_1234 (c’est-à-dire en effaçant l’état précédent), le processus de démarrage se terminera à chaque fois avec succès.

Les lancements suivants utilisant -no-window sans -wipe-data semblent également fonctionner:

 $ emulator -no-window -avd TEST_1234 ^Cemulator: Saving state on exit with session uptime 30735 ms 

Ce n’est pas la solution idéale si vous devez basculer entre l’utilisation de l’interface utilisateur et une configuration sans tête, mais si vous (comme moi) adb simplement à l’interface utilisateur pour vérifier quelque chose et contourner le problème.

J’ai eu le même problème pendant un certain temps. Essayez d’append ces parameters au démarrage de l’émulateur:

-qemu -enable-kvm -snapshot

Cela m’a coûté une journée entière pour comprendre que c’était simplement une question d’image. Le passage des versions de Google Apis aux versions par défaut a résolu mon problème.

J’espère que cela aide