【问题标题】:Visual studio android emulator will not start fullyVisual Studio android 模拟器无法完全启动
【发布时间】: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 并显示为正在运行。当我连接时,我看到如下控制台屏幕

【问题讨论】:

    标签: android android-emulator visual-studio-2015 vs-android


    【解决方案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://stackoverflow.com/a/31698124/1010492 和那个https://stackoverflow.com/a/14402740/1010492 帮助我解决了连接问题,并且我能够在模拟器窗口中显示虚拟机。

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

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

    1. 理想情况下,卸载任何其他虚拟化软件,例如 VMWare、Virtual Box 和 VPN 客户端,例如 Cisco VPN(如果您不能 这样做,请在第 13 步保持警惕)
    2. 重启
    3. 在“Visual Studio Emulator for Android”对话框中,删除所有已安装的设备配置文件
    4. 删除所有 Hyper-V 虚拟交换机 - 转到 Hyper-V > 虚拟交换机管理器 > 删除所有虚拟交换机
    5. 运行 XdeCleanup.exe(通常在“C:\Program Files (x86)\Microsoft XDE\10.0.10240.0”中)
    6. 同时删除“控制面板 > 网络和 Internet > 网络连接”中留下的任何额外的虚拟网络适配器(在以下 前面的步骤,你通常应该只剩下物理 适配器)
    7. 确保在所有网络适配器上禁用网络共享(右键单击,属性,共享,取消勾选“允许其他网络用户 通过此计算机的 Internet 连接进行连接”)
    8. 如果你删除了 xdesku.xml 中的 GuestDisplayProvider="VsEmulator.OpenGLGuestDisplay" 行 (通常在“C:\Program Files (x86)\Microsoft XDE\10.0.10240.0\SKUs\Android"),现在是回归的好时机。
    9. 重启
    10. 您可能想要尝试修复模拟器:转到程序和功能 > 适用于 Android 的 Microsoft Visual Studio 模拟器 > 更改和 点击“修复”(尽管我不得不说这对我来说总是失败)
    11. 重启
    12. 打开 Visual Studio Emulator for Android,安装并运行其中一个配置文件(例如:7'' KitKat (4.4) XHDPI Tablet -- 类似于 华硕谷歌 Nexus 7)
    13. 它可能已经工作了,但如果不能,您应该确保您的网络适配器设置正确。停止你的模拟器,然后转到 控制面板 > 网络和 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)
    14. 重启
    15. 尝试在“Visual Studio Emulator for Android”中再次启动模拟器
    16. 如果仍然不起作用,请尝试删除并重新创建配置文件,然后重新启动负载...

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

    【讨论】:

    • 终于!我经历了很多不同的“解决方案”,但这是对我有用的一个。我的问题是,当我直接从 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 虚拟交换机。好吧,最终它奏效了。继续阅读。

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

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

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

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

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

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

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

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

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

    【讨论】:

      【解决方案6】:

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

      【讨论】:

        【解决方案7】:

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

        这就是我解决问题的方法

        在此之后,我能够从“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”

              【讨论】:

                猜你喜欢
                • 2017-01-18
                • 2015-02-18
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2017-09-28
                相关资源
                最近更新 更多