接上篇,在創建好Android x86的模擬器后,默認的屏幕是寬屏的,而且沒有可以旋轉屏幕的操作。為了使屏幕可以顯示成普通手機的豎屏,需要做如下操作:
1.在Windows上進入命令行模式,轉到VirtualBox的安裝目錄下,輸入如下命令:
其中"Android 2.3"是你在VirtualBox中新建虛擬機時候填入的虛擬機名字,"CustomVideoMode1"是VBoxManage的保留參數,指明這是一個自定義的參數,當然以后你也可以增加CustomVideoMode2、 CustomVideoMode3直到CustomVideoModeN。最后一個參數就是屏幕的分辨率,480x800就是手機豎屏的寬高,16是屏幕顏色位數,一般就是用16,其他的貌似會有問題。480與800之間的乘號就用小寫字母x即可。
2.開啟你的Android虛擬機,在引導頁的時候,選擇Debug Mode進入:
等待命令台加載完成后,輸入如下圖的命令:
這樣做的目的是進入Android虛擬系統的grub中,用vi工具修改menu.lst文件。在上述命令回車后,將會看到menu.lst的內容,注意下圖,最上端的title字段是我后來加的,原本只顯示下面三個title字段的。按照下面的三個title的格式,自定義一個title字段(如我的MY HDPI),內容的話,就按照HDPI和MDPI順便抄一個就好,但是注意一定要在kernel這一行的最后,加上一個空格,然后是vga=ask這樣的參數。基本上操作就是普通的Ubuntu上vi的操作,按i可以進入文本編輯模式,然后用光標移動,輸入即可,完成后,按Esc,然后按下:鍵,並輸入wq進行保存就可以了。
保存完成后,回到控制台,輸入/system/bin/reboot,啟動整個Android系統,在引導頁,選擇剛剛我們創建的那個MY HDPI選項即可:
按下回車,進入video modes的選擇頁面:
最后那個代號為360的就是我們在VBoxManage里面設置的自定義顯示模式,輸入360,進入該模式:
在第一次進入虛擬機系統的時候,你可能發現屏幕還是寬屏的,這是由於VirtualBox有緩存機制,你只要用鼠標在窗口的邊緣拖動一下,窗口就可以變成豎屏的了,調整大小,使之適應你的顯示器屏幕:
接下來要來測試虛擬系統的網絡是否可用,這關系到adb調試橋能否正常連接到Android x86系統。
在保持系統被激活的狀態下,按下Alt+F1(按Alt+F7是返回正常的屏幕),進入Android x86的終端控制台,輸入netcfg命令,它會打出當前系統的網絡連接情況,如果你能找到eth0字段,且其IP地址是和你的主機地址在同一網段的話(非0.0.0.0或其他異常地址),那么你就可以直接開啟eclipse,按照普通SDK模擬器那樣開發調試了。如果你的顯示如下:
根本沒有顯示eth0的話,那么說明虛擬機的網絡連接有問題,關閉虛擬機,進入VirtualBox的設置,在“網絡”頁面,確保選中的是橋接網卡模式,然后將控制芯片選擇PCnet-FAST III,保存后重啟虛擬機,這個時候你會看到eth0出現了。但是其IP地址卻是0.0.0.0!此時你需要的是,進入Android系統,在Settings->Ethernet Configuration中將Ethernet選項勾中,這樣就確保了Android系統使用了主機的以太網連接,同時你會注意到Android的系統欄里面多了一個以太網連接的ICON。你可以Alt+F1返回到控制台,使用netcfg重新查看當前的網絡連接,eth0應該不再是0.0.0.0,而是一個和你的主機IP在同一網段的IP地址了。
下圖即是在開啟Ethernet選項前后的netcfg的輸出:
最后就是在eclipse里面調試了,首先,在Windows的CMD模式下,進入Android SDK的目錄,運行adb connect 你的虛擬機的IP地址:5555條命令,使得adb與Android模擬器之間建立連接:
然后在eclipse里面進行調試的時候,就可以彈出Android模擬器的顯示項目了:
大功告成!
限制:如果你的工程里面有使用so,那么請確保在Android.mk中修改接口類型為x86類型的,否則apk將無法在Android x86模擬器上運行。這也意味着如果你下載的apk里面有使用so的話,一般都無法再Android x86上運行的,因為應用商店中的apk的so都是arm類型的。所以一般如果是開發調試so的話,還是建議使用真機或者SDK的模擬器。
參考文獻: