it-swarm.com.de

Wie kann ich mit dem Genymotion-Emulator ein gegebenes avd, headless starten?

Gibt es eine Möglichkeit, eine bestimmte avd über die Befehlszeile zu starten und sie über adb zu registrieren?  

Ich würde es auch vorziehen, den Emulator kopflos zu starten.

Ich suche das, um Tests schnell durchzuführen. 

29
Snicolas

Für andere, die einen Start ohne Befehlszeile suchen:

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

Holen Sie sich eine Liste von vms: 

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

Dabei kann xxxx entweder der Name oder die ID sein: 

/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"

Sie können es mit einem normalen Prozess töten:

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

Hier ist ein besseres Verfahren. Es wird ein erster manueller Start erforderlich sein, aber danach erhalten Sie innerhalb von Sekunden eine rasend schnelle Genymotion. Die folgenden Skripts wurden auf Macos x getestet. Sie benötigen möglicherweise etwas mehr Arbeit für Linux.

Starten Sie zunächst den genymotion-Emulator normal über die genymotion-App . Dann erhalten Sie sha1 aus der virtuellen Box: 

VBoxManage list vms

Nehmen Sie dann eine Momentaufnahme davon in der Befehlszeile auf: 

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

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

Dann können Sie die IP-Adresse dieses Skripts erkennen (die Komplexität ist hauptsächlich auf die Konvertierung von Mac-Adressen zurückzuführen): 

#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

Jetzt haben Sie alles, was Sie benötigen, um den Snapshot der VM über die Befehlszeile zu starten und über adb (über root) eine Verbindung herzustellen. Sie können es mit diesem Skript machen: 

# 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

Und schließlich können Sie auch ein Skript verwenden, um den Emulator ordnungsgemäß herunterzufahren: 

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

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

Dies ist immer noch eine Menge Scripting, aber es funktioniert gut und steuert den Genymotion-Emulator auf praktische Weise.

Hoffen wir, dass genymobile diesen Abend in zukünftigen Versionen einfacher machen kann.

15
Snicolas

Ich bin auf Ubuntu lauffähig und habe Snicolas's answer geändert und als Gist hochgeladen: HTTPS://GIST.GITHUB.COM/GUNEYSUS/410BB0E6B56D6F56F228555

Die Hauptunterschiede sind:

  • Das Finden der IP-Methode funktioniert nicht unter Ubuntu. Ich kam mit einer anderen Umgehung
  • Definierte Geräte in geny_devices.sh und Quelle dieser Datei zur einfachen Auswahl von VM:

`` `

# 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

Dank der Antwort von @k konnte ich den Geny-Bewegungsemulator auf dem Mac starten, aber für Mac OS Sierra 10.12.6 und GenyMotion 2.10.0 musste ich einige Änderungen vornehmen

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

und es zu töten

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

Hoffe es hilft jemandem.

1
satheeshwaran

In Distros GNU/Linux

Es ist einfach

 cd genymotion/

In diesem Ordner müssen Sie die Datei player suchen.

 enter image description here

Jetzt benötigen Sie den Gerätenamen

 enter image description here

Schreiben Sie diesen Befehl in Ihr Terminal und ersetzen Sie NameDevice für Ihren Gerätenamen

 ./player --vm-name <NameDevice>

 enter image description here

 enter image description here

Und jetzt startete dein Emulator

 enter image description here

In GNU/Linux können Sie im Menü Zugriff erstellen

 enter image description here

 enter image description here

Viel Glück

0
David Hackro

Nur für den Fall, dass niemand Umgebungsvariablen kennt, nach einem Nicht-Headless und unter Windows sucht, können Sie die Befehle überprüfen, indem Sie den folgenden Befehl ausführen, in dem Ihre VirtualBox installiert ist:

C:\Program Files\Oracle\VirtualBox list vms

Dann können Sie Ihr gewünschtes Gerät mit etwas wie dem folgenden ausführen:

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

Wenn Sie Pfade auf Ihre Umgebungsvariable setzen, wäre dies natürlich der bessere Ansatz.

0
Felipe Augusto