VirtualBox中的Android USB调试

问题描述 投票:14回答:5

我想在虚拟机上的Windows 7虚拟机中使用单声道安卓(又名monodroid),但是我的手机与adb连接有问题。当我运行“adb devices”列出存在的设备时,它显示没有问题,但是当我尝试运行“adb install”,logcat或推送它时挂起。目前虚拟机中存在一个适用于此的错误,但我希望有更多比我自己知识渊博的人有一个解决方法。

https://www.virtualbox.org/ticket/6620

当然,如果Xamarin发布了他们产品的linux端口或者我熟悉Java,那么这不会是一个问题,但我认为这些问题略有不同。

android usb xamarin.android adb virtualbox
5个回答
30
投票

Brian,您可能会考虑的一种解决方法是让您的VM主机也成为ADB主机。然后,您可以通过TCP / IP将VM客户端连接到它。以下是该设置的一般概念:

  1. 在主机上安装Android SDK。您应该只需要包含adb的platform-tools包。
  2. 不要让您的VM客户端取得Android设备的所有权,因此请禁用您拥有的任何VirtualBox USB过滤规则,然后分离并重新连接设备也不会受到影响。
  3. 从您的VM客户端,运行adb kill-server。确保它成为tskill adb。如果您有任何正在运行的Eclipse实例,那么您首先要关闭它们,因为它实际上会在后台启动adb。不要跳过这一步。
  4. 从主机,执行adb devices。如果一切顺利(并且它应该),您将看到列出您的设备。它看起来应该是这样的(注意端口号并抱歉): * daemon not running. starting it now on port 5037 * * daemon started successfully * List of devices attached 015d2994ed200409 device

此时,您的主机应该有一个在端口5037上运行的ADB服务器。您可以通过运行telnet 10.0.2.2 5037从VM客户端进行检查,其中10.0.2.2是VirtualBox主机的默认IP,5037是上面提到的默认ADB端口。

  1. 现在,您必须将端口从主机转发到VM客户端,或者将ADB直接连接到主机IP:端口。如果你像我一样,你会发现ADBHOST和ANDROID_ADB_SERVER_PORT变量记录不清,容易搞砸。出于这个原因,考虑从VM客户端上通过ssh(可能通过Cygwin)进行简单的端口传输: autossh -nNL5037:localhost:5037 -oExitOnForwardFailure=yes 10.0.2.2
  2. 最后,从VM客户端运行adb devices。如果你看到“守护程序没有运行”,那就意味着你的端口正在搞砸了。否则你应该看到你的设备并能够整天登录。值得注意的一点是,除了实际使用调试桥之外,您的VM客户端上不会运行adb守护程序。

我使用了一种类似的机制来调试连接到远程机器的网络上的设备并且运行良好。


11
投票

自问题发布以来,不确定VirtualBox中有什么变化,但是从VirtualBox菜单中选择USB设备 - > USB - > DeviceName可以无缝地工作。我正在开发VirtualBox 5.1.2 r108956。


3
投票

我也遇到了运行虚拟机的ADB问题。我有一个Windows 10主机和一个Ubuntu 14.04客户端。 autossh方法对我不起作用。我从另一个StackOverflow question找到了一个更容易的解决方案。它要求您的PC和设备都在同一个WiFi网络上。

  1. 在VM客户端上运行以下命令:adb tcpip 5555 设备将断开与VM的连接,因为ADB现在处于TCP模式而不是USB模式。
  2. 对于下一部分,您需要设备的IP地址。要找到它,只需运行adb shell ip -f inet addr show wlan0
  3. 现在您可以连接到您的设备。在VM客户端上,运行: adb connect <Device IP>:5555

从这里开始,我的所有adb shell,logcat和monkey会话都没有中断!


2
投票

我有同样的问题,它让我搜索大约2个小时。我尝试了几种方法,包括所有上述解决方案,但没有一个工作

我的情况

我的主机是archlinux,客户是Windows 8.1我在windows中运行flash builder但usb调试不起作用,我的连接设备是nexus 5所以我按照这些步骤

  1. 从虚拟框菜单启用USB控制器机器 - >设置 - > usb启用USB控制器并启用USB 2.0(EHCI)控制器然后添加您的设备(单击右侧的+按钮)然后启动您的虚拟机
  2. 现在你应该从here下载最新的google usb驱动程序并将其解压缩
  3. 转到控制面板设备管理器右键单击您的设备转到驱动程序选项卡并单击更新驱动程序应该有两个选项一个自动搜索...另一个浏览我的计算机选择第二个并提供提取的文件路径(检查包含子文件夹选项)在此之后您的设备应该被Windows识别,并且您的Android设备中将有一条消息允许访问您的设备

在我的情况下,我应该将驱动程序复制到flashbuilder安卓驱动程序路径,但也许对于你的情况,这是没有必要的


1
投票

我对VirtualBox 5.0.14也有同样的问题,Stephen Niedzielski提供的解决方案对我不起作用。如果有人仍然感兴趣可以试试这个解决方案。

我的环境是:

  • 主机操作系统:Mac OS 10.11
  • VirtualBox中的客户操作系统:Ubuntu 14.04
  • 装置:Galaxy S5运行Cyanogen 12.1

在主机操作系统中启动一个wifi热点并连接android设备,或者在路由器中连接两者。在虚拟机中将来宾操作系统的网络模式设置为“桥接适配器”,然后选择Wifi适配器的名称。这样主机操作系统和安卓设备就在同一个网络中。

然后,在Android设备中激活“开发者模式”并启用Cyanomodgen提供的“网络上的ADB”。 (对于具有原始版本android的设备,谷歌如果可能的话如何在网络上使用ADV)在主机操作系统中运行'adb kill-server'并确保没有ADB实例正在运行。然后运行命令'adb connect 192.168.2.12',android设备的ip。

恭喜:)现在你可以使用Android设备的ADB来获取logcat或拉动和推送文件。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.