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.
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
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.
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:
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 &
`` `
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.
Dans les distributions GNU/Linux
C'est facile
cd genymotion/
Dans ce dossier, vous devez trouver le fichier player
Maintenant vous avez besoin du nom de l'appareil
Dans votre terminal, écrivez cette commande en remplaçant NameDevice par le nom de votre périphérique.
./player --vm-name <NameDevice>
Et maintenant votre émulateur a commencé
Sous GNU/Linux, vous pouvez créer un accès dans le menu.
Bonne chance
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.