Debug โปรแกรมของ Android บน x86 VM (VirtualBox)

โดยปรกติแล้ว เวลาที่จะ debug โปรแกรมของ Android เราจะมีสองทางเลือก ระหว่าง

  1. Deploy บนเครื่องจริง
  2. กับ ใช้ Android Virtual Device

ซึ่งทั้งสองทางเลือกนั้นต่างก็มีข้อเสีย ในขณะที่เครื่องจริงนั้นเราอาจจะไม่ได้อยากพกไปด้วย (เกะกะ) แถมต้องต่อสายมากมาย ส่วน AVD นั้นก็อืดอภิมหาอืด

หลังจากที่หาวิธี Debug ที่สะดวกกว่าการใช้อุปกรณ์จริง แต่ก็ทำได้งานได้เร็วพอที่จะใช้งานได้จริง (เพราะโน๊ตบุ๊คผมนั้นมันอืดเป็นปรกติอยู่แล้ว พอรัน AVD เข้าไปก็จะยิ่งอืดเข้าไปอีก) ก็พบว่ามีอีกวิธีนึงก็คือการรัน Android บน x86-based Virtual Machine โดยอาจจะเป็น VMWare หรือ Oracle VirtualBox หรืออื่น ๆ ก็ได้

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

เราสามารถเอา iso จากเวปไซท์ Android-x86 มาติดตั้งลงบน Virtual Machine ได้เลย แต่ว่า ปัญหาคือ Android นั้นออกแบบมาสำหรับโทรศัพท์มือถือ/แท๊บเบล็ต และ โทรศัพท์มือถือเกือบทั้งหมดไม่มีพอร์ท Ethernet ซึ่ง VM ส่วนใหญ่จะใช้พอร์ทนี้ในการเชื่อมต่อกับเครื่อง Host ดังนั้นเราจึง Debug ไม่ได้... สำหรับ Android-x86 นั้นมีการเพิ่มส่วนการรองรับ Ethernet เข้ามาก็จริง แต่ก็ยังไม่รองรับ Android 3 (Honeycomb) และ Android 4.0 (Ice Cream Sandwich)

แต่เรายังมีความหวังอีกทาง เมื่อมีอีกหน่อนึงพยายามที่จะทำให้ Android AOSP นั้นทำงานได้บน Oracle VirtualBox หนุ่มรายนี้ชื่อนาย Dan แห่งเวป BuilDroid ซึ่งเจ้าหนุ่มคนนี้นั้นสามารถทำให้ Android 4 AOSP นั้นสามารถรันบน VirtualBox ได้แล้ว (แต่ยังไม่สมบูรณ์) ส่วนตัวผมยังคงโชคร้าย หลังจากที่ลองดาวน์โหลดมาใช้แล้วก็พบว่าเกิด Kernel Panic ระหว่างการบูท สันนิษฐานว่าผมใช้ เครื่องที่ใช้ CPU AMD ซึ่งไม่เหมือนชาวบ้านเขา

เหมือนความหวังทั้งสองด้านจะมืดไป แต่เดี๋ยวก่อน นาย Dan ได้สร้างของอีกอย่างขึ้นมา นั่นคือ เขานำเอา Android-x86 มารวมกับ Patch ที่เขาเขียนขึ้นมา และ ไอ้ Patch ตัวนี้นั้นมันสามารถใช้งานบนเครื่องผมได้ล่ะ !! คุณสามารถเอามาลองได้จากหน้านี้ครับ

ติดตั้ง Android 4.0 บน VirtualBox

ก็เริ่มจาก ดาวน์โหลดไฟล์ iso จากลิงค์ข้างบนมาก่อนนะครับ

ต่อจากนั้นก็เปิด Oracle VirtualBox ขึ้นมา เลือก New ที่ทูลบาร์ด้านบนเพื่อที่จะสร้าง VM ใหม่ครับ

ก็จะขึ้น Wizard ดังรูป คลิ๊ก Next ไป

ต่อไป ใส่ชื่อ ตามด้วย เลือก OS Type เป็น Linux และ Version Other Linux ครับ

ต่อไปก็ กำหนดขนาดของหน่วยความจำหลัก เครื่องโน๊ตบุ๊คผมมันแรมน้อยครับ ดังนั้นก็เลยต้องเลือกน้อยหน่อย ผมคิดว่าขั้นต่ำควรจะ 512MB แต่อันนี้ไม่เคยลองต่ำกว่านี้เหมือนกัน

ต่อไปก็คือ Hard Disk อันนี้แล้วแต่สะดวกเหมือนกัน ผมเลือกที่จะสร้างใหม่ โดยจะใช้ขนาด 8GB ครับ (เอาเข้าจริง ๆ ใช้ไม่ถึงหรอกครับ อันนี้แค่เผื่อเฉย ๆ)

พอเลือกที่จะสร้างจะขึ้น Wizard สำหรับสร้าง Disk ใหม่ ตรงนี้ตามสะดวกครับ

เลือกเป็น Dynamic Allocation จะได้ประหยัดพื้นที่ HDD ครับ

ใส่ชื่อและเลือกขนาด ผมเลือกเป็น 8GB แต่จริง ๆ แล้วตัว Android X86 เองจริง ๆ น่าจะกินที่ไม่เกิน 1GB ครับ อันนี้เผื่อไว้เฉย ๆ

ถึงตรงนี้ Disk ก็จะถูกสร้างละ

สุดท้าย VM ก็จะถูกสร้างครับ คลิ๊ก Create ไปเลย

ทีนี้ก็จะเห็น VM ตัวใหม่ขึ้นมาแล้ว (ผมให้ชื่อว่า Android 4 x86) แต่ยังครับ อย่าเพิ่งกด Start กดไปตอนนี้ก็ไม่ได้อะไรขึ้นมาครับ

ขั้นต่อไปจะเริ่มการตั้งค่า VM ล่ะครับ เลือก Settings เลยครับ จะขึ้นหน้าจอแบบนี้

เลือก System จะเห็นว่า หน้า Enable absolute point device จะถูกติ๊กอยู่ ตรงนี้ต้องเอาออกครับ ไม่เช่นนั้นพอเปิด Android ขึ้นมา ตัว Pointer จะไม่แสดงขึ้นมา ทีนี้จะหาไม่เจอครับว่าเมาส์อยู่ตรงไหน 555

ต่อไป เลือก Storage คลิ๊กตรงไอคอนรูป CD ที่เขียนว่า Empty แล้วกดปุ่มรูป CD ด้านขวา

แล้วเลือก iso ไฟล์ที่ดาวน์โหลดมาครับ (ไม่มีรูปเพราะไม่ได้ลงโปรแกรม capture ดีๆ ไว้ 555) ก็จะออกมาแบบนี้ครับ

สุดท้าย ตรงหน้า Network เลือก Attached to : Host-only Adapter ตรงนี้จริง ๆ สามารถเลือกเป็นแบบอื่นก็ได้ ขอแค่ให้เครื่องเราเห็น VM และตัว VM จะต้องถูกแจก IP ด้วย DHCP (ซึ่งในโหมด Host-Only จะแจก IP ให้ครับ) แต่ในตอนนี้เอาเป็นอันนี้ก่อนครับเพื่อความสะดวก

เสร็จก็กด OK ปิดได้เลยครับ

ทีนี้เราจะเริ่มติดตั้ง VM จริง ๆ กันละ กด Start ได้เลย

พอเริ่มแล้ว ก็รอนิดนึง มันจะบูทครับ ก็จะเข้าหน้า Boot Loader ก็เลือก Installation

รออีกนิด มันจะมีตัวหนังสือมากมาย แล้วจะเข้ามาหน้านี้ เป็นการสร้าง Partition บน Disk ครับ เลือก Create/Modify partitions

ก็เข้าหน้าสร้าง Partition เลือก New เลยครับ

เลือกเป็น Primary Partition นะครับ (จริง ๆ คิดว่าไม่เกี่ยว แต่เลือกไปเถอะ)

ใส่ขนาด ผมก็ใส่เต็มไปเลยนี่ล่ะ ง่ายดี

ถึงตรงนี้ เราเลือกที่จะสร้าง partition แล้ว (แต่ถึงขั้นนี้ยังไม่ได้สร้างจริง ๆ ครับ) ต่อไปเลือก Boot เพื่อให้ partition นี้มันบูทได้ (อันนีก็คิดว่าไม่เกี่ยว แต่ใส่ไปเถอะ)

เลือกพาร์ทิชั่น (ซึ่งมีอันเดียว)

ต่อไปเลือก Write เพื่อที่จะบันทึกสิ่งที่เราทำมาทั้งหมดลงไป ถ้าเราไม่กด Write ก่อนออกจากหน้านี้ ก็จะไม่มีอะไรเกิดขึ้นครับ (ที่ทำมาหมดก็หายหมด)

ยืนยันเสียหน่อย พิมพ์ yes แล้วกด enter

สุดท้ายเลือก quit เพื่อออก

ต่อไปก็เลือก partition ที่เราเพิ่งสร้างเสร็จครับ เราจะติดตั้ง android ลง partition นี้แหละ

ตัวติดตั้งจะฟอร์แมท partition ของเรา ก็เลือกเป็นอันไหนก็ได้ครับแล้วแต่ชอบ แต่ผมเลือก ext3 นะ (อันอื่นไม่เคยลอง)

ยืนยันอีกสักที

เริ่มฟอร์แมทละ

ต่อไปจะติดตั้งตัว Boot Loader (ถ้าไม่มีจะบูทไม่ได้) ตอบ Yes ไปเลย

อันนี้จะถามว่า จะทำให้ /system นั้นเขียนได้มั้ย ผมคิดว่าเราไม่จำเป็นต้องไปปกป้องอะไรมัน (ถ้าพังก็ลงใหม่) ดังนั้นทำให้มันเขียนได้จะมีประโยชน์มากกว่าครับ (โดยเฉพาะตอนที่พยายามจะติดตั้ง GAPP)

ติดตั้ง Android 4 อย่างรวดเร็ว

อันนี้จริง ๆ คือติดตั้งเสร็จละ แต่ว่า ... สร้างตัว Fake SD Card ไปเลยดีกว่า เจ้านี่จะทำตัวเหมือนเป็น SD Card ครับ ถ้าโปรแกรมที่เราจะดีบั๊กใช้ SD Card เราก็ควรจะ Enable ไว้ จะทำให้ชีวิตง่ายขึ้นครับ

ค่าที่ให้มาคือขนาดที่ใหญ่ที่สุดที่สร้างได้ (2GB) ก็ Enter ไปเลย

เริ่มสร้างละครับ ตรงนี้รอนานหน่อย

เมื่อสร้างเสร็จแล้วมันจะบังคับให้รีบูทครับ ก็กด Enter ไป

แต่เอ่อ ถ้าเรารีบูททั้งอย่างนี้ ... มันจะบูทกลับไปที่ DVD ตัวติดตั้งน่ะครับ ... ดังนั้นเราต้อง Reject ตัว DVD ออกก่อน

จากนั้นก็ reboot ใหม่

ของจริงมาแล้ว เลือกอันบนโลดครับ (ถ้าไม่เลือกภายใน 5 วินาทีมันก็จะเลือกอันบนสุดให้อยู่ดี)

เข้า Android Boot Loader ละครับ เย้

ก็เป็นอันเข้าได้เรียบร้อยแล้วครับ 😉 เป็น Android 4.0.3 นะครับ

เริ่มใช้ Eclipse กับ VM ที่เพิ่งสร้างเสร็จ

ต่อไปก็เริ่มดีบั๊กกันจริงจังละครับ 😉 เริ่มจากเลือก Terminal ขึ้นมาก่อน

ที่ Terminal พิมพ์คำสั่ง netcfg จะเห็นว่ามี interface ที่ UP อยู่สองตัว ตัวแรกคือ lo หรือ loop back ซึ่งเราไม่ใช้ อีกตัวก็คือ eth0 จดเลข IP เอาไว้นะครับ

ต่อไป กลับไปที่ host เปิด command prompt ขึ้นมา (บน Windows ก็เปิด Command Prompt บน Mac/Linux ใช้ Terminal) เข้าไปยัง Folder ที่เก็บตัว Android SDK ไว้นะครับ

 

แล้วเข้า folder ที่ชื่อว่า platform-tools

พิมพ์คำสั่ง adb connect <เลขไอพีที่จดไว้> ดังนี้ครับ

เมื่อต่อได้สำเร็จจะขึ้นข้อความข้างล่าง ถือว่าประสพความสำเร็จเรียบร้อย ปิด command prompt/terminal ได้เลยครับ

ต่อไปก็ไปที่ Eclipse ใครที่ยังไม่เปิดก็เปิดซะนะครับ ตอนรันโปรแกรม ที่หน้าจอ Android Device Chooser จะปรากฎของเครื่อง VM ที่เราเพิ่ง connect เข้าไป แบบนี้ครับ

ก็เลือกซะแล้วกด OK แล้วโปรแกรมเราก็จะรันขึ้นมาได้แบบนี้ครับ

แค่นี้ก็รันได้ Debug ได้แล้วล่ะครับ :-)

อ้างอิง : Nuxeo Developers Blog, Android-x86, Buildroid

Wutipong Wongsakuldej

Programmer, interested in frontend applications, music and multimedia.

Latest posts by Wutipong Wongsakuldej (see all)

One thought on “Debug โปรแกรมของ Android บน x86 VM (VirtualBox)

Leave a Reply

Your email address will not be published. Required fields are marked *