Đây là quy trình tốt hơn. Nó sẽ yêu cầu khởi chạy thủ công đầu tiên, nhưng sau đó, bạn sẽ có được một bộ gen nhanh nhạy, chỉ trong vài giây. Các tập lệnh sau đã được thử nghiệm trên các macro x. Họ có thể cần một số công việc nhiều hơn cho Linux.
Trước tiên, khởi chạy bộ mô phỏng bộ gen thông thường thông qua ứng dụng genymotion. Sau đó, có được sha1 từ hộp ảo:
VBoxManage list vms
Sau đó, có một bản chụp của nó từ dòng lệnh:
#script genymotion-save.sh
VM=6a5d9245-b751-47aa-b38d-989c5f1a9cfb
echo "VM is \"$VM\""
VBoxManage snapshot $VM take snap1
Sau đó, bạn có thể phát hiện ip của nó sử dụng kịch bản này (hầu hết của nó phức tạp đến từ chuyển đổi địa chỉ 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
Bây giờ, bạn có tất cả những gì bạn cần để bắt đầu ảnh chụp nhanh của vm từ lệnh li ne và kết nối với nó qua adb (sử dụng root). Bạn có thể làm điều đó với kịch bản này:
# 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
Và cuối cùng bạn cũng có thể sử dụng một kịch bản để tắt giả lập đúng cách:
#script genymotion-stop.sh
IP=`./genymotion-detect-ip.sh`
adb root
adb connect $IP:5555
adb shell reboot -p &
này vẫn là rất nhiều kịch bản nhưng nó hoạt động tốt và kiểm soát giả lập genymotion một cách tiện dụng.
Hãy hy vọng genymobile có thể làm cho đêm này dễ dàng hơn trong các bản phát hành trong tương lai.
Câu hỏi chính là nền tảng bạn đang chạy trên nền tảng, để bạn có thể xác định trình chạy của trình phát Genymotion. –