Andriod Studio结合Visual Studio Emulator for Android调试Android App

2017-03-22 14:00:51

0. 工欲善其事必先利其器

说到开发就绕不开调试程序,调试Android App我们有2种选择,真机调试和模拟器调试:真机调试相对简单,就不做介绍了,还有一方面原因是由于安卓手机一旦插到电脑上,开始ADB调试后,各种的流氓软件净是往手机上装垃圾应用,妈蛋的;随后就试了几次Android Studio的模拟器之后,无限感慨,真尼玛的卡,卡,卡,,,是可忍孰不可忍.....

前些日子留意到微软发布了一款Android模拟器,随尝试一下,如是就有了这篇博文。

1. Visual Studio Emulator for Android

不得不佩服微软,模拟器做的竟然比Google自家做的要好,流畅多了,但是需要hyper-v的支持,怎么开启hyper-v这里就不做介绍了,度娘会给你一堆教程的。

Visual Studio Emulator for Android官方介绍页面

配置Android Studio的官方博客(本博客大部分参考资料来源于此)。

Visual Studio Emulator for Android下载地址。

下载完后是一个40M左右的vs_emulatorsetup.exe文件,不包含安卓模拟器的镜像文件,安装的时候会默认在线下载API 19(Andorid 4.4)的x86镜像,后续你也可以单独再下载其他的API xx版本,另外说明一下,Visual Studio Emulator for Android是不依赖Visual Studio的,也就是说可以单独安装使用,Android Studio是使用adb作为桥梁来连接Visual Studio Emulator for Android

安装步骤我就不列出来了,记得安装后重启(它需要把自己加入Hyper-V Administrators的管理员组里面)

安装重启后打开Visual Studio Emulator for Android,如下所示:

如果你启动了模拟器,则会在Hyper-V里面自动创建出对应的x86的Android虚拟机来,笔者的如下:

2. 设置Andorid Studio使其可以使用这些模拟器

打开Android Studio>Run>Edit Configurations>Defaults / Android Application General 选项卡的Target Device节点,勾选Show chooser dialogUse same device for future launches 记得不要忘记点Apply和OK。如下图:

3. 为Android Studio添加启动模拟器的快捷按钮

虽然在Visual Studio Emulator for Android的管理器窗口中可以启动模拟器,但是每次都要到这里面去打开还是比较繁琐的,故而我们为Android Studio添加一个启动Visual Studio  Emulator for Android的快捷按钮。

3.1 配置External Tool(VS Emulator (4.4 API 19)

打开File Settings > External Tools>Add

  1. Name:随便写,方便你认出来就好,笔者的是VS Emulator (4.4 API 19)

  2. Program:填写Visual Studio Emulator for Android安装目录下的emulatoecmd.exe的绝对路径,就是用它来启动模拟器的。笔者的是C:\Program Files (x86)\Microsoft Emulator Manager\1.0\emulatorcmd.exe

  3. Parameters:添加启动模拟器的参数,/sku:Android是说明打开Android的模拟器,/id:后面的Guid是模拟器的唯一编号,总的意思是指定要启动哪一个Android模拟器。id可以通过emulatorcmd.exe /sku:Android list /type:device获得,如下: 

  4. Working Directory:指定工作目录,应该是可以随便填写的。笔者的是$ProjectFileDir$。 

3.2 添加按钮(VS Emulator (4.4 API 19))到Toolbar

在toolbar空白处点击右键,选择Customize Menus and Toolbars。然后导航到Main Toolbar Add After >在弹出的面板中找到External tool > VS Emulator (4.4 API 19) 然后按OK如下:

然后点击我们新添加的按钮了,就可以启动Android模拟器了:

4. 为Android Studio添加Connect模拟器的快捷按钮

第三节的按钮只是启动了模拟器,但是Andorid Studio还无法连接到模拟器,这里就要使用adb命令来连接到刚才启动的模拟器上

4.1 配置External Tools(adb Connect (VS Emulator)

同样是添加一个快捷按钮,步骤和第三部一样,只是参数不同,这里我就只把参数列出来了:

  1. Name:随便写,方便你认出来就好,笔者的是adb Connect (VS Emulator) 。

  2. Program:填写adb.exe的绝对路径,笔者的是D:\_android\sdk\platform-tools\adb.exe

  3. Parameters:添加adb.exe的参数,connect ip:5555;笔者的是192.168.2.233:5555。ip可以通过打开模拟器在wifi中查看,也可以在模拟器的设置中network中查看
     

  4. Working Directory:指定工作目录,应该是可以随便填写的。笔者的是$ProjectFileDir$

4.2 添加按钮(adb Connect (VS Emulator))到Toolbar

步骤和3.2一样的,这里就不再解释了。贴个图吧:

5. 用Visual Studio Emulator for Android调试Android App

按下Run按钮(绿色箭头那个...),弹出选择Android设备的选择框:

OK啦,大功告成:

6. 进一步完善

每次调试前都要点一下启动模拟器的按钮,等模拟器启动然后再点击contect模拟器的按钮,然后才能点run调试,,,好繁琐。

我们来配置一下run之前要执行的命令,让run按钮把这三件事都做了!

打开Run > Edit Configurations > Defaults / Android Application / Emulator 选项卡的BeforeLaunch节点,把我们刚才创建的两个External Tool添加到此处记得不要忘记点Apply和OK,顺序如下:

 

这样我们以后调试就不用点3个按钮了,一个run全搞定,,,

but,,,我发现这个加进去后重启Andorid Studio后就消失了,,,有木有知道怎么解决的小伙伴,给支支招。


  • 2019-02-19 10:01:55

    node下使用open模块在指定浏览器下打开url

    最近在做一个项目的过程中,得到一个远程二维码图片的url,需要扫码登录,每次都是在控制台发url打印出来,再复制粘贴到浏览器的地址栏中打开扫码,整个过程过于繁琐,于是想找一个模块,直接在node下,指定浏览器打开该图片。这样可以省不少事。

  • 2019-02-24 09:47:09

    解决Node.js的命令行输出中文乱码问题(也适用于Electron)

    ​一般我们的js文件都是试用utf8编码保存的,但是中文windows的命令行一般默认使用cp936编码(就是gbk),这样我们用js代码 console.log('中文');输出日志的时候,会发现输出的是乱码。 网上有提供一些解决方案,典型的就是用iconv或iconv-lite,把这些中文字符串先转成gbk再输出。 但是这个方案我试了多次,在win10的命令行下,utf8的字符串是成功转成了gbk字符串了(通过打印Buffer可以见到),但是输出还是乱码。

  • 2019-02-25 10:05:41

    Android Socket连接(模拟心跳包,断线重连,发送数据等)

    因为是要保证全局只能有一个连接,而且我们还需要在不同的Activity中发指令,因此肯定不能在需要发指令的界面中都去连接socket,这样一来不好管理,性能也不好,重复代码也会比较多,所以想了一下还是把socket放到service中比较好,发指令功能都放在service中即可。

  • 2019-02-28 15:54:24

    HTTP协议缓存策略深入详解之ETAG妙用

      HTTP协议规格说明定义ETag为“被请求变量的实体值” 。另一种说法是,ETag是一个可以与Web资源关联的记号(token)。典型的Web资源可以一个Web页,但也可能是JSON或XML文档。服务器单独负责判断记号是什么及其含义,并在HTTP响应头中将其传送到客户端。

  • 2019-02-28 16:46:26

    android获取视频、图片时添加防盗链

    使用HTTP协议时,可以利用头信息中的Referer做防盗链。 我们在一些网站的网页里访问图片的时候,在图片本站是可以正常看到的,但在外头就不能看到了,这是因为在http的header信息中的referer元素。