想用虚拟机调试Android项目,于是想到了MS免费提供的 Visual Studio Emulator for Android,这玩意价格免费量又足,N久之前试用过,速度杠杠的!
安装包很小,不到40MB,很快就下载好了。由于以前玩过,知道这货依赖Hyper-V,于是先到系统功能中把Hyper-V装上,两次重启才完成。然后开始安装VSEMU,竟然安装不了,提示“The file or directory is corrupted and unreadable”,好像是安装包的问题。于是打开Chrome从MS官网又下载了一份,好在安装包不大,一会儿就下完了。再次安装,还是同样的错误!真崩溃!从回收站找出来上一个安装包,比对了一下两个文件,确认二进制相同,说明安装包没问题,应该是系统的问题!然后查安装日志,找到一处“MUX: ERROR: Could not load file or assembly ‘Microsoft.VisualStudio.Utilities.Internal.Net35 ... ‘”,感觉是这个问题,又往这个方向挖了半天,依然没有解决!此处略去1000字,反正是各种折腾,最后感觉可能还真是下载的文件是坏的,于是把文件URL复制到迅雷里下载一份安装试试,果然好的!安装一切顺利!这个时候我的心里一万匹草泥马在狂奔!不知道到底是移动宽带的问题,还是Chrome浏览器的问题,同样的URL居然下载到的文件是坏的!浪费我宝贵的时间!
装好之后打开、启动虚拟机,启动正常,没问题!打开浏览器,发现不能上网,于是关掉虚机,到网络适配管理中找到虚拟网卡,把IP地址改为本地LAN的分配地址,然后再启动虚拟机,完蛋!启动不了了!然后又开始各种折腾,怎么都不能启动了,老外网站上说找到这个文件“C:\Program Files (x86)\Microsoft XDE\10.0.10586.0\SKUs\Android\xdesku.xml”,删除这一行:GuestDisplayProvider="VsEmulator.OpenGLGuestDisplay",试了根本没效果,还尝试了很多其它的方案,基本都没用!最后才发现是网络设置的问题,有个老外的贴子说是配置了多个内网或多个外网虚拟路由的原因,但我没有配置,应该就是我修改IP地址的原因,于是到Hyper-V管理器中删除所有虚拟网卡、路由和VSEMU的虚拟机,然后在VSEMU里再次启动虚机,它自动创建了相应的虚拟网卡,虚机也启动成功!后来发现只要添加一个External的虚拟网卡,然后Hyper-V的虚机设置里选择这个网卡,虚机就能正常上网了!
接下来开始折腾hosts的问题,由于本机调试的项目是通过hosts中配置的伪域名访问的,也要修改虚机的hosts,看网上的方法说可以通过如下方法修改:
adb remount adb pull /system/etc/hosts vi hosts # 修改好对应内容 adb push hosts /system/etc
有点小激动,结果第一步adb devices 就没有找到虚机,很郁闷。于是继续上网搜索相关解决方案,发现需要配置Android SDK Tools:
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Android SDK Tools
Path="C:\\Program Files\\android-sdk" (目录中要有platform-tools,试了一下tools和platforms好像都不需要)
这样在启动vsemu之后就能 adb devices 列出设备了,也能 adb操作了。
附1:
Android SDK Tools 下载地址 https://developer.android.com/studio/index.html
最下面:仅获取命令行工具
点击下载 sdk-tools-windows-3859397.zip
Android SDK Platform-Tools 下载地址(也可以通过上面下载的 SDK Tools 下载 Platform-Tools)
https://developer.android.com/studio/releases/platform-tools.html
点击下载 SDK Platform-Tools for Windows
注:这两个都可以通过使用迅雷实现高速下载,官方地址直接下载太慢了!
附2:
Android SDK Manager 代理设置
(最新版本的SDK Manager 好像已经没有GUI界面了,只能命令行操作,只有又大又笨的 Android Studio 里带GUI管理工具)
Tools => Options... => Android SDK Manager - Settings
HTTP Proxy Server 设为 mirrors.neusoft.edu.cn
HTTP Proxy Port 设为 80
勾选“Force https://... sources to be fetched using http://...”,然后返回主界面,选择Packages => Reload 即可。