VirtualBox中的Android USB调试

Bri*_*ian 18 usb android virtualbox adb xamarin.android

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

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

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

Ste*_*ski 30

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

  1. 在主机上安装Android SDK.您应该只需要包含的platform-tools包adb.
  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
    
    Run Code Online (Sandbox Code Playgroud)

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

  1. 现在,您必须将端口从主机转发到VM客户端,或者将ADB直接连接到主机IP:端口.如果你像我一样,你会发现ADBHOST和ANDROID_ADB_SERVER_PORT变量记录不清,容易搞砸.出于这个原因,考虑ssh从VM客户端那样简单的端口(可能通过Cygwin):

    autossh -nNL5037:localhost:5037 -oExitOnForwardFailure=yes 10.0.2.2
    
    Run Code Online (Sandbox Code Playgroud)
  2. 最后,adb devices从您的VM客户端运行.如果你看到"守护程序没有运行",那就意味着你的端口正在搞砸了.否则你应该看到你的设备并能够整天登录.值得注意的一点是adb,除了实际使用调试桥之外,您的VM客户端上不会运行守护程序.

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


FUD*_*FUD 11

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


Neb*_*l22 6

我也遇到了在 VM 上运行 ADB 的问题。我有一个 Windows 10 主机和一个 Ubuntu 14.04 客户端。该autossh方法对我不起作用。我从另一个StackOverflow 问题中找到了一个更简单的解决方案。它要求您的 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 会话都不间断地运行!


mor*_*tic 6

我在这里为那些与我的设置类似的人发布此内容:

  • 主机操作系统:OSX (10.15.4 Catalina)
  • 客户端操作系统:Windows 10 Enterprise(v1903 内部版本 18362.752)
  • 虚拟盒 v6.1.4
  • Android Studio v3.6.2

要允许客户端操作系统 (Windows) 中的 Android Studio 通过 USB 连接到 Android 手机(使用 adb):

  1. 更新到 VirtualBox 的最新版本(当前为 6.1.4)
  2. 从这里安装 VirtualBox 扩展包
  3. 在虚拟机关闭的情况下,转到设置 > 端口 > USB 并确保 USB 3.0 (xHCI) 控制器已启用,然后单击“确定”
  4. 主机操作系统(即 OSX)打开终端并启动adb并通过运行确认手机已连接adb devices
  5. 启动虚拟机,然后从 VirtualBox 菜单中选择设备 > USB > [您的手机] 将主机操作系统 USB 端口连接到虚拟机
  6. 在客户端操作系统 (Windows) 上打开终端并运行adb devices以确认 adb 服务器正在运行并且可以找到您的手机。您可能需要将 Android 平台工具添加到您的 PATH 中(我的路径位于 C:\Users\Username\AppData\Local\Android\Sdk\platform-tools)。adb此步骤可能是可选的——我怀疑 Android Studio 可能会自行启动。
  7. 在客户端操作系统 (Windows) 中启动 Android Studio,然后转到“文件”>“设置”>“外观和行为”>“系统设置”>“Android SDK”>“SDK 工具”,并确保已安装 Google USB 驱动程序(请参见此处的屏幕截图

完成这些操作后,Android Studio 能够检测我的手机并使用该设备运行/调试应用程序。

希望这可以帮助!