2017-03-12 1 views
1

J'ai donc une idée de tester mon application Android sur mon ordinateur portable en utilisant un fichier avd mais avec plusieurs fichiers config.ini pour changer la composition de l'avd elle-même.Tentative ambitieuse d'exécuter une application Android sur plusieurs émulateurs - impossible d'arrêter les émulateurs

J'ai créé plusieurs avds, et copié les fichiers config.ini dans un dossier séparé.

J'ai aussi écrit un script bash pour

    boucle
  • dans mes fichiers config.ini
  • les copier un à la fois dans le dossier AVD (en remplaçant le dernier)
  • tentative d'arrêter tout émulateur de fonctionnement actuel (ce qui est mon gros problème)
  • démarrer l'émulateur
  • exécuter mes tests sur elle (qui prennent scre enshots)
  • adb tirer les captures d'écran dans un dossier de
  • Recommencez l'opération avec le prochain fichier ini

J'ai donc plus de ce travail, mais je ne peux pas pour la vie de moi d'arrêt/démarrage/redémarrez le fichier avd.

J'ai essayé plusieurs choses de diverses questions SO y compris, mais sans s'y limiter

  • adb émeu tuer
  • telnet tuer
  • adb shell arrêter
  • émulateur pgrep -f (pour trouver le pid) puis tuez -9 pour l'arrêter

rien ne semble fonctionner correctement, régulièrement sans bloquer mon script, ou lea ving certains fichiers restants, ce qui signifie que je ne peux pas redémarrer l'émulateur. Il semble que cela devrait être si facile et une excellente façon d'exécuter mon application sur plusieurs émulateurs de périphériques sans avoir à tous les exécuter en même temps, ce que mon ordinateur portable ne serait jamais capable de gérer (il pourrait faire peut-être 3 à la fois)

+1

si vous faites 'any_shell_command &' et ensuite 'echo $!'vous obtiendrez l'ID de processus du dernier travail placé en arrière-plan, qu'il soit exécuté en tant que commande asynchrone ou en utilisant bg builtin, donc si vous lancez votre émulateur avec' & ', vous pouvez sauvegarder son pid quelque part et plus tard tuer il – pskink

+0

@pskink - chaque fois que je tue, il peut souvent me conduire avec des fichiers .lock dans le dossier avd, ce qui signifie que je ne peux pas redémarrer cet émulateur –

+0

essayé différents signaux? (kill -l) – pskink

Répondre

1

faire sur un shell (linux):

adb shell su -c 'svc power shutdown' && echo "target has shut down"

Il va arrêter la cible (affiche correctement la fenêtre « système powerdown » à l'intérieur d'émulation), puis ferme également la fenêtre de l'émulateur. Aucun fichier de verrouillage périmé laissé derrière.

Bien sûr, après le lancement de votre cible, vous devrez attendre jusqu'à ce que la cible ait démarré correctement et accepte les commandes shell adb. Juste testé sur la cible émulée API 19 android 19 (kitkat) - a bien fonctionné. J'espère que cela résoudra votre idée de la programmation à distance de votre configuration de plusieurs cibles.

+0

Merci pour cela, je n'ai pas eu l'occasion de tester, mais j'essaierai bientôt –

+0

Juste essayé ceci. Cela n'a pas fonctionné exactement, pour une raison quelconque, je n'ai pas réussi à faire fonctionner su -c. Cependant, si je lance 'adb root && adb shell 'svc power shutdown' && echo" la cible s'est éteinte "' alors ça marche parfaitement. Merci –