Visual Studio android 模拟器无法完全启动

Posted

技术标签:

【中文标题】Visual Studio android 模拟器无法完全启动【英文标题】:Visual studio android emulator will not start fully 【发布时间】:2015-06-15 08:28:12 【问题描述】:

我在 Visual Studio 2015 中创建了一个空白的 Cordova 应用程序,并开始使用 Visual Studio 安卓模拟器进行调试(首先使用棒棒糖,然后使用 Kitkat)。 XDE 启动,屏幕显示OS is starting...。它会保持这种状态很长一段时间,直到它显示出来

The emulator is unable to connect to the device operating system; The device did not response to the connect request. Some functionalities might be disabled'

关闭对话框后,它会一直呆在那里,直到我杀死模拟器。杀死模拟器会触发 Visual Studio 的错误。

Could not start emulated device 'VS Emulator Lollipop Phone'.

当我打开 hyper-v 时,我在列表中看到 vm 并显示为正在运行。当我连接时,我看到如下控制台屏幕

【问题讨论】:

【参考方案1】:

我知道这个问题已经存在一段时间了,但我刚刚为可能仍然遇到这个问题的人找到了一个新的解决方案......

对于 API v 21 和 22,我遇到了同样的问题(卡在“操作系统正在启动”)。API v23 映像会启动,但无法调试 - 应用一启动就会崩溃。

以下解决了该问题:

关闭模拟器 打开 Hyper-V 管理器 转到 android Image 的设置 展开“处理器”配置节点 转到“兼容性”节点 选中“迁移到具有不同处理器版本的物理计算机”选项

显然它与较新的处理器架构与 Android 图像不兼容或类似的东西有关 - 并不在意,只要它可以工作 :)

【讨论】:

这正是我的问题。 API 21 & 22 图像将启动,但 VS 无法将应用程序部署到它。打开该选项效果很好。谢谢! 谢谢!这是此页面上唯一适用于 Surface Pro 4 (i7 6650U) 的解决方案 这也解决了我使用 API 21、22 和 23 设备的问题。 21 和 22 无法通过“操作系统正在启动”,并且在 23 上,当我按下“关于手机”以尝试打开开发人员设置时,设置应用程序崩溃了。如果其他人也遇到了这个正在做 React Native 的事情,你还需要运行 adb reverse tcp:8081 tcp:8081 这个解决方案也对我有用!就上来了。我的建议是编辑您的答案以包括一两个屏幕截图,因为我对您的答案的唯一困难是找到检查该复选框的确切位置。【参考方案2】:

我遇到了同样的问题。正如其他答案中所建议的那样,我确实尝试通过删除 xdesku.xml 中的 GuestDisplayProvider = "VsEmulator.OpenGLGuestDisplay" 来禁用 OpenGL。

起初,虚拟机会启动(您可以从 Hyper-V 管理器连接到它),但模拟器窗口本身不会连接到机器(卡在“操作系统正在启动”,然后在 looooong 后失败同时显示以下消息:“模拟器无法连接到设备操作系统:无法自动检测来宾系统 IP 地址。某些功能可能已禁用。”)

这个答案https://***.com/a/31698124/1010492 和那个https://***.com/a/14402740/1010492 帮助我解决了连接问题,并且我能够在模拟器窗口中显示虚拟机。

但是,在我放回“VsEmulator.OpenGLGuestDisplay”行并删除我的配置文件并重新启动多次之后,模拟器无法正常工作(缩放问题,没有主页、返回等按钮)。

总而言之,如果您在启用 Hyper-V 的计算机上遇到同样的问题,您可能需要尝试 --over conscious-- 以下步骤:

    理想情况下,卸载任何其他虚拟化软件,例如 VMWare、Virtual Box 和 *** 客户端,例如 Cisco ***(如果您不能 这样做,请在第 13 步保持警惕) 重启 在“Visual Studio Emulator for Android”对话框中,删除所有已安装的设备配置文件 删除所有 Hyper-V 虚拟交换机 - 转到 Hyper-V > 虚拟交换机管理器 > 删除所有虚拟交换机 运行 XdeCleanup.exe(通常在“C:\Program Files (x86)\Microsoft XDE\10.0.10240.0”中) 同时删除“控制面板 > 网络和 Internet > 网络连接”中留下的任何额外的虚拟网络适配器(在以下 前面的步骤,你通常应该只剩下物理 适配器) 确保在所有网络适配器上禁用网络共享(右键单击,属性,共享,取消勾选“允许其他网络用户 通过此计算机的 Internet 连接进行连接”) 如果你删除了 xdesku.xml 中的 GuestDisplayProvider="VsEmulator.OpenGLGuestDisplay" 行 (通常在“C:\Program Files (x86)\Microsoft XDE\10.0.10240.0\SKUs\Android"),现在是回归的好时机。 重启 您可能想要尝试修复模拟器:转到程序和功能 > 适用于 Android 的 Microsoft Visual Studio 模拟器 > 更改和 点击“修复”(尽管我不得不说这对我来说总是失败) 重启 打开 Visual Studio Emulator for Android,安装并运行其中一个配置文件(例如:7'' KitKat (4.4) XHDPI Tablet -- 类似于 华硕谷歌 Nexus 7) 它可能已经工作了,但如果不能,您应该确保您的网络适配器设置正确。停止你的模拟器,然后转到 控制面板 > 网络和 Internet > 网络连接,然后右键 单击 vEthernet 适配器,然后单击属性并确保您只 在网络列表中勾选以下框(如解释 在Interference from other virtualization or networking software and drivers:Microsoft 网络客户端、QoS 数据包调度程序、文件 和 Microsoft 网络的打印机共享、Microsoft LLDP 协议 驱动程序,链路层拓扑发现映射器 I/O 驱动程序,链路层 拓扑发现响应程序,Internet 协议版本 6 (TCP/IPv6), Internet 协议版本 4 (TCP/IPv4) 重启 尝试在“Visual Studio Emulator for Android”中再次启动模拟器 如果仍然不起作用,请尝试删除并重新创建配置文件,然后重新启动负载...

这里可能有一些多余的步骤,但我认为它涵盖了您应该尝试的所有内容(关键似乎是确保网络适配器设置正确)。如果我遗漏了一些东西,或者您认为某些步骤没用,请发表评论。

【讨论】:

终于!我经历了很多不同的“解决方案”,但这是对我有用的一个。我的问题是,当我直接从 hyper-v 管理器(或者它被称为什么)启动它时,android 虚拟机确实启动并工作了,但是 vs 模拟器只是给了我“未知的退出代码”。谢谢! 您的解决方案对我有用。我注意到这是在我使用以太网适配器设置后发生的,显然 Hyper-V 不喜欢更改网络设置。【参考方案3】:

经过大量搜索,我得到了这个工作。希望这可以帮助。我在MSDN Article for Android Emulator with Visual Studio 2015的 cmets 中找到了它

如果您通过转到 Program Files(或 Program Files x86,如果您在 64 位计算机上)\Microsoft XDE\10.0.0.0\SKUs\Android\xdesku.xml 并删除来禁用 OpenGL,新图像可能会起作用这一行:GuestDisplayProvider = "VsEmulator.OpenGLGuestDisplay"。但是,如果不打开 OpenGL,您将无法利用许多新功能

【讨论】:

我刚刚试了一下,取得了一些成功。 XDE 窗口显示OS is starting,并且已经存在很长时间了。当我打开 hyper-v 和 Connect 到正在运行的 VM 时,它意识到它已经成功启动并且我可以与它进行交互。我认为现在的问题是让 XDE 识别它。 此设置适用于我。VMware Player 7。2 个处理器内核。虚拟化英特尔 VT-x/EPT 或 AMD-V/RVI 并勾选虚拟化 CPU 性能计数器。我还在我的虚拟机的 VMX 文件中添加了 hypervisor.cpuid.v0 = "FALSE" 并保存了文件。 (注意:如果我在文件底部有它,您可能需要从底部添加几行,因为它在打开 VM 后将其删除)。所有这些步骤一起在 XDE 窗口中打开 Android 模拟器。然后我可以利用这些工具旋转和倾斜设备,并查看 XDE 窗口从横向变为纵向等。 你是说我应该安装VMware Player吗?不会干扰 hyper-v? 针对我的特定设置。我只是在虚拟机中运行它时才得到你的错误。这对您来说是同样的情况,还是您的主机上运行 Visual Studio 2015 CTP 6?正如您提到的,hyper-V 和 VMWare 不能一起工作,但是在使用 vmplayer/vmware 运行的 vm 中运行 hyper-v 确实可以。 我正在使用 NativeBoot。只有硬盘驱动器被虚拟化。我双启动进入 Windows 10。【参考方案4】:

在我的系统上,再次启用禁用的 vEthernet(内部以太网端口 Windows Phone 仿真器内部交换机)后,它再次工作。 我不必重新启动。

【讨论】:

杰普,这就是我的解决方案!谢谢巴特,一位老网络工程师自己找不到这个有点尴尬;)在我读到这篇文章之前,我什至没有查看网络设置。是的,由于上周安装了虚拟盒子,它处于非活动状态。【参考方案5】:

我完成了@Gyum Fox 回答中的步骤,但我仍然不高兴。

在 Visual Studio Emulator for Android 创建第一个模拟器实例的同时,还创建了几个虚拟网络交换机。对于笔记本电脑,通常会创建三个 vEthernet 实例;一个用于有线 LAN,一个用于 Wi-Fi,另一个用于访客到主机连接的内部虚拟交换机。

在我的例子中,有线 LAN 的 vEthernet 已成功创建,然后 Visual Studio Emulator for Android 进程将挂起。这可以从 Hyper-V ManagerVirtual Switch Manager 操作中观察到。

使用虚拟交换机管理器,我通过这些步骤成功创建了缺少的 Wi-Fi 虚拟交换机。好吧,最终它奏效了。继续阅读。

    Virtual Switches 列表下,选择 New virtual network switch...您要创建哪种类型的虚拟交换机?下,选择外部。 在外部网络:下拉列表中,选择 Wi-Fi 适配器。 点击创建虚拟交换机按钮。 更改名称:以匹配您的 Wi-Fi 适配器的名称。 点击应用按钮。

但在我的情况下,点击应用后,出现一条失败消息,表明 Wi-Fi 适配器已桥接。嗯。

我启动了查看网络连接控制面板小程序,但 Wi-Fi 适配器没有显示它已桥接。 (当存在网桥时,Status 列会附加单词Bridged。)我怀疑注册表中的某处潜伏着一些尘土飞扬的数字位。

这是为我解决问题的方法。

    右键单击 Wi-Fi 设备。 选择添加到桥。 再次右键单击 Wi-Fi 设备。 选择从桥中删除

现在,返回为 Wi-Fi 网络创建虚拟交换机的步骤。这些步骤现在应该会成功完成。

现在,您可以返回创建所需的 Android 模拟器了。

最后一个想法……如果您没有看到任何正在创建的虚拟交换机,我怀疑这可能意味着有线 LAN 可能有尘土飞扬的数字位让您陷入困境。在这种情况下,我会在有线 LAN 适配器上尝试 add-and-remove-from-bridge 技巧,看看是否可以为您解决问题。

而且,现在我认为只在网络适配器上执行 add-and-remove-from-bridge 技巧而不创建虚拟交换机就足够了。对我来说,虚拟交换机的创建证明问题已得到纠正。 YMMV ;-)

【讨论】:

【参考方案6】:

我发现我的问题与我的公司应用于所有 PC 的一些企业策略的 windows 防火墙有关。一旦我停止了 Windows 防火墙服务,它就可以正常工作了。

【讨论】:

【参考方案7】:

我也有这个问题,它不仅适用于 android 模拟器,而且适用于所有 windows phone 模拟器。

这就是我解决问题的方法

卸载 Genymotion 和 Virtual Box(我的系统中有这些,但这并没有解决问题) 删除了所有虚拟适配器。这是棘手的部分。没有一个适配器无法从 Hyper-V 虚拟管理器中删除。我不得不使用 powershell 并运行 remove-vmswitch -Name "V 适配器的名称" -force 另外,从这里我无法删除所有适配器,我找到了这个链接“https://social.technet.microsoft.com/Forums/windowsserver/en-US/e49df568-4f4c-47b7-b30c-952d1e26ca58/cant-remove-failed-virtual-switch-from-hypervs-virtual-switch-manager?forum=winserverhyperv”并删除了所有虚拟适配器 重启电脑 此后,Hyper-V 虚拟管理器中没有任何 v 适配器

运行 XdeCleanup.exe(以防万一)

另外,我从我的病毒防护中禁用了防火墙

在此之后,我能够从“Visual Studio Emulators for Android”运行模拟器

【讨论】:

【参考方案8】:

尽管 Gyum Fox 提供的见解提供了我尝试其他东西所需的线索,但我正在添加一个单独的答案...

[注意:我上次能够使用模拟器时(大约 3 周前)我禁用了无线功能,并且在我的开发笔记本电脑上使用了有线连接。我的交换机空间不足,因此重新启用了无线作为唯一的连接选项。这可能完全是巧合,但请继续阅读,我会让你们决定。]

按照Gyum的步骤没有成功,我决定关闭无线,然后尝试启动模拟器。

您不知道吗...它可以正常工作! 8-

一旦我运行了模拟器,我就重新启用了无线,并且模拟器获得了连接。

我不是网络人,所以我什至不会尝试去理解。这是一个小皮塔饼,但是嘿......如果它有效! ;-

【讨论】:

【参考方案9】:

在我的机器上,我可以启动模拟器,但在尝试部署和调试时出现 OpenGL 错误。我意识到我的问题是在安装 Docker 后开始的。一时兴起,我决定关闭 Docker 并禁用 vEthernet (DockerNAT) 网络连接。这解决了我的问题。现在,每当我需要使用 Andoird 模拟器时,我都必须关闭 Docker。然后,当我完成调试后,我启用/重新启动 Docker。

【讨论】:

【参考方案10】:

我遇到此问题的原因之一是我没有在默认位置安装 Android SDK。所以我必须按照这些说明来调试我的应用程序:https://msdn.microsoft.com/en-us/library/mt228282.aspx#ADB

我必须创建文件夹“Android SDK Tools”并将带有值的键“Path”添加到我的 SDK,在我的例子中是“E:\Android\Android_SDK”

【讨论】:

以上是关于Visual Studio android 模拟器无法完全启动的主要内容,如果未能解决你的问题,请参考以下文章

Android 模拟器未在 Visual Studio 中显示

Visual Studio Android 模拟器没有互联网连接

如何将 Visual Studio 2015 Android 模拟器连接到网络?

Visual Studio Android 模拟器网络不工作

Visual Studio - Android - “模拟器意外退出。请检查模拟器设置”

Visual Studio android 模拟器无法完全启动