歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> 介紹 Visual Studio 的 Android 模擬器

介紹 Visual Studio 的 Android 模擬器

日期:2017/2/28 14:25:46   编辑:Linux教程

Microsoft 本周發布了 Visual Studio 2015 預覽版, 裡面包含 Android 開發工具. 安裝的時候, 如果選 Android 開發, Visual Studio 會把調試 Android 應用程序用的 Visual Studio 模擬器也裝上. 你也可以點這裡查看視頻介紹.

為了幫助我們把模擬器做的更好,請填下這個簡短的問卷調查。

在介紹這個新模擬器之前, 我們先來聊一聊, 為什麼需要一個新的 Android 模擬器 – 當然, 你也可以直接跳到自己感興趣的部分去閱讀 :-)

Android 模擬器存在的必要性

我們知道, 模擬器在 編程-編譯-調試 開發周期中, 扮演著很重要的角色(甚至比物理設備還重要). 所以我們相信, 今天發布的這個模擬器, 在開發中是必不可少的.

有了優秀的模擬器, 不代表我們就不需要物理設備了. 反之亦然, 他們之間其實是互補的關系.

下列幾種情況, 只能用物理設備測試, 模擬器派不上用場:

  1. 測試代碼的性能. 雖然模擬器能幫你糾正代碼中的錯誤, 但是它無法正確的給出, 代碼在指定設備上的性能評估. 畢竟, 我們都希望測試的結果, 盡量接近用戶實際使用的效果.

  2. 測試某些硬件問題. 比如, 你想測試下游戲的觸摸靈敏度, 外放的音效, 或者調試 OEM 設備的 Bug , 這些測試只能在物理設備上進行.

  3. 評估真實的用戶體驗. 譬如, 你設計出來的人機交互界面, 適不適合用戶邊走路, 邊單拇指操作?

除去上面列舉的場景,大家應該都會很樂意使用模擬器。因為調試代碼通常占用了80%的開發時間,而模擬器為我們大大提高了工作效率。(除非你的模擬器有其他阻塞性問題或者使用限制)。下面是使用模擬器的幾個理由:

  1. 大部分的測試工作都是用來驗證程序的正確性而非性能,並且大部分的代碼都與底層硬件無關。所以是用模擬器是極好的。

  2. 購買一大堆硬件設備來測試是一件很奢侈的事情(特別是持續不斷的購買新機)。大部分的硬件差異可以使用模擬器軟件進行配置,比如說屏幕分辨率,不同屏幕的DPI,API級別/平台版本號等等。

  3. 使用物理動作來測試程序對傳感器輸入的反應也是很費勁的,比如說動作變化、地理位置變化或是網絡/電池的變化。在這種場景下,選擇模擬器來模擬傳感器的輸入就非常便捷高效,比如說模擬器可以模擬一段旅程中位置的變化,並測試應用程序對地理位置變化的響應。

  4. 使用模擬器還有一項而外的便利。管理多個物理連接的USB設備(一大堆連線和接口),是很麻煩的。此時使用模擬器就簡單得多,模擬器就是一個運行在電腦上普通的應用層序,除去了物理連接的煩惱,非常便於管理。

所以說模擬器是軟件的開發的好伴侶,我們希望把VS的模擬器打造成第一流的。我們從開發者那裡收集到現有模擬器的痛點,在我們的版本上予以一一擊破:

  • 速度慢。這是從Android開發者那排名第一的抱怨。“這個模擬器速度慢極了,嚴重影響了我的生產率,我還不如用真機測試。”速度慢是不可接受的。使用模擬器應該比使用真機的運行速度更快才是,這樣才能提高測試效率。記住一點,我們並不是在測試代碼的運行性能,對功能測試來說就是要讓模擬器盡可能地跑得快。

  • 與Windows的Hyper-V沖突。很多模擬器在運行時要關閉Hyper-V,或是在使用Hyper-V時,性能反而更糟糕。但使能Hyper-V是大部分開發者的常見配置,頻繁重啟電腦來開關Hyper-V是不可接受的。

  • 對那些要使用Windows Phone模擬器(基於Hyper-V)的開發者來說就更為苦惱。總不能為因為要測試跨平台的代碼,不斷的重啟和配置電腦設置吧。

  • 額外的購買和安裝步驟。如果你已經在使用Visual Studio,那麼恭喜你,你不許要再額外購買和安裝一款其他的模擬器軟件。

  • 更多的費用開銷。購買一款卓越的模擬器,也意味著更高的開銷,這也是拒絕使用模擬器的一個主要原因。Visual Studio的Android模擬器是附贈的,不需要額外的費用。

簡單來說,我們在Visual Studio的Andriod模擬器解決了以上痛點。廢話不多說,下面開始給大家介紹使用VS的Android模擬器的調試方法,我們將從如何選擇Android模擬器開始講起。

用 Visual Studio 模擬器調試 Android 程序

無論你用的是哪一種編程模式: 用 JavaScript (或 TypeScript) 的 Cordova, C++, 或 是用 C# 的 Xamarin, 都可以在 Visual Studio 2015 預覽版上 編寫-編譯-調試 Android 代碼.

啟動調試模式的時候, 要選擇調試目標(Debug Target). 調試目標可以是一台物理設備, 或者是某個在你電腦上運行的模擬器. 我們來看看怎麼給 Visual Studio 2015 預覽版中的 Cordova 和 C++, 以及 Visual Studio 2013 的 Xamarin 選擇一個調試目標.

C++ 項目的調試目標選擇菜單如下圖所示:

Cordova 項目要選擇菜單的最後兩項, 具體看下面的截圖:

(切記, 不要選 “Android Emulator” 這一項. 因為它運行的速度太慢了)

Xamarin 項目的選項如下圖所示:

最好把位於 項目屬性-Android 選項 中的 "Use Fast Deployment" 勾選去掉.

注: 如果你想從別的 Android IDE 臨時用下 VS 的模擬器應急. 首先, 按照上面介紹的方法啟動模擬器; 然後, 把項目關掉, 保留模擬器繼續運行就可以. 其他 IDE 可以通過 ADB 調用 VS 的模擬器.

選好調試目標後, 按 F5 , 你的應用就會發布到模擬器中. 就像平時調試 VS 的代碼一樣, 程序運行到斷點處停下, 然後你可以查看堆棧, 變量等等. 現在, 大家都知道怎麼用模擬器調試了吧? 那我們繼續將其他功能。

傳感器模擬以及Visual Studio Android模擬器的其他能力

除了使用模擬器做為部署的目標板以外,你還可以使用模擬器的傳感器模擬以及其他功能。 下面會給大家講解其中的一部分,順序不分先後。

縮放

你可以在開發機上(主機側)調整模擬器的顯示大小。模擬器的DPI值是由你的主機顯示器決定的,與縮放的大小無關。所以如果你覺得模擬器占用了太多的桌面空間,那就縮小它。

使用模擬器右側的工具欄中的“Zoom”按鈕,就可以調整大小。

你也可以使用全屏模式,點擊"Zoom"按鈕上方的“Fit to Screen”按鈕即可。

如果你想對模擬器中運行的程序進行截屏(比如說,使用windows自帶的截屏工具),要想取得最好的效果,就要把模擬器的縮放比例調到最大(也就是100%)。如果想要更好的效果,就要使用模擬器自帶的截屏工具了,這個工具我後面也會提到。

屏幕的朝向/旋轉

除非你的應用界面是固定不變的, 否則, 就應該測試下, 手機處在不同方向時, 應用界面翻轉後的各種效果, 如: 豎屏, 左橫屏, 右橫屏. 垂直工具欄上有兩個按鈕 "左旋轉"(Roate Left) 和 "右旋轉" (Rotate Right), 分別可將模擬器向左和向右旋轉. 旋轉後, 模擬器的尺寸不發生改變.

網絡信息

由於模擬器使用的是宿主機器上的網絡連接, 所以網絡部分不需要配置.

你可以點擊垂直工具欄上的 "工具"(Tools) 按鈕, 然後在展開的"附加工具" (Additional Tools)面板中點擊 "網絡"(Network) 選項卡查看網絡配置信息.

定位 (GPS)

如果你的應用跟導航, 地理圍欄(geofencing), 行走/騎行/駕駛有關. 那麼, "附加工具"(Additional Tools)面板中的 “定位”(Location) 選項卡裡頭的定位跟模擬駕駛(driving simulation) 功能就會變得很有用 .

地圖可以拖動過, 放大縮小, 甚至可以查找某個具體位置. 通過放置或移除地圖上的大頭針 (pin) 創建地圖上的點(map points). 左下角顯示的是坐標. 上邊的工具欄的保存按鈕, 可以將地圖上的點存儲為 XML 文件. 有需要時候, 再重新加載進來.

除了 “Live”模式, 這種由地圖上的點, 直接改變模擬器 GPS 位置外. 還有其他模式可以選擇! 比如你想在地圖上設置幾個點, 並在這些點之間模擬移動的效果 . 那就選 “Pin” 模式. 然後點工具欄最右邊的 Play 按鈕,就能模擬出從一點到另外一點的移動效果.。甚至, 還可以設置移動的速度(以秒為單位)。

最後,還有一個跟 “Pin” 模式差不多的 “Route” 模式。此模式也是模擬一點到另外一點的移動效果。不過多了點"曲折"。模擬器會自動計算出兩點之間的實際路徑,並以 1 秒鐘為時間間隔,為這條路徑創建隱形的點。而在這些點之間的移動速度,則取決於另外一個設置。該設置的選項有:“步行(Walking)” (5 公裡/小時), “騎行(Biking)” (25 公裡/小時), “限速(Speed Limit)” (在地圖上, 不同位置, 速度也不一樣), 和“快速(Fast)”。

加速傳感器

如果你想測試應用對手機移動的響應效果, 那就打開 “附加工具(Additional Tools)” 面板中的 “加速傳感器(Accelerometer)” 。

在 3D 面板中, 直接按住裡面那個紅點, 朝你想模擬的方向拖動. 如果你的應用已經寫了處理移動事件的代碼. 那它就能接收到手機移動的事件.

左下角的 X, Y, Z 值, 可以通過點擊 “Reset” 按鈕重置. 也可以由: 直立豎屏(Portrait Standing), 直立橫屏(Landscape Standing), 平躺豎屏(Portrait Flat), 和 平躺橫屏(Landscape Flat), 這幾項來設置手機的初始朝向(Orientation)。

最後, 你可以點擊右下角的 “Play” 按鈕模擬震動效果. 我們能看的到的震動效果, 實際上就是 X,Y,Z 這幾個值發生改變而已. 如果這幾個值不再急劇變化, 說明震動已經停止。

電源/電池模擬 (以及開關機按鈕)

假如,你的應用需要對電池的電量變化做出響應。 那麼你就會喜歡上 “附加工具(Additional Tools)” 面板中的 “電池(Battery)” 選項卡裡面提供的功能.

裡面有一個滑動條, 用來設置電池的剩余電量. 當你調整電量的時候, 右上角的電池圖標也會跟著改變. 你的應用也會做出相應的反應.

如果你把 “電池充電(Charging)” 勾選去掉, 過一段時間後, 模擬器的屏幕就會變黑(blank). 這個時間可以在 系統設置(Settings)-顯示(Display)-休眠(Sleep) 裡面設置. 點垂直菜單欄的 電源開關按鈕(Power), 可以將模擬器從休眠中喚醒.

截屏

要實現對應用截屏,打開"其他工具",切換到"截屏"標簽。然後點擊“捕捉"按鈕,這樣就可以實現截屏,並讓你預覽一下即刻所截屏。如果你打算保存這個截屏,點擊"保存..."按鈕。如果不喜歡你剛才的截屏,忽略或者再次點擊"捕捉"按鈕。

截屏工具總是實現(按照左下角所顯示的清晰度的)100%進行截屏的,不會理會縮放設置如何。同時總是正面截圖,不管你選擇何種圖像旋轉方式。

通過拖拽安裝 APKs

APK 是 Android 的安裝文件。要在 Visual Studio 模擬器上安裝 APK 文件,直接把 APK 文件拖到模擬器裡面就可以。安裝的時候,模擬器會提示 “正在復制文件…”。安裝完畢,會有一個消息框提示 “ xxx 文件已經成功安裝到 Android 系統中”。要確保你的 APK 文件是用 x86 模式生成的!

當然, 你也可以把其他類型的文件(非 APK 文件)拖到模擬器中,這些文件會保存到 SD 卡上。這也是我們接下來要講的內容。

SD 卡

如果你的有向目標設備的SD卡讀寫的需求,模擬器可以利用一個硬盤上的文件夾模擬這個SD卡.

要注意Android鏡像會使用一個獨立的VHD文件來支持對SD卡的模擬. 所以如果你想要在你的開發機器上和SD卡傳輸文件,你可以把這個VHD安裝到你的Windows上:關閉模擬器(以停止VM的運行),然後再Windows Explorer上找到VHD的位置,雙擊它就能安裝. VHD默認會位於下面的這兒路徑下面:

C:\Users\%username%\AppData \Local\Microsoft\XDE\Android\vsemu.sdcard.vhd

這樣VHD就被作為另外的一個驅動器安裝到了你的Windows上,你可以像使用其它的驅動器一樣來使用它. 在重啟模擬器之前,你必須卸載VHD,你可以通過在驅動器上右鍵選擇“彈出Eject”來實現這個步驟.

可以再鏡像中實現對SD卡的支持讓其它的內置Android應用和功能可以使用,比如浏覽器下載和照相機應用——它為我帶來了下一項能力.

照相機

通常你可能會要使用應用裡面的照相機(使用一個合適的API),而我們支持這個功能. 你也可以直接使用內置的照相機應用. 當你在模擬器裡面啟動照相機時,你將會看到一個固定的圖像,你可以獲取這個圖像的快照,以模擬拍照.

音頻播放,鍵盤文字輸入…

當然模擬器理所當然還會提供其它的一些功能,盡管他們需要來自產品團隊的“努力” :-)。在這裡我不會把所有的功能都列出來,單其中有兩個值得注意:

  • 你可以在模擬器中使用你機器的鍵盤輸入文本

  • 任何來自模擬器的音頻播放都可以通過你機器的音響收聽到

配置

在預覽版中,提供了2組默認配置:

  • 典型的Android手機配置:5吋屏幕,295 DDI,720x1280,1024MB

  • 典型的Android平板配置:7吋屏幕,315DPI,1080x1920,2048MB

你可以在預覽版中修改內存的分配,Hyper-V Manager的配置窗口中提供了配置“Startup RAM”的選項。注意,你也可以修改每個配置中使用的CPU核心數(默認值是2)。不過,我們還沒有對所有的可能配置進行測試。

我們的工作才剛剛開始,在後面的版本中我們會提供更多的功能,同時也希望大家在下面的這個調查問卷中反饋意見,以便於我們對需求進行排序。

看看內部實現原理

如果你對Visual Studio Android模擬器的實現原理感興趣,我可以簡單地回答這個問題,就是我們重用了其他產品的工作成果。在概念上,一個模擬器軟件可以分為以下4個部分:

  1. 虛擬機(表示為一個vhd),用於模擬你使用的目標板,在這這裡目標機就是Android。我們先從Android Open Source Project (AOSP)上獲取到代碼,並加以改進,將其配置為一個x86的虛擬鏡像,這樣就可以使用Visual Studio來進行快速的調試。

  2. Shell/Chrome,提供了用戶交互界面,可以用它來裝載虛擬鏡像並將其進行渲染顯示出來。可以把這個過程和遠程桌面做一下類比:其實你就是遠程連接到一個本地鏡像上。我們的工作就是從這裡開始,直接借鑒了Windows Phone模擬器(我們內部稱其為XDE)的shell/chrome。 然後根據Android的特殊需求,做了一些必要的修改。

  3. 虛擬化技術,XDE使用先虛擬化技術來裝載鏡像,這樣才能進行遠程連接和控制。Windows有深厚的虛擬化技術功底,我們正是使用了虛擬化技術Hyper-V來完成這項工作。

  4. 連接管道,VS和XDE需要通過連接管道來通信,同樣的調試引擎和虛擬鏡像也需要。這裡我們重用了XDE與Visual Studio之間現有的連接機制,同時也使用了Android Debug Bridge (ADB) 。

現在,再來看看目前這個應用的使用限制,我再次希望大家給我們反饋改進意見,我們會優先解決大家反饋的問題。

當前的使用限制

今天給大家分享的是早期的預覽版,這個版本中還有不少問題和Bug,我希望大家能把更多的問題反饋為我們。 同時這個版本還有不少已知的使用限制--大家趕緊把你們最想要的功能反饋給我們,我們會優先處理:

  • 直接或間接使用OpenGL 2以及以上版本的應用程序,模擬器目前無法渲染顯示。這項功能不久就會支持,我們已經在內部版本中實現,用來會感覺非常流暢!

  • 市面上有太多不同的Android版本。我們目前只支持 KitKat API 19(android-4.4.4_r1)。後續會支持更多版本...

  • 如果你的APP使用了 Google Play Services 層,那麼這些應用不能在模擬器上直接運行。這是因為我們構建的Android鏡像沒有包含GMS包(我們目前還沒有獲取到相關的許可證)。

  • 你需要在x86下重新編譯你的代碼。如果你的代碼只能在ARM下運行,或者使用了不能在x86下運行的第三方庫,那麼目前你的代碼是無法在我們的模擬器上運行的。

  • 你只能在支持Hyper-V的操作系統上安裝我們的模擬器。不支持Hyper-V的操作系統有Windows 7和其他非Windows系統,或者是在其他的虛擬機上運行。

如說上面所提的限制是你所急需的,目前的解決辦法是使用真機來測試(或者另找一款更好的模擬器)。我們會在後面的版本中把上面的限制列表變短,所以請填寫調查問卷來幫助我們進行優先級排序。

英文原文:Introducing Visual Studio’s Emulator for Android

Visual Studio 2010 & Help Library Manager 安裝說明 http://www.linuxidc.com/Linux/2012-11/74814.htm

OpenCV 2.3.x/2.4.x在Visual Studio 2005/2008和Visual Studio 2010配置方法詳解 http://www.linuxidc.com/Linux/2012-08/68302.htm

使用OpenCV-2.4.0.exe文件編譯x86或x64平台Visual Studio 2005/2008/2010目標文件 http://www.linuxidc.com/Linux/2012-08/68305.htm

Visual Studio LightSwitch增加對HTML5和JavaScript的支持 http://www.linuxidc.com/Linux/2012-06/63397.htm

Visual Studio 11:使用 C++ 開發一個最簡單的 Metro 應用 http://www.linuxidc.com/Linux/2012-06/62657.htm

Visual Studio 的詳細介紹:請點這裡
Visual Studio 的下載地址:請點這裡

Copyright © Linux教程網 All Rights Reserved