เขียนแอนดรอยด์มาก็นาน เล่นโน่นเล่นนี่มาก็เยอะ แต่ถ้าพูดถึง Android Emulator เรากลับใช้อยู่ไม่กี่ตัว เพราะตัวที่ใช้อยู่ก็โอเคแล้ว (เจอตัวที่ถูกใจแล้วนั่นเอง) และปกติก็จะเทสต์บนเครื่องจริงเป็นหลัก
แต่วันก่อนก็รู้สึกว่าอยากทำความรู้จักกับ Emulator เพิ่มเติมว่าในตลาดมีตัวไหนให้เล่นบ้าง เผื่อเจอตัวเจ๋งๆแล้วจะได้ไปใช้ตัวนั้นยาวๆและจะได้แนะนำคนอื่นได้ ก็เลยใช้เวลา 1 วันเต็มๆไล่เล่นทีละตัวๆและก็ได้ข้อสรุปออกมา เลยเขียนเป็นบล็อกให้อ่านกันว่าสำหรับเนยแล้ว Emulator แต่ละตัวมีข้อดีข้อเสียยังไงและตัวไหนดีที่สุดสำหรับเนยครับ =D
Android Virtual Device (AVD) + HAXM
เริ่มต้นด้วยตัวมาตรฐานที่มาพร้อม Android SDK อย่าง Android Virtual Device (AVD) เลยละกันครับ
AVD เป็น Emulator ที่ถูกสร้างมาโดยทีมแอนดรอยด์โดยตรง เลยจะได้รอมตัวล่าสุดมาทดสอบเสมอๆ และทำงานบน Virtualizer อย่าง QEMU
ซึ่งถ้าพูดถึง AVD แต่ก่อนนักพัฒนาคงจะเข็ดขยาดกันมาก เพราะมันทำงานช้ามากกกกก จากการที่ System Image แต่ก่อนถูกสร้างมาเป็น ARM ซึ่งประสิทธิภาพการทำงานบน QEMU นั้นถือว่า "เลวร้าย" เลยก็ว่าได้
แต่โชคยังดีในแอนดรอยด์เวอร์ชันหลังๆ ทีมพัฒนาแอนดรอยด์ได้ทำตัว System Image ที่เป็น x86 ออกมาแล้ว ผนวกกับการติดตั้ง Hardware Accelerated Execution Manager (HAXM) ซึ่งจะช่วยนำ Virtualization Technology (VT) ของ CPU Intel ตัวใหม่ๆมาช่วยเร่งการทำงานของ AVD ผลคือการทำงานทุกวันนี้อยู่ในระดับ "ลื่นมาก" และน่าพอใจมาก สามารถใช้งานจริงได้เลยครับ
การสร้าง Emulator: สามารถเลือก Hardware ตระกูล Nexus หรือสร้าง Hardware Profile เองได้ และมี ROM มาตรฐานให้เลือกครบทุกเวอร์ชัน (ดาวน์โหลดได้จาก Android SDK)
ขนาดของรอม: เฉลี่ย 100MB / OS Version
การกินทรัพยากร: AVD ถือว่ากินทรัพยากรเครื่องสูงมากทั้ง CPU และแรม
โดยบน Mac OS X จะมี Wired Memory ถูกใช้เพิ่มขึ้นมาอีกพอสมควร รวมๆแล้วตกลง AVD จะกินแรมไปร่วม 2GB เลยทีเดียว
และประสิทธิภาพของ QEMU ก็ไม่สู้ดีนัก หากจะใช้ต้องมีแรมอย่างน้อย 8GB พร้อม CPU ที่แรงหน่อย แล้วจะทำงานได้อย่างไม่มีปัญหาครับ แต่ถ้าเครื่องสเปคต่ำ อาจจะมีปัญหาเรื่องประสิทธิภาพได้
ความเสถียร: ความเสถียรถือว่าน่าพอใจ แต่หลายๆที System Image ก็มีบั๊กโผล่มาให้เห็นเรื่อยๆ บางทีเปิดขึ้นมาก็แครชไปดื้อๆ หรือบางทีแอปต่างๆที่มากับรอมก็ทำงานได้ไม่สมบูรณ์แบบ
แต่โดยรวมถือว่าใช้งานได้ ไม่ได้น่าหงุดหงิดหรืออึดอัดใจมากมายครับ
การทดสอบ Google APIs: สามารถทดสอบ Google APIs อย่างเช่น Google Maps บน AVD ได้ โดยเลือกใช้ System Image ประเภท Google APIs แต่อย่างไรก็ตาม AVD จะไม่มีแอปของ Google Play Services เช่น Google Play Store ให้ใช้แต่อย่างใด
การติดตั้ง Google Play Services: สามารถติดตั้งเองได้ด้วยการก็อปปี้ไฟล์ APK ที่เกี่ยวข้องเข้าไป แต่ก็เอ๋อๆเดี้ยงๆพังๆอยู่พอสมควร
ฟังก์ชั่นเสริม: อีกเรื่องน่าเศร้าของเจ้า AVD คือ ฟังก์ชั่นเสริมต่างๆสนับสนุนหมด ไม่ว่าจะเป็นการทดสอบ Sensor อย่าง GPS หรือ Fingerprint Scanner รวมถึงการสเกลหน้าจอ แต่ปัญหาคือ ... ต้องทำผ่าน Command Line ด้วยการยิงผ่าน Telnet เท่านั้น ! โดยช่องทางนี้เราเรียกมันว่า Emulator Console
ยกตัวอย่างเช่นถ้าอยากจะสเกลหน้าจอให้มันเล็กใหญ่ ลากๆไม่ได้นะครับ ต้องพิมพ์เอา ... (บ้าที่สุด)
หรือถ้าจะสั่ง GPS ก็ต้องพิมพ์ใน Telnet ไปว่า
geo fix <longitude> <latitude>
ส่วน Sensor บางจำพวกเช่น Accelerometer ไม่สามารถจำลองได้ แต่จะมีวิธีต่อจากเครื่องจริงเพื่อเอาค่าจาก Sensor มาใช้ใน Emulator แต่ก็ลำบากเกินไป
และจากเท่าที่ลองไปหาๆดูว่ามี Tools ตัวไหนที่ทำออกมาเป็น GUI แล้วยิง Telnet ให้เราบ้างมั้ย ก็พบว่ามีบ้างแต่ใช้ยากทุกตัวเลย สรุปคือพวกฟังก์ชั่นเสริมใช้งานได้แต่ไม่ Practical อย่างรุนแรง ใช้แล้วหงุดหงิดมากแน่นอนครับ หากอยากรู้เพิ่มเติมเกี่ยวกับ Emulator Console สามารถเข้าไปดูได้จากหน้า Using the Emulator ครับ
ส่วนเรื่องการ Capture หน้าจอ สามารถทำได้ผ่าน adb แต่ค่อนข้างช้ามากอย่างมีนัยสำคัญ
แต่ไม่สามารถ Record Screen เป็นภาพเคลื่อนไหวได้ เพราะ System Image ไม่มีคำสั่ง screenrecord
มาด้วย
ราคา: ฟรี
สรุป: หากทดสอบแอปเบื้องต้น AVD สามารถใช้ได้จริงครับ เป็นหนึ่งตัวที่เราใช้ทดสอบแอปจริงๆของเรา ข้อดีของมันคือมันมี System Image ตัวใหม่ๆให้ใช้เสมอ เช่นตอนที่ Android 6.0 ออกมาใหม่ๆ หากอยากจะทดสอบก็มีแค่ AVD นี่แหละที่จะทดสอบได้
แต่อย่างไรก็ตาม เราก็ยังรู้สึกว่า AVD นั้นเป็น Emulator ที่ไม่สมบูรณ์แบบและเหมือนจะยังทำไม่เสร็จยังไงก็ไม่รู้ ทั้งเรื่องฟังก์ชันเสริมและประสิทธิภาพของ QEMU ที่ยังไม่ค่อยดีเทียบกับ Virtualizer ตัวอื่น หากใช้แล้วรู้สึกว่าโอเคก็สามารถ AVD ไปเลยได้ แต่หากใช้แล้วรู้สึกช้าหรือเริ่มมีการสามารถทดสอบแอปที่มีการใช้ฟีเจอร์อะไรแปลกๆ เรามีตัวอื่นที่ดีกว่ามาแนะนำครับ
OS Supported: Windows, Mac OS X, Linux
คะแนน: 4/5
Genymotion
Genymotion เป็น Emulator ที่เราใช้ทำโน่นทำนี่เล่นมานานพอสมควร เพราะมันทำมาได้ดีมาก และแก้ปัญหาความอืดอาดยืดยาดของ AVD ได้เป็นอย่างดี
Genymotion เป็นผลิตภัณฑ์ของนักพัฒนากลุ่มหนึ่งที่อึดอัดกับความช้าของ AVD ในรุ่นแรกๆ ก็เลยคอมไพล์โค้ดแอนดรอยด์ด้วยตัวเองและเอามารันบน VirtualBox ผลปรากฎว่ามันทำงานได้ลื่นและดีเลิศล้ำน้ำตานอง และทำออกมาเป็นผลิตภัณฑ์เชิงพาณิชย์อย่างทุกวันนี้นั่นเอง
ความเจ๋งของมันคือประสิทธิภาพที่อยู่ในระดับ "ไม่น่าเชื่อ" เปิดเร็ว บูทเร็ว ทำงานลื่นมากๆๆๆๆ จึงเป็นหนึ่งในตัวที่เราเลือกใช้มาตลอดนั่นเอง
การสร้าง Emulator: เนื่องจาก Genymotion เป็นผลิตภัณฑ์จาก 3rd Party ทำให้ไม่ได้จำกัด Hardware เฉพาะ Nexus อีกต่อไป แต่เราสามารถหา Hardware ของทุกยี่ห้อได้จากในนี้ และมี OS ค่อนข้างครบถ้วนเลย ล่าสุดก็มีตัว Preview ของ Android 6.0 Marshmallow ออกมาแล้วด้วย
ขนาดของรอม: เฉลี่ย 200MB / OS Version
การกินทรัพยากร: Genymotion ทำงานเร็วกว่า AVD อย่างจับต้องได้ กิน CPU และแรมน้อย ราวๆ 100MB-200MB เท่านั้น
อย่างไรก็ตาม บน Mac OS X จะแอบกินแรมจากโปรเซสที่ชื่อว่า VBoxHeadless ที่เกิดขึ้นมาพร้อม Genymotion ตอนรัน
บน Mac OS X เลยใช้รวมๆแล้ว 1GB เต็มๆเลยทีเดียว ดังนั้นเลยแนะนำว่าหากใช้บน Mac จะต้องมีแรมพอสมควรครับ
ความเสถียร: Genymotion เป็น Emulator ที่เสถียรมาก ทำงานได้นิ่งและไม่มีปัญหามากวนใจเท่าไหร่ ยกเว้นถ้าเปิดนานๆอาจจะมีค้างบ้าง ก็ปิดแล้วเปิดใหม่ แต่นานๆที่ว่านี่คือ 1 วันเต็มๆ ซึ่งไม่น่ารำคาญเท่าไหร่
การทดสอบ Google APIs: ไม่สามารถทดสอบได้จาก ROM ที่มันเตรียมไว้ให้
การติดตั้ง Google Play Services: สามารถติดตั้งได้ง่ายมากโดยใช้วิธีตามบล็อกที่เขียนก่อนหน้านี้ วิธีการติดตั้ง Google Play Services บน Genymotion และหลังจากติดตั้ง Google Play Services ไปแล้ว ก็จะสามารถทดสอบ Google APIs ได้สมบูรณ์แบบเหมือนทดสอบบนเครื่องจริงทุกประการครับ
ฟังก์ชันเสริม: ฟังก์ชันต่างๆมีครบ ไม่ว่าจะเป็น GPS, กล้อง, แบตเตอรี่หรือการ Resize หน้าจอ และทุกอย่างสามารถทำได้ผ่าน GUI อย่างง่ายดาย ไม่เหมือน AVD ที่ต้องสั่งผ่าน Command Line
อีกทั้งยังสามารถ Capture Screen ผ่าน adb ได้โดยสะดวกและเร็วมาก เร็วกว่า AVD หลายเท่าตัว
ส่วนฟังก์ชันการ Record Screen เป็นภาพเคลื่อนไหวมีปุ่มให้ใช้แต่ไม่สามารถ Capture ได้นะ อันนี้ไม่แน่ใจว่าเพราะอะไร และก็มีฟังก์ชันเสริมอีกจำนวนหนึ่งที่สามารถใช้ได้ แต่ต้องซื้อ License เช่นการจำลองการโทรเข้าหรือโทรออก การจำลอง Multi Touch เป็นต้น สามารถดูลิสต์เต็มๆได้จาก https://www.genymotion.com/#!/store
ราคา: ฟรีสำหรับการทดสอบแอปที่ไม่ได้ใช้ในเชิงพาณิชย์ และราคาตามด้านล่างสำหรับคนที่ใช้ในเชิงพาณิชย์ครับ
สรุป: Genymotion เป็น Android Emulator สำหรับนักพัฒนาที่ทำมาได้สุดยอดและตอบโจทย์มากในทุกมิติ เร็ว กินทรัพยากรไม่เยอะ จากประสิทธิภาพรอมที่ทำมาอย่างดีและ VirtualBox ที่ทำงานได้รวดเร็ว จึงเป็น Emulator ที่เราแนะนำให้ใช้เป็นอย่างยิ่ง แต่อย่าลืมนะว่ามันไม่ฟรี หากคุณใช้ในเชิงพาณิชย์ เช่นคิดจะแปะ Ads บนแอป อย่าลืมซื้อ License ด้วย คุ้มค่าทุกบาททุกสตางค์ที่เสียไปแน่นอนครับ
ปัญหาที่เจออยู่บ้างคือพอเปิดทิ้งไว้สักพักมันจะตัดการติดต่อ adb ไปดื้อๆ ก็ทำอะไรไม่ได้นอกจากปิดแล้วเปิดใหม่ ซึ่งก็ไม่ใช่ปัญหาอะไร เพราะมันเปิดเร็วมากนั่นเอง
OS Supported: Windows, Mac OS X, Linux
คะแนน: 5/5
Download: Genymotion
Xamarin Android Player
หรือเรียกย่อๆว่า XAP เป็น Emulator อีกตัวที่น่าสนใจ มาจากค่ายผู้พัฒนา Development Tools สำหรับการพัฒนาแอปแบบ Cross Platform อย่าง Xamarin นั่นเอง โดย Xamarin Android Player ถูกปล่อยออกมาให้ใช้ฟรีแบบไม่มีกั๊กฟีเจอร์ใดๆเลย และถือเป็นอีกตัวที่ทำงานได้อย่างลื่นไหลน่าสนใจเพราะมันไปทำงานบน VirtualBox เช่นเดียวกับ Genymotion นั่นเอง
แต่ถึงจะปล่อยออกมานานแล้ว ก็ยังขึ้นว่าเป็น Preview Release อยู่ และก็เป็นไปตาม Stage ที่เขียนไว้ XAP ปัญหาก็ยังมีมาให้เห็นเรื่อยๆ ยกตัวอย่างเช่นบูทไม่ขึ้นและค้างไปเลย ไม่สามารถเปิดใช้ได้อีกเป็นต้น
การสร้าง Emulator: มี Device และ OS ให้ดาวน์โหลดไม่เยอะ แต่ก็ครอบคลุมการทดสอบทั่วไป แล้วก็มี Marshmallow ให้ดาวน์โหลดแล้วด้วยนะ! ตามนี้ครับ
ขนาดของรอม: เฉลี่ย 200MB / OS Version
การกินทรัพยากร: ใช้ทรัพยากรทั้ง CPU และ RAM ไม่สูง
ส่วนบน Mac OS X จะกินรวมๆแล้ว 1GB ครับ
ความเสถียร: ความเสถียรถือว่าต่ำมาก ที่ผ่านมาบูทขึ้นบ้างไม่ขึ้นบ้าง เดี๋ยวก็พัง เดี๋ยวก็ต่อไม่ติด จึงใช้จริงแทบไม่ได้เลย ถือว่าคนละคลาสกับ Genymotion เลยก็ว่าได้
แอปต่างๆก็ใช้ได้บ้างไม่ได้บ้าง
และนี่เป็นเหตุผลหลักๆที่ไม่แนะนำให้ใช้จริงเท่าไหร่ครับ มันยังอยู่ระหว่างการพัฒนาจึงไม่สามารถคาดหวังเรื่องความเสถียรใดๆได้
การทดสอบ Google APIs: ไม่สามารถทดสอบ Google APIs ได้ด้วยตัวรอมเอง
การติดตั้ง Google Play Services: ติดตั้งได้โดยใช้วิธีตามบล็อกนี้ Installing Google Play Services in XAP และคุณจะสามารถทดสอบ Google APIs ได้เหมือนมือถือจริงครับ
ฟังก์ชันเสริม: มีอยู่จำนวนนึงแต่ไม่มากตามภาพด้านล่าง สามารถควบคุมผ่าน GUI ได้ทั้งหมด
รวมถึงสามารถจำลอง MultiTouch ได้ด้วย
ราคา: ฟรี
OS Supported: Windows, Mac OS X
คะแนน: 2/5
Download: Xamarin Android Player
Visual Studio Emulator for Android
พักหลังนี้หลังจาก Windows (Phone) แพ้พ่ายในตลาด Smartphone ไป ทางไมโครซอฟท์ก็โฟกัสที่แอนดรอยด์มากขึ้น ถึงขนาดทำให้ Visual Studio พัฒนาแอปแอนดรอยด์ได้ ซึ่งก็ไม่น่าแปลกใจที่ทาง Microsoft จะปล่อย Android Emulator ออกมาให้ทดสอบแอปด้วยในนาม Visual Studio Emulator for Android
การสร้าง Emulator: มีเครื่องให้ดาวน์โหลดถือว่าจุใจ และมี Marshmallow แล้วด้วย ส่วน Hardware จะแบ่งเป็น Phone และ Tablet ขนาดหน้าจอและ DPI โดยแต่ละตัวจะมีข้อความกำกับไว้ว่ามันใกล้เคียงกับมือถือรุ่นไหน (Similar to)
ขนาดของรอม: 600MB - 1GB (ถือว่าค่อนข้างใหญ่เทียบกับรายอื่นๆ)
การกินทรัพยากร: กินทรัพยากรน้อยทั้ง CPU และ RAM
ความเสถียร: เสถียรดี ไม่พบข้อผิดปกติใดๆระหว่างการทำงาน
การทดสอบ Google APIs: ไม่สามารถทดสอบได้ด้วยตัวรอมเอง
การติดตั้ง Google Play Services: ติดตั้งได้ด้วยการยิงไฟล์ผ่าน SD Card จำลองและจะสามารถทดสอบ Google APIs ได้หลังจากนั้น
ฟังก์ชันเสริม: ทำมาได้ดีและครบถ้วน สามารถควบคุมผ่าน GUI ได้ทั้งหมด
สามารถบันทึกหน้าจอผ่าน adb ได้และเร็วมากด้วย รวมถึง Capture หน้าจอผ่าน Emulator โดยตรงโดยไม่ต้องผ่าน adb ก็ทำได้
อย่างไรก็ตาม ไม่สามารถ Record Screen ได้ครับ
ราคา: ฟรี
ข้อจำกัด: ใช้ได้เฉพาะบน Windows เท่านั้นและต้องเปิด Hyper-V ซึ่งจะส่งผลให้ VirtualBox ทำงานไม่ได้ ดังนั้นหากเปิดใช้ Visual Studio Emulator for Android จะไม่สามารถรัน Genymotion ได้ ต้องเลือกอย่างใดอย่างหนึ่ง
OS Supported: Windows
คะแนน: 4.5/5
สรุป: Visual Studio Emulator for Android ถือเป็นอีมูเลเตอร์ที่ทำงานได้อย่างสมบูรณ์แบบ ประสิทธิภาพดีเลิศและฟังก์ชั่นเสริมครบถ้วนแบบสุดๆ มีแม้กระทั่ง Accelerometer Simulator, MultiTouch และแผนที่สำหรับระบุพิกัด GPS แถมยังกินทรัพยากรน้อยมาก
ณ ตอนนี้ถือว่าเป็น Emulator ที่ดีที่สุดในบรรดาที่ทดลองเลยก็ว่าได้ ข้อเสียที่มีก็คือเรื่องของขนามรอมที่ใหญ่ไปหน่อย ใครใช้ SSD อาจจะต้องคิดหนักเลยหละ และยังจำเป็นต้องใช้ Windows เท่านั้น แถมยังต้องเปิด Hyper-V ด้วย จึงไม่สามารถทำงานร่วมกับ VirtualBox ได้
Download: Visual Studio Emulator for Android
คอมไพล์เอง
ไหนๆก็ไหนๆ เนยได้ทดลองคอมไพล์รอมเพื่อมารัน Emulator ด้วยตัวเองแล้ว ปรากฏว่าสามารถทำได้ก็จริงแต่กินเวลานานมาก และถ้าอยากได้ Configuration ที่เปลี่ยนไปก็ต้องมานั่งคอมไพล์ใหม่ ส่วนฟีเจอร์ต่างๆเช่นเรื่องของการจำลอง GPS ก็ต้องมาทำเพิ่มเอง
จากการคำนวณเวลาที่เสียไปแล้ว ส่วนตัวว่าไม่คุ้มกับการลงมือคอมไพล์เอง ใช้ตัวที่ทำมาสำเร็จรูปแล้วดีกว่า หรือแม้กระทั่งยอมเสียเงินเพื่อซื้อ License ของ Genymotion ก็ยังคุ้มกว่าครับ
Bluestacks, Andy ฯลฯ
มี Android Emulator อีกจำนวนหนึ่งที่เกิดมาเพื่อรันแอปแอนดรอยด์บนคอมพิวเตอร์เช่น Bluestacks และ Andy
แต่แอปเหล่านี้มีจุดประสงค์ที่ต่างกันออกไปก็คือเอาไว้รันแอปหรือเกมบนแอนดรอยด์ให้เหมือนแอปบน PC ดังนั้นจะไม่มีเค้าโครงของแอปบนโทรศัพท์มือถือให้เห็นเลย
ดังนั้นแอปจำพวกนี้จึงไม่เหมาะกับการเอามาทดสอบแอปเพื่อโทรศัพท์มือถือครับ เน้นไปที่การเอาแอปแอนดรอยด์บางตัวมาทำงานบนคอมพ์มากกว่า สำหรับนักพัฒนาแล้ว อย่าใช้พวกนี้ทดสอบแอปเป็นอันขาดครับ เสียเวลาเปล่า
ผลการตัดสิน
หากใช้ Mac OS X ส่วนตัวแล้วที่หนึ่งในดวงใจคงหนีไม่พ้น Genymotion เพราะมันทำมาดีจริงๆ หากใช้ในเชิงพาณิชย์แนะนำให้ยอมเสียเงินซื้อเถอะครับ คุ้มจริงๆ ส่วนเบอร์สองคือ AVD
แต่หากใช้ Windows เบอร์หนึ่งคงยกให้ Visual Studio Emulator for Android ละ (หากรับข้อเสียที่มีได้) แต่หากรับข้อเสียไม่ได้ ยังคงแนะนำเป็นตัว Genymotion ครับ
อย่างไรก็ตาม ข้อเสียเล็กๆของ Emulator ที่ไม่ใช่ AVD ทุกตัวคือถ้ามี OS เวอร์ชันใหม่ออกมา เช่น Android 6.0 ก็ต้องรอสักพักใหญ่ๆกว่าจะมีออกมาให้ใช้ หากอยากจะทดสอบ OS เวอร์ชันใหม่ๆทันทีที่มันเปิดตัว อันนี้ต้องพึ่ง AVD ไม่ก็มือถือเครื่องจริงตระกูล Nexus เพียงอย่างเดียวครับ
ส่วนตัวที่แนะนำว่าอย่าไปใช้มันเลยคือ Xamarin Android Player ครับ รอให้มันพัฒนาสมบูรณ์กว่านี้ก่อนละกันเนอะ
ก็หวังว่าบล็อกนี้จะมีประโยชน์ครับ สวัสดีครับ =)
ผู้เขียน: nuuneoi (Android GDE, CTO & CEO at The Cheese Factory) นักพัฒนาแบบ Full-Stack ที่มีประสบการณ์ในการพัฒนาแอพฯแอนดรอยด์มากว่า 6 ปีและอยู่ในวงการพัฒนาแอพฯมือถือมากว่า 12 ปี มีความสนใจทางด้าน Infrastucture, Service Side, Design, UI&UX, Hardware, Optimization, Cooking, Photographing, Blogging, Training, Public Speaking และรักที่จะแชร์เรื่องราวให้ผู้คนได้อ่านได้ฟังกันผ่าน Blog
|