web-dev-qa-db-fra.com

Comment puis-je scripter un émulateur genymotion pour lancer un avd sans tête?

Est-il possible de lancer en ligne de commande un avd donné et le faire enregistrer via adb?  

Je préférerais également que l'émulateur soit lancé sans tête.

Je cherche ceci pour exécuter des tests rapidement. 

29
Snicolas

Pour les autres personnes recherchant un démarrage en ligne de commande sans interface graphique:

/Applications/Genymotion.app/Contents/MacOS/player --vm-name "xxxx"

Obtenez une liste de vms: 

$ VBoxManage list vms
"Galaxy Nexus - 4.2.2 - API 17 - 720x1280" {56d8e3aa-ecf8-483e-a450-86c8cdcedd35}

Où xxxx peut être le nom ou l'id: 

/Applications/Genymotion.app/Contents/MacOS/player --vm-name 56d8e3aa-ecf8-483e-a450-86c8cdcedd35
/Applications/Genymotion.app/Contents/MacOS/player --vm-name "Galaxy Nexus - 4.2.2 - API 17 - 720x1280"

Vous pouvez le tuer avec un processus normal kill:

ps | grep "Genymotion\.app/Contents/MacOS/player" | awk '{print $1}' | xargs kill
39
k s

Voici une meilleure procédure. Cela nécessitera un premier lancement manuel, mais ensuite, vous obtiendrez une génymotion rapide, en quelques secondes. Les scripts suivants ont été testés sur macos x. Ils auront peut-être besoin de plus de travail pour Linux.

Tout d’abord, lancez normalement genymotion emulator via l’application genymotion . Ensuite, récupérez son sha1 dans Virtual Box: 

VBoxManage list vms

Ensuite, prenez un instantané à partir de la ligne de commande: 

#script genymotion-save.sh
VM=6a5d9245-b751-47aa-b38d-989c5f1a9cfb

echo "VM is \"$VM\""
VBoxManage snapshot $VM take snap1 

Ensuite, vous pouvez détecter son adresse IP en utilisant ce script (la plus grande partie de sa complexité provient de la conversion d’adresses mac): 

#script genymotion-detect-ip.sh
VM=6a5d9245-b751-47aa-b38d-989c5f1a9cfb

#find mac of vm
#http://stackoverflow.com/questions/10991771/sed-to-insert-colon-in-a-mac-address
# Update arp table
for i in {1..254}; do ping -c 1 192.168.56.$i 2&>1; done

MAC=`VBoxManage showvminfo "$VM" | grep MAC | grep Host | awk -F ":" '{print $3}' | cut -c 2-13`
#echo "MAC is $MAC"

MAC=`echo $MAC | sed -e 's/\([0-9A-Fa-f]\{2\}\)/\1:/g' -e 's/\(.*\):$/\1/' | tr '[:upper:]' '[:lower:]'`
#echo "MAC is $MAC"

# Find IP: substitute vname-mac-addr with your vm's mac address in ':' notation
IP=`arp -a | sed "s/ \(.\):/ 0\1:/" | sed "s/:\(.\):/:0\1:/g"|sed "s/:\(.\):/:0\1:/g"|sed "s/:\(.\)$/:0\1/"|grep $MAC`
#echo "IP is $IP"

IP=`echo $IP | cut -d "(" -f2 | cut -d ")" -f1`
echo $IP

Vous avez maintenant tout ce dont vous avez besoin pour démarrer l’instantané de la machine virtuelle à partir de la ligne de commande et vous y connecter via adb (en utilisant root). Vous pouvez le faire avec ce script: 

# script genymotion-start.sh
VM=6a5d9245-b751-47aa-b38d-989c5f1a9cfb

echo "VM is \"$VM\""
VBoxManage snapshot $VM restore snap1 &
VBoxHeadless -s $VM &

IP=`./genymotion-detect-ip.sh`
echo $IP

#adb tcpip 5555
adb connect $IP:5555

#restart adb as root to allow powering it off
#root mode is generally what we want from a headless emulator (to download emma files for instance)
adb root
adb connect $IP:5555

Et enfin, vous pouvez également utiliser un script pour éteindre correctement l'émulateur: 

#script genymotion-stop.sh 
IP=`./genymotion-detect-ip.sh`

adb root
adb connect $IP:5555
adb Shell reboot -p &

C’est toujours beaucoup de scripts, mais cela fonctionne bien et contrôle l’émulateur de Genymotion d’une manière pratique.

Espérons que genymobile facilitera cette veille dans les prochaines versions.

15
Snicolas

Je cours sous Ubuntu et j'ai modifié la réponse de Snicolas et transféré sous le nom Gist: https://Gist.github.com/guneysus/410bb0e6b56d6f228555

Les principales différences sont les suivantes:

  • La méthode de recherche IP n'est pas travaillée sur Ubuntu. Je suis venu avec un autre travail
  • Les périphériques définis dans geny_devices.sh et sourcez ce fichier pour choisir VM facilement:

`` `

# script geny_devices.sh

s3_43="e63063e8-a922-4832-8bcf-05362c3a1c9a"
nexus_44="45287ed9-2d5e-49a5-a0f9-82c29e7cc4b3"

# Samsung Galaxy S3 - 4.3 - API 18 - 720x1280" {e63063e8-a922-4832-8bcf-05362c3a1c9a}
# "Google Nexus 7 - 4.4.4 - API 19 - 800x1280" {45287ed9-2d5e-49a5-a0f9-82c29e7cc4b3}

#script geny_snap.sh
source geny_devices.sh
VM=${s3_43}

# Hopefully performance improvement ;) Not really necessary
# for in in {1..254}; 
#     do ping -c 192.168.56.$1 2&>1;
# done

MAC=`VBoxManage showvminfo ${VM} | grep MAC | awk -F ":" '{print $3}' | cut -c 2-13`
# echo "MAC is ${MAC}"

# On linux data returned from arp -a is like 
# ? (192.168.56.101) at 08:00:27:b0:7f:38 [ether] on vboxnet0
# ? (192.168.0.1) at 9e:a9:e4:d5:43:5b [ether] on eth2

# Find IP with 
IP=`arp -a | egrep vboxnet|grep -E -o  "([0-9]{1,3}[\.]){3}[0-9]{1,3}"`
# echo "IP is $IP"

IP=`echo $IP | cut -d "(" -f2 | cut -d ")" -f1`
# echo $IP|xclip
# echo -e "[OK] IP  \t:\t ${IP} 
# IP exported as global variable and to the clipboard."
echo $IP

# script geny_save.sh
source geny_devices.sh
VM=${s3_43}

echo "VM is \"$VM\""
VBoxManage snapshot $VM restore snap1 &

# script geny_start.sh
source geny_devices.sh
VM=${s3_43}

echo "VM is \"$VM\""
VBoxManage snapshot $VM restore snap1 &
VBoxHeadless -s $VM &

IP=`./geny_ip.sh`
echo ">>>>>>" $IP

adb tcpip 5555
adb connect $IP:5555

#restart adb as root to allow powering it off
#root mode is generally what we want from a headless emulator (to download emma files for instance)
adb root
adb connect $IP #:5555

#script geny_stop.sh 
IP=`./geny_ip.sh`

adb root
adb connect $IP:5555
adb Shell reboot -p &

`` `

2
guneysus

Grâce à la réponse de @k, j’ai pu lancer l’émulateur de mouvement Geny sur Mac, mais j’ai dû faire quelques modifications pour Mac OS Sierra 10.12.6 et GenyMotion 2.10.0.

/Applications/Genymotion.app/Contents/MacOS/player.app/Contents/MacOS/player --vm-name "xxxx"

et de le tuer

ps | grep "/Applications/Genymotion\.app/Contents/MacOS/player\.app/Contents/MacOS/player" | awk '{print$1}' | xargs kill

J'espère que ça aide quelqu'un.

1
satheeshwaran

Dans les distributions GNU/Linux

C'est facile

 cd genymotion/

Dans ce dossier, vous devez trouver le fichier player

 enter image description here

Maintenant vous avez besoin du nom de l'appareil

 enter image description here

Dans votre terminal, écrivez cette commande en remplaçant NameDevice par le nom de votre périphérique.

 ./player --vm-name <NameDevice>

 enter image description here

 enter image description here

Et maintenant votre émulateur a commencé

 enter image description here

Sous GNU/Linux, vous pouvez créer un accès dans le menu.

 enter image description here

 enter image description here

Bonne chance

0
David Hackro

Juste au cas où quelqu'un ne serait pas au courant de variables d'environnement, à la recherche d'un/sans tête et sous Windows , vous pouvez vérifier les commandes en exécutant la commande suivante où votre VirtualBox est installée:

C:\Program Files\Oracle\VirtualBox list vms

Ensuite, vous pouvez exécuter le périphérique souhaité avec les éléments suivants:

C:\Program Files\Genymobile\Genymotion\tools player --vm-name "Google Nexus 4"

Bien sûr, mettre ces chemins sur votre variable d’environnement serait la meilleure approche.

0
Felipe Augusto