Вот более эффективная процедура. Это потребует первого запуска вручную, но после этого вы получите пылающую быструю головоломку в течение нескольких секунд. Следующие скрипты были протестированы на macos x. Им может понадобиться еще одна работа для Linux.
Во-первых, запуск эмулятора genymotion обычно через приложение genymotion. Тогда, получить его sha1 из виртуальной коробки:
VBoxManage list vms
Затем, сделать снимок его из командной строки:
#script genymotion-save.sh
VM=6a5d9245-b751-47aa-b38d-989c5f1a9cfb
echo "VM is \"$VM\""
VBoxManage snapshot $VM take snap1
Тогда вы можете обнаружить его IP, используя этот скрипт (в большинстве своем сложность происходит от преобразования 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
Теперь у вас есть все, что вам нужно, чтобы начать снимок виртуальной машины из командной литий ne и подключиться к нему через adb (используя root). Вы можете сделать это с помощью этого сценария:
# 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
И, наконец, вы можете также использовать сценарий для завершения работы эмулятора правильно:
#script genymotion-stop.sh
IP=`./genymotion-detect-ip.sh`
adb root
adb connect $IP:5555
adb shell reboot -p &
Это еще много сценариев, но она прекрасно работает и управляет genymotion эмулятор в удобном виде.
Будем надеяться, что в будущих выпусках genymobile может сделать этот канун проще.
Главный вопрос заключается в том, на какой платформе вы его используете, чтобы вы могли исполнить исполняемый файл Genymotion. –