介绍Visual Studio的Android模拟器_最新动态_新闻资讯_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 新闻资讯 > 最新动态 > 介绍Visual Studio的Android模拟器

介绍Visual Studio的Android模拟器

 2014/11/18 21:10:39    程序员俱乐部  我要评论(0)
  • 摘要:英文原文:IntroducingVisualStudio’sEmulatorforAndroid来源开源中国,参与翻译(4人):BreakinBad,YiHunter,LeoXu,几点人。Microsoft本周发布了VisualStudio2015预览版,里面包含Android开发工具。安装的时候,如果选Android开发,VisualStudio会把调试Android应用程序用的VisualStudio模拟器也装上。你也可以点这里查看视频介绍。为了帮助我们把模拟器做的更好
  • 标签:Visua Visual android Studio android模拟器
class="topic_img" alt=""/>

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

  来源开源中国,参与翻译(4 人):BreakinBad,YiHunter,LeoXu,几点人。

  Microsoft 本周发布了 VisualStudio2015 预览版,里面包含 Android 开发工具。安装的时候,如果选 Android 开发,VisualStudio 会把调试 Android 应用程序用的 VisualStudio 模拟器也装上。你也可以点这里查看视频介绍。

clip_image001

  为了帮助我们把模拟器做的更好,请填下这个简短的问卷调查。

  在介绍这个新模拟器之前,我们先来聊一聊,为什么需要一个新的 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 是不可接受的。

  • 对那些要使用 WindowsPhone 模拟器(基于 Hyper-V)的开发者来说就更为苦恼。总不能为因为要测试跨平台的代码,不断的重启和配置电脑设置吧。

  • 额外的购买和安装步骤。如果你已经在使用 VisualStudio,那么恭喜你,你不许要再额外购买和安装一款其他的模拟器软件。

  • 更多的费用开销。购买一款卓越的模拟器,也意味着更高的开销,这也是拒绝使用模拟器的一个主要原因。VisualStudio 的 Android 模拟器是附赠的,不需要额外的费用。

  简单来说,我们在 VisualStudio 的 Andriod 模拟器解决了以上痛点。废话不多说,下面开始给大家介绍使用 VS 的 Android 模拟器的调试方法,我们将从如何选择 Android 模拟器开始讲起。

  用 VisualStudio 模拟器调试 Android 程序

  无论你用的是哪一种编程模式:用 JavaScript (或 TypeScript)的 Cordova,C++,或是用 C# 的 Xamarin,都可以在 VisualStudio2015 预览版上编写-编译-调试 Android 代码。

  启动调试模式的时候,要选择调试目标(DebugTarget)。调试目标可以是一台物理设备,或者是某个在你电脑上运行的模拟器。我们来看看怎么给 VisualStudio2015 预览版中的 Cordova 和C++,以及 VisualStudio2013 的 Xamarin 选择一个调试目标。

  C++项目的调试目标选择菜单如下图所示:

clip_image003

  Cordova 项目要选择菜单的最后两项,具体看下面的截图:

clip_image005
(切记,不要选“AndroidEmulator”这一项。因为它运行的速度太慢了)

  Xamarin 项目的选项如下图所示:

clip_image006

  最好把位于项目属性-Android 选项中的"UseFastDeployment"勾选去掉。

注:如果你想从别的 AndroidIDE 临时用下 VS 的模拟器应急。首先,按照上面介绍的方法启动模拟器;然后,把项目关掉,保留模拟器继续运行就可以。其他 IDE 可以通过 ADB 调用 VS 的模拟器。

  选好调试目标后,按 F5,你的应用就会发布到模拟器中。就像平时调试 VS 的代码一样,程序运行到断点处停下,然后你可以查看堆栈,变量等等。现在,大家都知道怎么用模拟器调试了吧?那我们继续将其他功能。

  传感器模拟以及 Visual Studio Android 模拟器的其他能力

  除了使用模拟器做为部署的目标板以外,你还可以使用模拟器的传感器模拟以及其他功能。下面会给大家讲解其中的一部分,顺序不分先后。

clip_image008

  缩放

  你可以在开发机上(主机侧)调整模拟器的显示大小。模拟器的 DPI 值是由你的主机显示器决定的,与缩放的大小无关。所以如果你觉得模拟器占用了太多的桌面空间,那就缩小它。

  使用模拟器右侧的工具栏中的“Zoom”按钮,就可以调整大小。

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

  如果你想对模拟器中运行的程序进行截屏(比如说,使用 windows 自带的截屏工具),要想取得最好的效果,就要把模拟器的缩放比例调到最大(也就是 100%)。如果想要更好的效果,就要使用模拟器自带的截屏工具了,这个工具我后面也会提到。

  屏幕的朝向/旋转

  除非你的应用界面是固定不变的,否则,就应该测试下,手机处在不同方向时,应用界面翻转后的各种效果。如:  竖屏,左横屏,右横屏。垂直工具栏上有两个按钮 "左旋转"(Roate Left) 和 "右旋转" (Rotate Right),分别可将模拟器向左和向右旋转。旋转后,模拟器的尺寸不发生改变。

  网络信息

  由于模拟器使用的是宿主机器上的网络连接,所以网络部分不需要配置。

  你可以点击垂直工具栏上的 "工具"(Tools) 按钮,然后在展开的"附加工具" (Additional Tools)面板中点击 "网络"(Network) 选项卡查看网络配置信息。

clip_image010

  定位 (GPS)

  如果你的应用跟导航,地理围栏(geofencing),行走/骑行/驾驶有关。那么,"附加工具"(Additional Tools)面板中的 “定位”(Location) 选项卡里头的定位跟模拟驾驶(driving simulation) 功能就会变得很有用。

clip_image012

  地图可以拖动过,放大缩小,甚至可以查找某个具体位置。通过放置或移除地图上的大头针 (pin) 创建地图上的点(map points)。左下角显示的是坐标。上边的工具栏的保存按钮,可以将地图上的点存储为 XML 文件。有需要时候,再重新加载进来。

  除了 “Live”模式,这种由地图上的点,直接改变模拟器 GPS 位置外。还有其他模式可以选择! 比如你想在地图上设置几个点,并在这些点之间模拟移动的效果 。那就选 “Pin” 模式。然后点工具栏最右边的 Play 按钮,就能模拟出从一点到另外一点的移动效果。。甚至,还可以设置移动的速度(以秒为单位)。

  最后,还有一个跟 “Pin” 模式差不多的 “Route” 模式。此模式也是模拟一点到另外一点的移动效果。不过多了点"曲折"。模拟器会自动计算出两点之间的实际路径,并以 1 秒钟为时间间隔,为这条路径创建隐形的点。而在这些点之间的移动速度,则取决于另外一个设置。该设置的选项有:“步行(Walking)” (5 公里/小时),“骑行(Biking)” (25 公里/小时),“限速(Speed Limit)” (在地图上,不同位置,速度也不一样),和“快速(Fast)”。

  加速传感器

  如果你想测试应用对手机移动的响应效果,那就打开 “附加工具(Additional Tools)” 面板中的 “加速传感器(Accelerometer)” 。

clip_image014

  在 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),可以将模拟器从休眠中唤醒。

clip_image016

  截屏

  要实现对应用截屏,打开"其他工具",切换到"截屏"标签。然后点击“捕捉"按钮,这样就可以实现截屏,并让你预览一下即刻所截屏。如果你打算保存这个截屏,点击"保存。。。"按钮。如果不喜欢你刚才的截屏,忽略或者再次点击"捕捉"按钮。

clip_image018

  截屏工具总是实现(按照左下角所显示的清晰度的)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)。不过,我们还没有对所有的可能配置进行测试。

clip_image020

  我们的工作才刚刚开始,在后面的版本中我们会提供更多的功能,同时也希望大家在下面的这个调查问卷中反馈意见,以便于我们对需求进行排序。

  看看内部实现原理

  如果你对 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 系统,或者是在其他的虚拟机上运行。

  如说上面所提的限制是你所急需的,目前的解决办法是使用真机来测试(或者另找一款更好的模拟器)。我们会在后面的版本中把上面的限制列表变短,所以请填写调查问卷来帮助我们进行优先级排序。 

发表评论
用户名: 匿名