2013年4月18日

VirtualBox for Android


最近工作上需要玩WiFi Direct,
但又沒device可以測,
因為WiFi Direct在Android 4.0.x後才開始support,
且Bonjour在4.1.x後才開始support.
<想了解Bonjour的可看Apple - Mac Developer Library >





突然想到Android官方有出個模擬器,

雖然用過的都知道又慢又耗資源.
但沒錢買一堆device,
只好試試看了.

沒想到Android emulator竟然沒有WiFi的功能!
雖然可以上網,但對於其他socket要用的port要透過forwarding的方式一對一轉!?
別鬧了~你又肥又慢還缺東缺西喔...(丟)

於是上網survey,
發現了很多人推薦去用Oracle VirtualBox來當Virtual Machine(對!就是甲骨文這家公司)
這是用來幹啥的呢?
簡單講就是在你現在的這台電腦中,跑另外一台電腦
之前工作上的需要,我也在
Windows上跑VMWare
  • 為了開發MS的軟體,因為早期不同Windows OS上的compatibility很差.至於現在差不差?我很久沒碰就不知道MS變聰明了沒...
Ubuntu上跑Xen
  • 為了開發MID軟體,也因此接觸了Linux

不過以上的經驗都告訴我,VM很慢...
也因此想說就試試看,慢了點起碼說不定有WiFi.

在Google大神的協助下,
先後找到了AndroVMAndroid-x86這兩個可以在VirtualMachine上跑的Android project,
載入AndroVM後,稍微看了一下,有模擬出來一個WiFi的AP,
在Google上發現有人說用Alt+F1可以進入adb command line,
但我怎麼試都不行.
因為此時還搞不清楚AndroVM & Android-X86是不同的project,
也因此我就換去用Android-x86,
抓的是此時最新的Test build 20130228 for Android-x86 4.2 (Jb-x86).
載入後的確可以用Alt+F1進command line來下adb指令.
但不論怎麼嘗試,WIFI的選項都打不開,
在Google上查了一下,似乎要改網卡driver?
好像很麻煩,
於是轉回研究AndroVM - androVM-4.1.1_r6.1-20130222 release 


Android-x86提供下載的是一個ISO檔,
你必須在VirtualBox內用新增的方式自行建立這個專案,
並做各項設定.
而AndroVM提供下載的是一個ova檔,這是VirtualBox匯出的專案,
也就是說你啥都不用設定,
只要在VirtualBox用Import Appliance... 就可以了

回到AndroVM,
雖然這有WIFI,但可惜的是並沒有看到WIFI Direct的選項!
這真的是非常可惜!
雖然沒辦法實驗WIFI Direct,
但這種網路互連的方式讓我想到之前的Server - Client或許可以實作在這上面!
就不須要拿兩台實機開WIFI來測試傷身(誤)了!


deault AndroVM的設定是在你電腦內模擬10.0.3.15這個IP address,
透過你的電腦連出去


But,我的需求是:

兩台Android OS device,一台Client,一台Server,
透過TCP/IP Socket方式在LAN內連線互傳資料,
還要能在自己的電腦利用adb command的方式與這兩台VM溝通來debug

因此:

修改了每一台VM的network Adapter(可點圖放大)


VirtualBox

Adapter1是拿來adb command連的 - 會產生一個192.168.56.aaa ,
然後你就可以透過AndroVM內建的androVM configuration apk來看到這個IP address,
在你主機上就可以直接用 adb connect 192.168.56.aaa來連線

(androVM Configuration畫面如下)
androVM_vbox86tp_4.1-20130222

Adapter2是取得跟我主機一樣的IP address range (Ex. 10.82.52.xxx)
這樣我就有IP可以讓兩台VM互相連線

androVM2


而另一台VM要特別注意的是要將network adapter選項的MAC address設定與第一台VM不同,
不然可能會被分配到同一個IP,這樣你就會發生不可預期的問題喔!



這樣會很慢嗎?
由於使用的電腦是
Ubuntu 12.10 (quantal) 64-位元
Intel® Core™2 Quad CPU Q8300 @ 2.50GHz × 4
3.8 GiB

我覺得還挺順的!


補充:

AndroVM有開放原始碼,或許針對各種不同的需求,
日後需要不同解析度或設定的開發者可以自行build image,
有空再來研究這部份!

1 則留言:

親子自行車紀錄 - 綠光海風自行車道-龍鳳漁港段-竹南海埔外沙灘

龍鳳漁港 - 新竹17公里海岸線縣界 - 龍鳳漁港 - 親子之森 - 竹南濕地 來回大約25 KM 路況 - 9成以上為自行車/行人專用道,但親子之森路段為磚塊道,騎乘會有點顛簸 時間 - 3.5小時,含竹南塭仔頭沙灘遊憩 打食 - 龍鳳漁港有很多攤位   綠光海風自行車道...