2013-08-23 56 views
28

Có cách nào để khởi chạy bằng dòng lệnh đã cho avd và đã đăng ký qua adb không?Làm thế nào tôi có thể viết bộ mô phỏng bộ gen để khởi động một avd nhất định, không đầu?

Tôi cũng muốn giả lập trình khởi chạy không đầu.

Tôi đang tìm điều này để chạy thử nghiệm nhanh chóng.

+0

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. –

Trả lời

38

Đối với những người khác tìm kiếm phi không đầu dòng lệnh khởi động:

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

Nhận một danh sách các vms:

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

đâu xxxx có thể là tên hoặc 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" 

Bạn có thể giết bằng cách giết quá trình bình thường:

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

Tốt đẹp và cách bạn xử lý địa chỉ IP? Bạn sẽ cần nó để kết nối adb với genymotion .. – Snicolas

+1

Trong cài đặt genymotion hãy đảm bảo rằng "Đường dẫn đến SDK Android" được đặt và sau đó đảm bảo "Khi thiết bị ảo khởi động, hãy kết nối tự động với ADB" được chọn. Khi thiết bị được bắt đầu bằng lệnh trình phát genymotion, thiết bị sẽ tự động kết nối thiết bị với ADB –

+0

cách bạn nhận được tên thông số cho trình phát? Không có gì để chạy nó không đầu? – Snicolas

15

Đâ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.

+0

Các kịch bản này hoạt động tốt (cảm ơn bạn) ... nhưng ảnh chụp màn hình tạo ra hình ảnh méo mó (cả ảnh chụp dựa trên control control và adb shell/system/bin/screencap dựa trên các ảnh chụp bị méo). Bất kỳ cách nào để có được tỷ lệ và các yếu tố trên màn hình để hiển thị đúng khi bắt đầu vm theo cách này? –

+0

Đó là một câu hỏi khá hay. Tôi đoán di động geny thực sự không tính đến trường hợp sử dụng này cho đến bây giờ. Có lẽ một giải pháp tốt hơn cho bạn sẽ là sử dụng hộp ảo với màn hình hiển thị khung hình. Tôi đoán nó có thể làm việc tốt hơn vì nó sẽ là một implal X11 chung. – Snicolas

+0

Tôi đoán genymotion là thao tác đầu ra video từ hộp ảo để hiển thị nó - tôi không thể tưởng tượng như thế nào nhưng dường như không bắt đầu trường hợp vm thông qua dòng lệnh (không đầu hoặc không) và nhận được cùng một màn hình đầu ra được tạo ra khi genymotion bắt đầu các cá thể. Khu nghỉ mát để thử các kết hợp khác nhau của các phiên bản giữa VirtualBox, GenyMotion và thiết bị Android trong trường hợp tôi nhấn một số trường hợp góc mà không ai khác đang gặp phải nhưng không có may mắn được nêu ra. –

-1

lệnh để khởi động genymotion từ dòng lệnh -

 player --vm-name Nexus_4 

nếu người chơi chưa được thêm vào con đường, thêm nó vào con đường sử dụng dưới lệnh trong ~ /.bash_profile

 export PATH=/Applications/Genymotion.app/Contents/MacOS/:$PATH 



Khi có nhiều hơn một thiết bị kết nối là sử dụng 'adb -s' được sử dụng để chuyển hướng các lệnh để thiết bị cụ thể Khi giả lập đang chạy họ sẽ được liệt kê dưới adb devices

Ví dụ:

 adb devices 
     List of devices attached 
     192.168.56.101:5555 device 


Gửi lệnh bấm vào phím menu trên thiết bị android khi nhiều thiết bị được kết nối

 adb -s 192.168.56.101:5555 shell input keyevent KEYCODE_MENU 
+1

Nó không phải là không có gì cả. – Snicolas

2

Tôi đang chạy trên Ubuntu và tôi sửa đổi Snicolas's answer và tải lên như Gist: https://gist.github.com/guneysus/410bb0e6b56d6f228555

Sự khác biệt chính là:

  • phương pháp Finding IP không được làm việc trên Ubuntu.Tôi đến với công việc xung quanh khác
  • thiết bị Defined trong geny_devices.sh và nguồn tập tin này để chọn VM dễ dàng:

`` `

# 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 & 

` ``

0

Trong distro GNU/Linux

Thật dễ dàng

cd genymotion/ 

Trong thư mục này, bạn cần tìm tập tin chơi

enter image description here

Bây giờ bạn cần tên thiết bị

enter image description here

Trong terminal của bạn, hãy viết lệnh này, thay cho NameDevice cho tên thiết bị của bạn

./player --vm-name <NameDevice> 

enter image description here

enter image description here

Và bây giờ giả lập của bạn bắt đầu

enter image description here

Trong GNU/Linux bạn có thể tạo truy cập trong menu

enter image description here

enter image description here

Good Luck

1

Nhờ @ks trả lời tôi đã có thể khởi động giả lập motion Geny trên Mac nhưng tôi đã phải thực hiện vài thay đổi cho Mac OS Sierra 10.12.6 và GenyMotion 2.10.0

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

và giết nó

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

Hy vọng nó giúp người nào.