如何成為一個(gè)偷懶又高效的Android開發(fā)人員(2)
在前一篇文章中,我們討論了關(guān)于依賴注入和RoboGuice庫。今天我們要講的是一款很棒的測試和開發(fā)工具。
我從Android源碼1.5開始做開發(fā)一直到現(xiàn)在,經(jīng)歷了Android和Android模擬器的發(fā)展過程。我覺得速度是提高了一些,但是沒有我們想象中的那么流暢和好用,我相信很多Android開發(fā)者都厭倦了打開本地模擬器,然后進(jìn)入加載界面,然后各種無響應(yīng)和卡頓。雖然通過快照 (snapshot)可以加速。
補(bǔ)充一下,因?yàn)槲乙沧鯳indows程序開發(fā),我發(fā)現(xiàn)Windows phone的模擬器很快,表現(xiàn)得很出色。可惜我沒有做過IOS的開發(fā),但是現(xiàn)在我已經(jīng)了解了IOS的模擬器也很出色。所以如果和IOS和Windows的 模擬器相比,Android模擬器簡直就像烏龜一樣慢。
Android系統(tǒng)很特別,App需要進(jìn)行模擬化測試,我很同意這個(gè)觀點(diǎn)。但是我覺得每個(gè)問題都有解決的方法,所以解決性能和這個(gè)差別的方案就是用虛擬化技術(shù)。
所以今天我決定寫一篇關(guān)于Genymotion模擬器的文章,我覺得它很非常不錯(cuò)。自從這個(gè)項(xiàng)目啟動(dòng)后,我就一直和大家分享,大家也很喜歡。所以我覺得應(yīng)該把它分享給本站的讀者。
Genymotion模擬器 – 更快的Android模擬器
問:你希望不用真機(jī)或者平板就可以運(yùn)行App例子嗎?
問:如果你是一名開發(fā)者,你希望能更方便地測試App嗎?
對(duì)以上兩個(gè)問題,這里就有一個(gè)簡單的辦法:使用Genymotion模擬器。
這是一個(gè)測試和演示App的一個(gè)很快的模擬器,它帶有一個(gè)友好的用戶界面,可以實(shí)現(xiàn)控制各種虛擬的部件和傳感器,比如電池、GPS,還有各種加速器,它還包含了一個(gè)強(qiáng)大的命令行工具可以構(gòu)建更加復(fù)雜的測試環(huán)境。
免費(fèi)開源的軟件
事實(shí)上這是基于一個(gè)開源項(xiàng)目 AndroVM的一個(gè)測試版,現(xiàn)在已經(jīng)出了商業(yè)版本,旨在為運(yùn)行android提供一個(gè)盡可能高效的虛擬環(huán)境。所以它是免費(fèi)開源的,之前是完全免費(fèi)的,現(xiàn)在有了一些收費(fèi)的服務(wù),不過免費(fèi)版已經(jīng)相當(dāng)不錯(cuò),也有很多我們喜歡的特性,比如電池管理部件,GPS部件和攝像頭部件。
使用要點(diǎn)和模擬器準(zhǔn)備
假設(shè)你以前已經(jīng)玩過VirtualBox,如果沒玩過可以點(diǎn)擊前面的鏈接。Genymotion模擬器需要在你的機(jī)器中用VirtualBox運(yùn)行,這就是它比本地模擬器更快的原因。如果你之前打開過模擬器,那再次打開時(shí)就不用重新加載了,它會(huì)加載之前的狀態(tài)。這點(diǎn)很像本地模擬器中的“snapshot”特性。
題外話:早期的Genymotion版本提供了帶有Google應(yīng)用的模擬器,所以用戶就可以從Google Play商店上下載應(yīng)用和游戲。但是在11月13號(hào)發(fā)行的Genymotion2.0.0版本中不再包含Google應(yīng)用和ARM類庫支持。對(duì)于 Google應(yīng)用官方正在和Google溝通,希望仍然可以在Genymotion上加回google應(yīng)用,詳情請看:Genymotion Changelog。
不過現(xiàn)在Genymotion的模擬器已經(jīng)沒有Google應(yīng)用了,我在StackoverFlow上找到了原因:How To Add Google Apps and ARM Support to Genymotion v2.0+.
除了速度和性能外,Genymotion還提供了很多好用的特性:
- 跨平臺(tái)支持
因?yàn)樗腔赩irtualBox運(yùn)行的,所以在Windows,Mac和Linux都可以運(yùn)行,不必安裝任何東西只需要從Genymotion的官網(wǎng)上下載它然后注冊一個(gè)賬號(hào)來下載不同的模擬器版本即可。
傳感器控制
它可以人性化地管理模擬的傳感器如電池電量,GPS還有加速器。舉個(gè)例子,如果你在開發(fā)基于GPS的App,需要測試不同的地理位置,只需要在地圖上拖拽來移動(dòng)地圖到對(duì)應(yīng)的位置,如果需要移動(dòng)X和Y的坐標(biāo),也是一樣的操作。
支持Google應(yīng)用商店服務(wù)
如要測試帶有Google Play Service SDK的應(yīng)用,需要下列配置:
- 一個(gè)可以兼容Android2.3或以上版本并帶有Google Play商店的設(shè)備;
- 帶有AVD,可以運(yùn)行android4.2.2或者以上的android模擬器;
這里Genymotion為一些ROM提供了Google Play應(yīng)用的集成,就像真實(shí)設(shè)備一樣。我清晰記得曾經(jīng)花了幾天來測試一個(gè)用了Google Map API V2的APP,我們就是用Genymotion來測試的。
在開發(fā)環(huán)境中完美集成
Genymotion為新建虛擬設(shè)備提供了一個(gè)簡潔的UI操作,你可以單獨(dú)使用或者安裝Eclipse或Android Studio/IntelliJ 插件。
相關(guān)鏈接:
注意:
- 有一個(gè)更快的模擬器并不意味著可以寫程序更快,只是不必在真機(jī)上測試而已,它可以幫你以一個(gè)更快的方式來開發(fā)和測試App;
- 在Genymotion上的Google+ post說,已經(jīng)支持Android4.4預(yù)覽版,但是可能會(huì)有bug;
- 目前官方還在開發(fā)一些ROM,并不斷測試和修復(fù)bug。
總結(jié):
Genymotion是一個(gè)更快的Android模擬器,可以用來做開發(fā),測試甚至展示App,它可以控制虛擬傳感器如GPS、電池電量還有加速器。
事實(shí)上Genymotion剛出了第一個(gè)商業(yè)版2.0.0,仍然有很多問題要修復(fù),我建議這個(gè)模擬器配合Eclipse或者Android Studio/IntelliJ IDE 使用,以一種更快的方式去開發(fā)和測試App。