Sni*_*las 29 command-line android genymotion
是否有任何方法可以通过命令行启动并通过命令avd注册adb?
我也希望让模拟器无头启动.
我正在寻找这个快速运行测试.
k s*_*k s 39
对于寻找非无头命令行启动的其他人:
/Applications/Genymotion.app/Contents/MacOS/player --vm-name "xxxx"
Run Code Online (Sandbox Code Playgroud)
获取vms列表:
$ VBoxManage list vms
"Galaxy Nexus - 4.2.2 - API 17 - 720x1280" {56d8e3aa-ecf8-483e-a450-86c8cdcedd35}
Run Code Online (Sandbox Code Playgroud)
其中xxxx可以是name或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"
Run Code Online (Sandbox Code Playgroud)
你可以用正常的进程kill杀死它:
ps | grep "Genymotion\.app/Contents/MacOS/player" | awk '{print $1}' | xargs kill
Run Code Online (Sandbox Code Playgroud)
Sni*_*las 15
这是一个更好的程序.这将需要第一次手动启动,但之后,你将获得一个快速的genymotion,几秒钟内.以下脚本已在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
Run Code Online (Sandbox Code Playgroud)
然后你可以使用这个脚本检测它的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
Run Code Online (Sandbox Code Playgroud)
现在,您已经拥有从命令行启动vm快照并通过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
Run Code Online (Sandbox Code Playgroud)
最后,您还可以使用脚本正确关闭模拟器:
#script genymotion-stop.sh
IP=`./genymotion-detect-ip.sh`
adb root
adb connect $IP:5555
adb shell reboot -p &
Run Code Online (Sandbox Code Playgroud)
这仍然是很多脚本,但它工作正常,并以一种方便的方式控制genymotion模拟器.
让我们希望genymobile可以在以后的版本中使这个前夕更容易.