不知道有多少Android開發着對Android虛擬機的那悲劇的性能有意見,反正個人見解是:那速度實在是太坑爹了!linux
爲何Android虛擬機比iOS和WP7的虛擬機要慢不少呢?緣由以下:android
1. Android 模擬器模擬的是 ARM 的體系結構(arm-eabi),而 iOS 和 WP7 的模擬器的目標體系結構都是 x86 的,另外 iOS 的模擬器中運行的 App 也是編譯爲 x86 的。這樣一來 Android 模擬器須要作一些額外的二進制翻譯工做。
2. Android 模擬器用的是 QEMU 的全系統模式(full system),也就說它模擬時須要啓動整個 GUEST 系統,初始化各類模擬設備。相反的,iOS 和 WP7 的模擬器只是 user-mode 的模擬。
3. 在 Android 模擬器之中還須要跑一個 Dalvik VM,用以執行 Android 應用的 bytecodes。網絡
綜上所述,慢的一個主要緣由就是虛擬機不是跑在x86上而是模擬的ARM,有沒有辦法弄個x86的Android呢?eclipse
答案是固然有———開源項目Android-x86,這個牛B的開源項目將Android移植到了x86平臺,系統運行的時候再也不須要模擬成ARM,這樣就能直接將Android裝在PC或虛擬機上流暢的運行了。
1.下載Android-x86系統鏡像文件編輯器
首先到http://www.android-x86.org/download下載android-x86-2.2-generic.iso,鏡像文件大約85MBide
2.在VMware上建立虛擬機工具
過程~照着這樣作就行,我也不全懂——我是小白(裏面長的英語就不拼了,我也懶從這裏開始,選擇最後一項
選擇第一項(建立磁盤分區)
進入這個界面,選擇「NEW」
選擇「Primary(主分區)」
點選「Bootable」
以後點選「Write」,在出現的「(yes or no)」提示後輸入yes,回車
完成後點「Quit」進入以下界面
回車以後 分區格式(玩linux的都知道),這裏我選了ext3
接下來一路選「Yes」(就這樣作吧,有一個說是須要更大空間神馬的,能玩虛擬機的電腦怎麼說也不在意那麼點空間吧)
到這裏停~~建立SD卡
在這裏我小囧了下:以前本小白建立SD卡無視後面的(max 2047),結果···
安裝結束後,重啓進入Android這裏,第二項比第一項的分辨率高,其餘沒啥區別貌似;第三項沒試過···
啓動界面
鍵盤鎖,乃懂得
「桌面」
先把語言改爲母語吧:解鎖後點那個 四點方陣 進入菜單,Settings
找到 Language & keyboard(留意上面那個SD Card*****),Select Language,找到「中文(簡體)」 倒數第二個
接着退出來,上面那個「SD Card*****」已經變成了「SD卡和手機內存」
【SD卡有時候不能自動安裝,須要進入「SD卡和手機內存」選項,安裝便可】
改下其餘部分設置
設置裏的 應用程序
把「未知來源」的勾打亮
另外,也推薦修改這個設置
顯示 中,把「自動旋轉屏幕」給滅了【不然在運行部分程序時得把電腦豎着放了】
上網頁下個Android版的QQ~~~
正在下載
拖拽那個 任務欄(暫且這麼叫吧),點擊安裝就好了~~
好吧,我認可把QQ正着放有點怪
post
4.自定義虛擬機分辨率性能
咱們在開發時確定須要測試不一樣的分辨率,那麼如何自定義Android虛擬機的分辨率呢?測試
首先咱們須要從Virtual Box的設定入手
打開cmd,進入Virtual Box的下你建立的虛擬機的目錄,我建立的虛擬機叫Android-x86,個人帳戶是Administrator,在我Windows XP上的路徑是
C:\Documents and Settings\Administrator\VirtualBox VMs\Android-x86
注意:
1.在不一樣操做系統下路徑會有一些不一樣,請根據操做系統的實際狀況尋找,原則上都是在你當前用戶的我的文件夾裏
2.Android-x86是我建立的虛擬機的名稱,若是你的和個人不一樣,請修改成你建立的虛擬機的名稱
在這裏咱們須要使用VirtualBox提供的命令行工具來給你的虛擬機添加一個自定義分辨率,例如我想添加一個如今流行的手機屏幕分辨率 480x800,那麼咱們輸入的命令以下
"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" setextradata "Android-x86" "CustomVideoMode1" "480x800x16"
上面的命令中,加粗的部分是要根據你本身電腦上的狀況進行修改的,相關解釋以下:
"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe"
是Virtual Box命令行工具VBoxManage.exe的完整路徑,請根據你電腦上安裝的VirtualBox的實際路徑修改
注意:若是路徑中含有空格請使用雙引號將整個路徑包起來
Android-x86
這個是虛擬機的名稱
480x800x16
這個是自定義的分辨率,請根據本身的須要修改,後面的16指的是16位顏色,請勿修改
若是你想增長更多的分辨率,請修改參數後屢次運行該命令便可
修改完畢以後,啓動虛擬機,在Android的啓動畫面選中選項後按兩次e鍵編輯內核啓動參數,增長一個參數 vga=ask,具體流程以下
啓動畫面按e鍵
進入新畫面後再按一次e鍵
這時進入內核參數編輯狀態,增長參數 vga=ask
編輯完畢後按回車保存修改結果,這時會回到上一個頁面,此時按下b鍵啓動
此時系統會提示你按回車進入分辨率選擇界面,咱們按回車繼續
進入頁面以後,你能夠看到全部系統支持的分辨率,這時請尋找你剛纔設定的分辨率,在下圖中,能夠找到在先前設定的 480x800的分辨率,注意其前面的16進制代碼360,若是想以該分辨率啓動虛擬機,咱們就輸入360再回車便可
回車後Android就會按照你設定的分辨率來啓動了,下圖是以480x800分辨率啓動的Android-x86虛擬機截圖
注意:
若是你須要系統採用你指定的分辨率啓動,須要在每次Android虛擬機啓動的時候執行上面步驟的操做來修改內核參數啓動Android
若是你想Android在啓動的時候就默認進入分辨率選擇畫面或者默認採用你指定的分辨率啓動虛擬機,那麼能夠參考如下步驟
1. 進入android虛擬機後按alt+F1進入命令行
2. 輸入mkdir /data/fs
3. 掛載硬盤,使用下列命令
mount -t 硬盤格式 /dev/block/硬盤名稱 /data/fs
硬盤格式爲你虛擬機硬盤的格式,我這裏是ext3 硬盤名稱則是你虛擬機的
硬盤名稱我這默認是sda1,表示第一個sata硬盤, linx下具體的硬盤命名規則請自行Google之
mount -t ext3 /dev/block/sda1 /data/fs
將硬盤掛在到 /data/fs文件夾上
4. vi /data/fs/grub/menu.list 編輯啓動菜單列表 (vi這個命令行編輯器怎麼用請自行Google之)
5. 和剛纔啓動時同樣,在第一個kernel那一行的末尾增長 vga=ask 後保存
6. 重啓虛擬機,這時候你就會發現每次Android啓動的時候就會詢問分辨率了
5.使用eclipse ADT在虛擬機上遠程調試開發
如今虛擬機已經配置完成,下面來說解如何使用eclipse來在上面運行和調試Android應用程序
在前面設定虛擬機的時候我把虛擬機的網卡設置成了bridged adapter,這樣虛擬機在局域網中至關於一臺獨立電腦,你能夠給它設置一個ip或者講其網卡設置爲dhcp狀態來自動獲取ip,我下面只講解一下在dhcp狀態下如何查看android虛擬機ip的方法:
進入android虛擬機,按alt+F1進入命令,輸入netcfg命令來查看網絡狀態,參考界面以下
其中eth0就是當前的網卡,後面的ip地址就是經過dhcp得到的ip地址
弄清楚以後再按alt+F7返回圖形界面
此時咱們打開eclipse,進入android開發插件的設定界面,選擇ddms,勾選 Use ado host, 並在ADT host value 一欄填寫虛擬機的ip地址,具體界面請參看下圖
選擇ok保存後,在ddms界面的device菜單上選擇重啓adb服務,重啓後,就能看到ddms鏈接上虛擬機了
接下來就能和日常同樣在虛擬上運行和測試你的Android程序了,enjoy~
最後總結一下這個環境的優缺點:
優勢:
1.高速,相比Android SDK的虛擬機,不管是啓動仍是運行,本虛擬機要快上不少不少,讓你能夠流暢的運行測試你的Android應用,固然,也能舒服的在電腦上體驗到Android系統:)
2.能夠模擬平板電腦的環境
缺點:
1.硬件支持仍是悲劇,像打電話,短信,重力感應,GPS攝像頭什麼的你仍是得去弄臺真機器調試(不過這些東西原本就不是模擬器能作的)
另外補充一下虛擬機中主頁、返回、關機、菜單對應的鍵盤按鍵
Home鍵 -> Win鍵
返回鍵 -> ESC鍵
掛機鍵 -> alt+F4
菜單鍵 -> 鍵盤菜單鍵,通常在右邊win鍵和ctrl鍵中間
1.用鼠標點住某個程序的圖標不放:
(在菜單中)至關於要建立桌面快捷方式
(在桌面)可移動至另外一桌面或拖入垃圾桶
2.菜單、網頁中,鼠標左鍵至關於前進,右鍵後退
鍵盤 回車前進,ESC後退
3.關機(個人本本上可用,其餘的不知道):F四、F六、End
4.長按輸入框可切換輸入法
5.Android設備通常會有Home,Menu和Back三個標準按鈕,若是沒有,就要這樣模擬:
(1)按住上方狀態欄的右面一下子後,會提示打開狀態欄模擬按鈕的功能:打開後,單擊狀態欄表示Home;狀態欄上按鼠標鍵並從左向右划動表示Menu;狀態欄上按鼠標鍵並從右向左划動表示Back。一樣方法還會關閉狀態欄模擬功能。
(2)單擊鼠標右鍵也表示Back;按下鍵盤上的ESC鍵或Windows鍵也表示Home;按下鍵盤上的上下文鍵(通常在Alt和Ctrl中間)也表示Menu。
(3)Android裏只要程序不顯示就表示關閉了程序,對於有後臺功能的程序,須要從「Dev Tools - Running Process」裏關閉(通常不使用)。
6若是要上下滾動,能夠拖動一個空白處,或使用鼠標滾輪。
7.若是要關機,按F6,這時會提示。
8.Alt-F1是切換到Linux命令行,Alt-F7是切換回圖形模式。不要使用「reboot -p」關機(沒有按Java程序的流程運行)。