Android-x86虛擬機安裝配置網上有很多,但是全部說明白的確不多,希望這篇文章能把主要的配置介紹給您,幫助您少走一些彎路。
本文分別針對VMWare和Virtual Box兩種虛擬機介紹安裝配置方法,並描述了如何使用eclipse進行調試。
一、安裝Android-x86虛擬機
1、使用vmware安裝Android-x86
在http://www.android-x86.org/download下載安裝包,下載eeepc版本的iso文件,本例以4.0 RC2版本為例。
運行vmware新建虛擬機:
2、virtual box安裝Android-x86
在 Virtual Box 中創建一台新的機器:
- target OS(目標 OS): 選擇 Linux
- target OS version(目標 OS 版本): others
- 我選擇了 1GB 內存和 1 個 CPU(其他選項保留默認值)
- 增加一個新的硬盤:VDI drive,動態大小,512M
- 在 storage(存儲)選項中添加一個指向所下載 iso 鏡像的 CDROM
3、開始安裝
從 boot(啟動)菜單中選擇 install to hard disk(安裝到硬盤)。
接下來創建分區,依次選擇new、primary、bootable、write創建一個可引導的主分區。
接下來兩步選擇yes,其中第二步為開啟GRUB管理模式,可以用於調試程序。
二、Android-x86 有內建的快捷鍵
較常用的有:
- Alt-F1 = 進入 console 模式
- Alt-F7 = 回到 GUI 模式
- Alt-F9 = 圖形界面
- Alt-F10 = 畫面旋轉 180 度
- Alt-F10 = 畫面旋轉 180 度
- Alt-F11 = 畫面向左旋轉 90 度
- Alt-F12 = 畫面向右旋轉 90 度
- Ctrl-P = 開啟Android設定畫面
- "Windows 鍵"相當於 Android 的 Home 按鈕。
- "Esc" 相當於 Android 的 Back 按鈕
- F2 相當於 Android 的 Menu 按鈕
- F3 相當於 Android 的 Search 按鈕
- 右邊的菜單鍵(win和ctrl中間的鍵) = Android菜單鍵
三、設置虛擬機網絡
1、vmware設置
a、安裝虛擬機時需要使用nat模式
b、如果/data/misc/dhcp目錄不存在,則進入console模式創建
# mkdir /data/misc/dhcp
c、關閉虛擬機及vmware,修改vmx文件
ethernet0.virtualDev = "vlance"
d、開啟虛擬機,進入console模式
# su # dhcpcd eth0
e、設定dns,或者設置為與宿主機的dns一致的地址
# setprop net.dns1 8.8.8.8
2、virtual box設置:
使用橋接模式:
a、使用netcfg命令查看eth0設備是否已經分配ip地址
b、開啟虛擬機,使用ALT+F1進入console模式,輸入su切換root用戶
c、指定ip地址,執行如下腳本,ip地址需要和物理主機在同一個網段中
# ifconfig eth0 192.168.120.200 netmask 255.255.255.0 up
將物理主機網關加入路由表
# route add default gw 192.168.120.254 dev eth0
d、設定dns,或者設置為與物理主機的dns一致的地址,如202.106.196.115
# setprop net.dns1 8.8.8.8
另外需要特別注意的是,如果豌豆莢等進程處於啟動狀態,網絡設置會失敗,使用netcfg命令會發現根本沒有eth0設備。
所以在安裝虛擬機之前一定要停止豌豆莢等軟件。
如果使用NAT模式,需要使用dncpcd自動分配ip地址,dns要和物理主機一樣,示例如下:
# dhcpcd # ifconfig eth0 up # setprop net.dns1 202.107.117.11
另外還需要配置端口轉發
端口轉發也可以在物理主機virtual box目錄下使用如下命令:
# VBoxManage modifyvm "Your Android VB name" --natpf1 adb,tcp,*,5555,*,5555
3、使設置長期生效
在console模式下的配置信息似乎不會保存,使用以下方法可以保證設置一直生效
# Vi /etc/init.sh
在文件末尾增加如下配置:
ifconfig eth0 192.168.120.200 netmask 255.255.255.0 up route add default gw 192.168.120.254 dev eth0 setprop net.dns1 202.106.196.115
四、配置分辨率,可以分別模擬手機和平板移動設備
Virtual box可以配置分辨率,vmware還沒有很好的辦法,因此以Virtual box為例。
1、在虛擬機添加自定義分辨率
在虛擬機關閉以后進行。
方法一:對應的虛擬機的vbox文件的“<ExtraData>”下新開一行,添加以下內容
<ExtraDataItem name="CustomVideoMode1" value="480x800x16"/> <ExtraDataItem name="CustomVideoMode2" value="320x480x16"/>
方法二:執行命令,其中“VM name”替換為你自己的虛擬機的名字
在dos模式下進入VirtualBox安裝目錄,默認為C:\Program Files\Oracle\VirtualBox,執行如下命令
# VBoxManage setextradata "VM name" "CustomVideoMode1" "480x800x16" # VBoxManage setextradata "VM name" "CustomVideoMode2" "320x480x16"
2、修改grub的menu.lst
啟動虛擬機,到debug mode下
以 RW 模式重新掛載分區
# mount -o remount,rw /mnt
編輯文件:
# vi /mnt/grub/menu.lst
如果是手機分辨率則復制MDPI的幾行,平板分辨率則復制HDPI的內容。把title改為自己想要的啟動項名字,如“Android-x86 480×800x16”,在“kernel”后加上:
UVESA_MODE=480x800
320×480的分辨率也類似進行。
3、在debug mode下重啟Android-x86
運行命令
# /system/bin/reboot
即可
五、配置eclipse允許使用虛擬機遠程調試開發
1、查詢ip地址
進入cosole模式,使用netcfg或ip命令查詢虛擬機的ip地址:
其中eth0表示虛擬機的網絡設備,后面的ip地址即為虛擬機的ip地址。
2、配置eclipse
使用Alt+F7返回圖形界面。
打開eclipse,進入android開發插件的設定界面,選擇ddms,勾選 Use ado host, 並在ADT host value 一欄填寫虛擬機的ip地址,具體界面請參看下圖:
打開devices視圖,如果未加載devices視圖,可以使用如下方法打開devices視圖
在devices視圖中選擇重啟adb:
或者也可以使用命令行重啟adb,新版的adb命令位於platform-tools目錄下:
# adb kill-server # adb start-server
重新啟動后可以看到虛擬機設備已經在列表中了
3、配置項目run或debug參數
運行或調試程序時就可以選擇虛擬機作為調試設備了
如果eclipse找不到虛擬機設備,請檢查系統是否安裝豌豆莢等android連接程序,如果安裝需要停止相關進程。
六、配置SD卡
配置SD卡可以使用多種方式。
1、將文件偽裝成 SD 卡
在console模式下執行如下腳本:
# dd if=/dev/zero of=/data/sdcard.img bs=1024 count=65536 # losetup /dev/block/loop7 /data/sdcard.img # newfs_msdos /dev/block/loop7
其中65536表示64MB的SD卡,可以修改此數字增大SD卡大小
重新啟動虛擬機進入debug模式,以 RW 模式重新掛載分區
# mount -o remount,rw /mnt
編輯文件:
# vi /mnt/grub/menu.lst
向 kernel 中添加一個參數:
SDCARD=/data/sdcard.img
2、使用獨立的分區
首先需要在 VirtualBox 中創建一個新的硬盤,然后將其配屬給 VM:
然后以debug模式啟動 VM,新建的分區默認掛載為/dev/sdb文件
創建分區前可以查詢分區情況:
# fdisk -l /dev/sdb
使用 fdisk 創建一個新的分區。分區創建完成后,對它進行格式化:
# fdisk /dev/sdb
該命令后續操作包含如下參數:
- 輸入 m 顯示所有命令列示。
- 輸入 p 顯示硬盤分割情形。
- 輸入 a 設定硬盤啟動區。
- 輸入 n 設定新的硬盤分割區。
- 輸入 e 硬盤為[延伸]分割區(extend)。
- 輸入 p 硬盤為[主要]分割區(primary)。
- 輸入 t 改變硬盤分割區屬性。
- 輸入 d 刪除硬盤分割區屬性。
- 輸入 q 結束不存入硬盤分割區屬性。
- 輸入 w 結束並寫入硬盤分割區屬性
輸入n開始創建分區
輸入p創建主分區
此步驟詢問分區的序列號,因為sdb還沒有分區,因此可以選擇1
輸入開始的塊地址,默認即可
設置結束的塊地址,該地址決定分區的大小,具體可以根據分區總大小以及此處提供的塊數量
輸入w寫入分區並退出。
使用fat32位格式化分區:
# newfs_msdos /dev/sdb1
編輯 menu.lst 文件
# vi /mnt/grub/menu.lst
添加kernel參數:
SDCARD=sdb1
七、安裝應用
1、安裝應用
如果未連接設備,可以在物理主機的命令行模式下使用如下命令連接
# adb connect 192.168.11.12
可以使用如下命令安裝apk:
# adb install -r HelloWorld.apk
但有時安裝的時候報如下錯誤:
more than one device and emulator
可以使用如下方法:
查找設備:
# adb devices List of devices attached emulator-5554 device
安裝
# adb -s emulator-5554 install -r HelloWorld.apk
2、卸載
adb uninstall HelloWorld.apk
或者直接刪除文件
# adb -s emulator-5554 shell # cd /data/app # rm HelloWorld.apk # exit
刪除系統應用:
adb remount (重新掛載系統分區,使系統分區重新可寫)。 adb shell cd system/app rm *.apk