10 January 2015

วิธีแก้ปัญหาเกี่ยวกับ HAXM เมื่อเปิด Emulator AVD

Updated on


        ช่วงนี้มีผู้ที่หลงเข้ามาอ่านมือใหม่หลายๆท่านเจอปัญหานี้กัน ก็เลยหยิบเอามาทำเป็นบทความเลยดีกว่า ซึ่งเป็นปัญหามาจากการที่ผู้ที่หลงเข้ามาอ่านพยายามจะเปิด Emulator AVD ขึ้นมาเพื่อทดสอบแอพฯ แต่ทว่าเปิดไม่ได้เพราะขึ้นข้อความดังกล่าว (หรือคล้ายๆกัน)

        ปัญหานี้เกิดมาจากการที่พยายามเปิด Emulator AVD ที่กำหนดสถาปัตยกรรมเป็น x86 ซึ่งการกำหนด CPU ดังกล่าวเนี่ยแหละที่มีเงื่อนไขว่าต้องติดตั้ง HAXM ด้วยถึงจะทำงานได้

        HAXM คืออะไร?

        HAXM ย่อมาจาก Hardware Accelerated Execution Manager ของทาง Intel เอง ซึ่งเป็น Engine ที่จะช่วยให้เครื่องของนักพัฒนาสามารถใช้ Emulator ได้ลื่นขึ้นและเร็วขึ้น โดยใช้ความสามารถจาก Intel Virtualization Technology (Intel VT) ที่เป็นคุณสมบัติบน CPU Intel ที่ใส่มาให้ในรุ่นหลังๆ


        แต่ทว่าเจ้า HAXM ไม่ได้ติดตั้งมากับเครื่อง เพราะ System Driver ที่ต้องติดตั้งเพิ่มเติมเอง ดังนั้นจึงเกิดปัญหาหากนักพัฒนาไปกำหนดให้ AVD ให้ใช้ CPU เป็น x86 แต่ทว่าดันไม่ได้ลง HAXM ไว้ด้วย

        สำหรับวิธีแก้ปัญหานี้มีอยู่ 3 วิธีหลักๆด้วยกันดังนี้


วิธีแรก ลง HAXM ให้เรียบร้อยซะ

        ก่อนอื่นต้องมั่นใจว่าเครื่องคอมพิวเตอร์ที่ใช้นั้นรองรับ Intel VT หรือไม่ เพราะถ้าเครื่องไม่รองรับ ต่อให้ลง HAXM ไปก็ช่วยอะไรไม่ได้อยู่ดี (ซึ่งตระกูล Intel Core i3 i5 หรือ i7 ก็รองรับหมดแล้ว)

        จากนั้นก็ให้ทำการติดตั้ง HAXM ผ่าน Android SDK Manager โดยจะอยู่ใน Extras > Intel x86 Emulator Accelerator (HAXM installer)




วิธีที่สอง แล้วทำไมต้องใช้ x86?

        เป็นเรื่องตลกเล็กน้อยที่นักพัฒนาส่วนใหญ่ที่เจอปัญหานี้ กลับไม่รู้เหมือนกันว่าทำไมถึงต้องไปเลือก x86 ด้วย ทั้งๆที่มี CPU แบบ ARM ให้เลือกอยู่แล้ว ซึ่งน้อยคนมากที่เลือก x86 เพราะว่าอยากจะทดสอบแอพฯบน x86

        ซึ่งการเขียนแอพฯโดยปกติแล้วจะไม่ต้องกังวลเรื่องสถาปัตยกรรมของ CPU เลย เพราะว่า API พื้นฐานนั้นรองรับบน ARM และ x86 ได้เป็นอย่างดีอยู่แล้ว

        ดังนั้นถ้าไม่มีความจำเป็นต้องทดสอบบน x86 ก็แนะนำให้กลับไปติดตั้ง System Image ที่เป็น ARM แทน เพื่อที่ว่าจะได้ไม่ต้องมานั่งเจอปัญหานี้




วิธีที่สาม ไปใช้ Genymotion เถอะ

        ผู้ที่หลงเข้ามาอ่านอาจจะรู้บ้างแล้วว่าเจ้าของบล็อกนั้นไม่ได้ปลื้มกับ AVD มากนัก เพราะว่ามันช้า อืด ช้า และอืด ต่อให้ลง HAXM แล้วใช้ x86 ก็ตาม ก็ยังไม่เป็นที่พอใจซักเท่าไร ดังนั้นจึงแนะนำให้เปลี่ยนไปใช้ Genymotion ที่เป็น Android Emulator ที่ลื่นกว่า เร็วกว่า แถมมี Tools ต่างๆช่วยให้นักพัฒนาทดสอบได้ง่ายขึ้นด้วย [Android Dev Tips] Genymotion - Android Emulator สุดเจ๋งสำหรับนักพัฒนา [การติดตั้งใช้งาน]