【问题标题】:Android USB debugging in VirtualBoxVirtualBox中的Android USB调试
【发布时间】:2012-09-18 13:26:16
【问题描述】:

我正在尝试在 virtualbox 上的 Windows 7 虚拟机中使用适用于 android 的 mono(又名 monodroid),但我遇到了 adb 与手机的连接问题。当我运行“adb devices”来列出存在的设备时,它显示没有问题,但是当我尝试运行“adb install”、logcat 或 push 时,它会挂起。目前virtualbox中有一个适用于此的错误,但我希望比我更有知识的人有一个解决方法。

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

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

【问题讨论】:

    标签: android usb xamarin.android adb virtualbox


    【解决方案1】:

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

    1. 在主机上安装 Android SDK。您应该只需要包含 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
      

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

    1. 现在您必须将端口从您的主机转发到您的 VM 客户端,或者将 ADB 直接连接到您的主机 IP:port。如果您像我一样,您会发现 ADBHOST 和 ANDROID_ADB_SERVER_PORT 变量的文档记录很差,而且很容易搞砸。因此,请考虑从 VM 客户端通过ssh(可能通过 Cygwin)进行简单的端口转发:

      autossh -nNL5037:localhost:5037 -oExitOnForwardFailure=yes 10.0.2.2
      
    2. 最后,从您的 VM 客户端运行 adb devices。如果您看到“守护程序未运行”,则意味着您的端口转发被搞砸了。否则,您应该会看到您的设备并能够整天登录。值得注意的一点是,您的 VM 客户端上不会运行 adb 守护进程,当然,除非您实际使用调试桥。

    我使用了一种类似的机制来调试通过网络连接到远程机器的设备,并且效果很好。

    【讨论】:

    • 作为使用 ssh / autossh 的替代解决方法,我认为应该有一种方法可以使用 VirtualBox NAT 端口转发规则,但我似乎无法让那些在来宾中工作的人主机方向。
    • 我使用两个网络,一个 NAT 为 VM 提供 Internet 访问权限,第二个 Host-Only 允许主机 -> 来宾,反之亦然。也许这对你有用?我把它放在一个完全不同的子网上,它工作正常,即使主机不在线。
    • 我们也可以使用 socat 获得相同的结果
    • 对我来说,通过 Virtualbox 将 USB 设备传递给 Windows 客户端工作正常。我不得不像这样将自己添加到 vboxusers 组:stackoverflow.com/a/20066190/5935455
    【解决方案2】:

    不确定自问题发布以来 VirtualBox 发生了什么变化,但从 VirtualBox 菜单 Devices -> USB -> DeviceName 中选择 USB 设备可以无缝运行。我正在开发 VirtualBox 5.1.2 r108956。

    【讨论】:

      【解决方案3】:

      我也遇到了在 VM 上运行 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 会话都可以不间断地运行!

      【讨论】:

        【解决方案4】:

        我在这里为与我的设置相似的人发布此信息:

        • 主机操作系统:OSX (10.15.4 Catalina)
        • 客户端操作系统:Windows 10 企业版(v1903 build 18362.752)
        • VirtualBox v6.1.4
        • Android Studio v3.6.2

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

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

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

        希望这会有所帮助!

        【讨论】:

        • 您好,我需要有关特定设置的帮助:1)Virtualbox 上的 Kali Linux VM 2)VirtualBox 上的 Android 4.4 VM 我如何至少获得一个 ADB shell?
        【解决方案5】:

        我遇到了同样的问题,这让我搜索了大约 2 个小时。我尝试了几种方法,包括上述所有解决方案,但都没有奏效

        我的情况

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

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

        在我的情况下,我也应该将驱动程序复制到 flashbuilder android 驱动程序路径,但对于您的情况,这可能不是必需的

        【讨论】:

          【解决方案6】:

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

          我的环境是:

          • 主机操作系统:Mac OS 10.11
          • VirtualBox 中的客户机操作系统:Ubuntu 14.04
          • 设备:运行 Cyanomodgen 12.1 的 Galaxy S5

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

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

          恭喜 :) 现在您可以在安卓设备上使用 ADB 来获取 logcat 或拉取和推送文件。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2017-07-05
            • 2016-04-09
            • 2020-09-03
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多