Update cách làm mì ăn liền hơn.
Đây là bản Android đã cài đặt trên máy mình với đủ setting. Bạn import vào VirtualBox (double click) là chạy được ngay 
https://www.sugarsync.com/pf/D6597612_86853476_687578
Tạm thời chưa có link mediafire nhé 
Đã update cách config với NAT, dễ dàng và hiệu quả hơn
================================================== =======================
Chào các bạn!
Hôm nay Wazi sẽ hướng dẫn các bạn cài đặt android x86 (bản android chạy trên nền tảng x86) trên VirtualBox để lập trình dành cho các máy có cấu hình yếu 
Why androidx86?
Như các bạn đã biết, đi kèm với bộ công cụ phát triển Android (SDK) là Android Emulator để giả lập một thiết bị android. Phần mềm này thường khởi động khá là chậm và khi chạy tốn khá nhiều tài nguyên + delay, cảm giác khá là nặng nề. Nguyên nhân điều này là do nó giả lập một bộ xử lí ARM trên CPU và chạy Android OS thông qua đó thay vì tương tác trực tiếp giữa CPU với Android OS.
Và Android x86 đã giải quyết được vấn đề trên bằng việc sử dụng kiến trúc x86. (Văn chương Wazi hơi chán nói được vậy thôi
)
Action
Step 1: Download
Đầu tiên lúc nào cũng là download. Bạn vào trang sau: android-x86.org/download
Wazi khuyến khích các bạn sử dụng bản android-x86-2.x-RC1-eeepc.iso, 2.x là 2.2 hoặc 2.3 (Đơn giản là vì Wazi đã test nhiều lần, và nó cũng là bản android phổ biến hiện nay)
Tiếp theo, bạn download VirtualBox (cái này thì tự google nhé)
Download xong nhảy sang step2
Step 2: Setup
1. Cài đặt VirtualBox (dễ như ăn kẹo nên thôi ko có SS nhé)
2. Cài đặt Androidx86:
2.a Tạo mới (Bạn nào đã quen thuộc với Virtualbox có thể nhảy sang qua 2.b)
- Đầu tiên bạn khởi động Virtualbox và chọn New để tạo mới. Điền tên cho nó. Chọn OS là Linux, version là Linux 2.6 (cái version này cũng ko quan trọng lắm thì phải) rồi Next.

- Dung lượng RAM cơ bản để 256MB -> Next
- Đến phần Virtual Hard Disk bạn có thể chọn Create New hoặc sử dụng một đĩa ảo sẵn có. Ở đây Wazi giả định là tạo mới. -> Next
- Cửa sổ Virtual Hard Disk Creation Wizard hiện ra, chọn VDI -> Next
- Chọn Fixed Size -> Next. Điền dung lượng đĩa ảo này (2GB là đủ) và nơi lưu trữ nó bằng cách bấm vào hình folder ở khung Location (trong trường hợp bạn không muốn lưu nó ở vị trí mặc định). Xong bấm Next-> Create và chờ cho nó tạo đĩa

- Bấm Create lần nữa để nó hoàn tất việc tạo máy ảo này.
- Sau khi tạo xong máy ảo, vào Setting -> Storage->Ở phần IDE Controller bấm vào hình cái đĩa có dấu cộng -> Hộp thoại hiện ra -> Chọn Choose Disk rồi Browse đến cái file Androidx86… .iso vừa mới download ở trên.

- Qua bước 2.b
2.b Cài đặt Android x86
- Khởi động máy ảo vừa tạo bằng cách bấm Start. Menu Boot hiện ra chọn Install android x86 to hard disk

- Tiếp theo chọn Create/Modify Partition
- Sử dụng các phím mũi tên chọn New -> Primary -> Điền size vào (thường nó đã điền sẵn cho maximum size rồi) -> Enter
- Chọn Bootable (Sau khi chọn thì cột Flags có chữ Boot) sau đó dùng mũi tên (trái và phải) di chuyển đến Write -> Enter. Gõ “yes” vào để xác nhận

- Chờ nó write xong thì di chuyển mũi tên đến chữ Quit và Enter
- Hộp thoại Choose Partition hiện ra, chọn partition vừa tạo (sda1). Nó hỏi format thì chọn ext3 rồi OK
- Mấy cái sau OK hết (install GRUB, /system directory)
- Chờ nó cài xong thì chọn Create Fake SD Card, điền size tùy thích (khoảng 64MB chẳng hạn)
- Xong Reboot và Tắt luôn cái máy ảo đi (Mục đích là dừng nó lại để rút cái đĩa ISO ra)
- Vào Setting -> Storage -> Chọn đĩa ISO lúc nãy mount vào, nhấn dấu trừ để remove nó ra.
- Vẫn trong Setting, vào Network Chọn Adapter1 thiết lập như sau

Có thể chọn mục Attach to là Host Only Adapter hoặc Brigde Adapter đều được, nhưng Brigde yêu cầu bạn phải có 1 DHCP server để cấp IP cho cái máy ảo này (đại khái là bạn phải đang nối internet, đổi lại là với lựa chọn này bạn sẽ vào được internet trong androidx86)
- Xong OK và khởi động vào Androidx86 vừa cài đặt.
2.c Sử dụng
- Bấm Ctrl (bên phải) + I để chọn chức năng Mouse Integration (để sử dụng chuột trong máy ảo)
- Trong khi bạn bấm chuột vào màn hình lần đầu sử dụng Virtual Box sẽ có một số thông báo. Cứ OK + Don’t Show Again (sau vọc dần biết hết mà)
- Để thoát chuột khỏi màn hình bấm Ctrl (bên phải) (Tiện đây nói thêm, phím Ctrl phải mặc định là phím chức năng của máy ảo, các chức năng liên quan đều kết hợp với phím này)
- Right Ctrl + C: chuyển qua chế độ Scale.
Step 3: Kết nối với máy ảo để lập trình
Các bạn xem update bên dưới cuối bài viết để có được những lựa chọn cách làm dễ dàng hơn
- Trong khi đang dùng máy ảo, nhấn Left Alt +F1 để chuyển sang chế độ console (Left Alt + F7 để trở về màn hình bình thường)
- Gõ lệnh netcfg để tìm IP của máy ảo

- IP của nó trong trường hợp này là (eth0) 192.168.1.33
- Tiếp theo là kết nối với máy ảo bằng adb tool trong bộ SDK của Android
- Mở cmd trong Windows, vào thư mục %ANDROID_HOME%\android-sdk\platform-tools trong đó %ANDROID_HOME% là thư mục cài Android SDK (Ví dụ: D:\Program Files\Android\android-sdk\platform-tools) gõ trong đó IP là ip máy ảo vừa lấy lúc nãy. Sau khi thấy thông báo connected to… là bạn đã connect thành công.
- Để test, bật Eclipse lên và Run thử

- Đến đây coi như bạn đã thành công rồi!
Step 4: Nâng cao: Chỉnh độ phân giải cho máy ảo androidx86
- Như các bạn thấy trong hình trên máy ảo android của Wazi có tỉ lệ màn hình trông giống cái điện thoại chút (Portrait) trong khi của các bạn khi cài ra lại vuông vuông (4:3) chẳng giống ai
.
- Cách chính như sau (Đã biết dung vi là một lợi thế) 
- Trước tiên là set custom resolution cho VirtualBox. Mở cmd tìm đến thư mục cài VirtualBox (VD: D:\Program Files\Oracle\VirtualBox) rồi điền vào câu lệnh dạng sau
Code:
VBoxManage setextradata "Androidx86" "CustomVideoMode1" "640x960x16"
Trong đó Androidx86 là tên máy ảo của bạn. Bạn có thể thêm nhiều CustomVideoModel khác nhau (nhớ điền tên khác nhé)
- Tiếp theo là thêm menu với độ phân giải ở trên vào Grub của androidx86
- Khởi động androidx86, vào ở Menu Boot, chọn chế độ Debug
- Gõ lần lượt những command sau
-
Code:
mount –o remount,rw /mnt
vi /mnt/grub/menu.lst
- Trình soạn thảo vi hiện ra như sau

- Phần việc tiếp theo là tạo mới một lựa chọn Boot và thêm vào đó độ phân giải lúc nãy bằng cách thêm vào kernel option lựa chọn: UVESA_MODE=”640x960” (640x960 là độ phân giải vừa ở trên)
1. Di chuyển con trỏ đến chữ title đầu tiên rồi nhấn lần lượt 3 và Shift+y (mục đích là copy 3 dòng cùa menu đầu để paste xuông dưới cho đỡ phải gõ lại)
2. Di chuyển con trỏ xuống cuối file và nhấn p. Nó sẽ paste 3 dòng vừa copy
3. Nhấn a để vào chế độ edit, di chuyển con trỏ đến title của đoạn vừa paste để sửa lại title cho nó (cho khỏi lộn, chứ dòng này ko quan trọng lắm) Tiếp theo di chuyển đến dòng kernel, gõ thêm UVESA_MODE=”640x960” vào, đại khái nó ra như sau
Code:
…. acpi_sleep=s3_bios,s3_mode DPI=240 UVESA_MODE=480x720 SRC=/android-2.3-RC1…
Bạn có thể di chuyển con trỏ đến chỗ default để chỉnh boot mặc định vào menu này (các menu đánh số từ 0)
4. Nhấn Esc để thoát chế độ Edit
5. Nhấn :wq để write and quite (ko write là ko có gì đâu)
6. Reboot máy ảo và tận hưởng (Để màn hình chế độ Scale bằng Cách nhấn Right ctrl + C)
Kết:
Toàn bộ tutorial được viết bởi Wazi Armstrong@diendan.congdongcviet.com sau khi thao khảo nhiều bài viết trên mạng trong đó chủ yếu là bài viết này dev.blogs.nuxeo.com/2011/10/speeding-up-the-android-emulator.html
Bonus: So sánh tốc độ giữa androidx86, android emulator và nexus one

Thân ái!
Wazi Armstrong
PS: Bạn có thể download file đính kèm tutorial.zip để đọc offline (yêu cầu có M$ Word 2007 trở lên)
================================UPDATE============ =======================
Ở bước 2.b ở trên khi bạn chọn card mạng cho Android thì có 2 lựa chọn là Host Only hoặc Bridge. Host Only thì lại không vào được internet trong khi đó Bridge thì lại yêu cầu phải có DHCP Server (bất tiện khi một số mạng như công ty mình DHCP server nó cấp IP theo địa chỉ MAC chứ không cấp bừa bãi)
Vì thế mình đã tìm ra 1 cách giải quyết tối ưu (theo mình là tốt nhất)
Bạn chọn card mạng là NAT. Với lựa chọn này thì bạn có thể vào internet mà không cần DHCP server
Tuy nhiên adb lại không connect được (mặc dù netcfg vẫn hiện ip là 10.0.2.15)
Mình đã tìm hiểu và biết rằng với lựa chọn NAT, Android sẽ kết nối với bên ngoài thông qua máy tính của mình như 1 router. Trong khi đó adb làm việc ở port 5555, 5554 nên nó không thể thấy máy mình được. Đến đây chắc các bạn cũng hiểu mình nói gì 
Dùng câu lệnh port forwarding của virtualbox
Code:
VBoxManage modifyvm "AndroidVM" --natpf<1-N> [<name>],tcp|udp,[<hostip>],<hostport>,[<guestip>], <guestport>
Giải thích một chút AndroidVM là tên máy ảo android của mình
<1-N> là số thứ tự của card mạng (nếu bạn chọn cái NAT đó ở cái tab Adapter thứ nhất thì điền 1)
<name>, cái này tùy chọn, là tên của cái port forwarding này
giao thức chọn là tcp nhé
hostip, hostport, guestport, guestip thì thôi ko cần giải thích, trong đó hostip với guestip là tùy chọn
Vậy với trường hợp của mình thì câu lệnh đại khái là
Code:
VBoxManage modifyvm "AndroidVM" --natpf1 "adb, tcp,,5555,,5555"
nhớ là số 1 viết liền sau natpf và tham số sau đó phải cho vào "". Chỉ vì mình thiếu ngoặc kép (hướng dẫn nó ko nói ) làm mò mãi mới xong :(
Rồi, giờ bật Virtualbox lên, khởi động Android (có thể tường lửa sẽ hỏi, vì động đến port mà, cứ allow thôi)
Sau đó thì bật cmd lên gõ
Code:
adb connect localhost
(Thực ra thì trên cả 2 máy tính của mình đều không cần phải gõ dòng này, bật eclipse lên, bật máy ảo lên là nó tự nhận luôn, run được luôn)
Thế là xong!
Với cách làm này các bạn còn có thể test các ứng dụng web chạy trên máy tính của mình (localhost) bằng việc kết nối qua địa chỉ http://10.0.2.2/ ở trong Android mà không cần phải deploy lên server thật, vừa mất thời gian vừa chậm.
Ví dụ trên máy tính của bạn, địa chỉ cái web bạn đang phát triển là http://localhost/Hello/index.html thì trong máy ảo Android địa chỉ đó sẽ là http://10.0.2.2/Hello/index.html
Chúc các bạn thành công!
================================UPDATE============ =======================
Update nhanh phát. Tình hình là có 1 số laptop không dùng NAT được. Đành phải quay lại dùng Bridge với config như sau. (Đang vội chỉ viết đc vậy thôi)

================================UPDATE============ =======================

Nguyên bản được gửi bởi
elliwood
Mình tìm được cách giải quyết rồi.
Chia sẻ với mọi người.
Nếu trên android 3.2 hoặc 4.0 mà không kết nối internet được thì dùng cách này.
Code:
attached to: NAT
PCnet-Fast III
press alt-f1
type dhcpcd eth0
type setprop net.dns1 [your DNS for your internet provider] mine is 75.75.75.75
press alt-f7 to go back to GUI