Monday, December 23, 2013

Fast Android Emulator

จากการที่ได้เขียนโปรแกรมบน Android และต้องทดสอบกับ Emulator คำถามนึงที่เกือบทุกคนจะถามเหมือนกันคือ ทำไม Emulator มันถึงช้าได้ขนาดนี้ เราลองมาหาทางเลือกอื่นๆ สำหรับเพิ่มความเร็วให้ Android Emulator กันดีกว่าครับ

วิธีแรก (ง่ายสุด)
ใช้ genymotion [1] ดาวน์โหลด ติดตั้ง ใช้งานได้เลย
ข้อดี

  • ใช้งานง่าย
  • มีแบบฟรีและแบบเสียค่าใช้จ่าย
  • สามารถจำลอง sensor แบบต่างๆได้ เช่น GPS / Screen Rotation / Battery / Gyroscope ฯลฯ
  • มี plugin ให้กับ eclipse และ android studio สามารถเรียก emulator ได้จากใน IDE และรันโปรแกรมได้โดยตรง

ข้อจำกัดเล็กน้อย

  • ต้องสมัครเป็นสมาชิก (ฟรี)
  • ต้องดาวน์โหลดและติดตั้ง emulator ใหม่ ถ้าต้องการใช้งานในเครื่องอื่นๆเพิ่มเติม
วิธีที่สอง
ติดตั้ง ORACLE VirtualBox และ AndroVM ซึ่งจะมีขั้นตอนพอสมควรดังนี้
1. ดาวน์โหลดและติดตั้ง VirtualBox [2] ซึ่งถ้าต้องการใช้แบบ portable สามารถดาวน์โหลดตัวช่วยคือ Portable VirtualBox [3]
หมายเหตุ ตัว genymotion ก็ต้องใช้ VirtualBox เหมือนกัน แต่มันมีเวอร์ชัน bundle คือผนวกมาให้กับตอนดาวน์โหลดเลย

2. ดาวน์โหลด AndroVM [4] (ซึ่งความจริงก็คือต้นตำรับของ genymotion นั่นแหละ) จะได้ไฟล์ .ova มา ซึ่งแน่นอนว่าจะไม่ได้อัพเดทแล้ว
หมายเหตุ ตอนดาวน์โหลด ถ้ามี t หมายถึง tablet ส่วน p หมายถึง phone ครับ หาก
ใครจะใช้ไฟล์ ova ของ genymotion ก็ได้ ไปหากันเอาเองนะครับ


3. รัน VirtualBox จะได้หน้าตาแบบนี้ครับ


4. เลือกเมนู File/Import Appliance แล้วเลือกไฟล์ ova ที่ดาวน์โหลดมาจาก AndroVM คลิก Next และ Import

5. จะเกิด VM ใหม่ในแถบด้านซ้ายมือดังรูป


ตอนนี้ถ้าลองคลิก Start ก็จะสามารถเห็น Emulator แล้วครับ

อย่างไรก็ตาม Emulator ที่มีตอนนี้ จะยังไม่สามารถใช้งานกับ adb ได้ครับ เพราะมันไม่รู้จักกัน เราต้องเชื่อม emulator กับ adb เข้าด้วยกันก่อน เพื่อให้รันหรือติดตั้งโปรแกรมได้

6. กลับไปที่หน้า VirtualBox จากนั้นให้คลิกที่ปุ่ม Settings แล้วเลือกเมนู Network



ในหัวข้อ Attached to: ถ้าเลือกแบบ Bridged Adapter แล้วมีรายการชื่อ network card โผล่มาให้ ก็ให้เลือกแบบนี้

ถ้าไม่มีรายชื่อ network card โผล่มา ก็ต้องใช้รูปแบบอื่น เช่นในที่นี้จะใช้ NAT


จากนั้นเลือกปุ่ม Port Forwarding แล้วคลิกปุ่มสีเขียวขวามือ เพื่อสร้าง rule ใหม่ และกรอกข้อมูลตามนี้


7. จากนั้นให้ Start Emulator
8. ไปโฟลเดอร์ที่มี adb อยู่ ถ้าใครดาวน์โหลด adt bundle [5] มา ก็จะอยู่ในโฟลเดอร์ \adt-bundle\sdk\platform-tools
9. เปิดหน้าต่าง command line แล้วพิมพ์ว่า adb connect localhost


สังเกตว่าถ้าสำเร็จ จะเกิดคำว่า connected to localhost:5555

10. สามารถรันหรือติดตั้งโปรแกรม android ได้แล้วครับ

11. ถ้าจะติดตั้งไฟล์ apk เพื่อทดสอบ จะให้ง่าย ให้ย้ายไฟล์ apk ไปไว้ในโฟลเดอร์เดียวกับ adb แล้วใช้คำสั่ง
adb install xxx.apk

เมื่อติดตั้งสำเร็จ ก็จะเกิด icon ของโปรแกรมในกลุ่มของ application ให้ทดสอบได้ครับ

12. ถ้าจะรันผ่าน eclipse หรือ android studio ก็ทำได้เช่นกัน เพราะมันจะเห็น emulator ที่เราใช้งานโดยอัตโนมัติ

หมายเหตุ
  • ขั้นตอนการเชื่อมต่อระหว่าง adb กับ emulator ต้องทำเองทุกครั้งเมื่อเริ่ม emulator ใหม่

ข้อมูลอ้างอิง
[1] http://www.genymotion.com/
[2] https://www.virtualbox.org/
[3] http://www.vbox.me/
[4] http://androvm.org/blog/download/
[5] http://developer.android.com/sdk/index.html
[6] http://therockncoder.blogspot.com/2013/06/using-virtualbox-android-emulator.html
[7] http://stackoverflow.com/questions/6751911/android-emulation-on-virtual-box-in-eclipse

No comments:

Post a Comment