2

我正在尝试使用 Oracle VirtualBox 配置运行 Android x86 的机器,以便它与 Eclipse 一起使用。我在使我的虚拟机“联机”时遇到了一些麻烦。我通过在 Android Terminal Emulator 中键入以下内容将手机连接到 adb:

ifconfig eth0 192.168.40.1 netmask 255.255.255.0
route add default gw 192.168.40.1 dev eth0

之后,我切换到 cmd 并输入 adb connect localhost

但是当我尝试在虚拟 Android 上使用 Eclipse 运行我的测试代码时,它不会出现在 Android 设备选择器菜单中。此外,当我输入adb devicescmd 时,这是响应:

List of devices attached
localhost:5555   offline

让我担心的另一件事是,每次关闭虚拟机后,我必须在重新启动时再次在终端中键入ifconfig和命令,才能连接到设备。route add

我该怎么做才能使设备联机?

编辑: 如果重要,VM 配置为通过 NAT 网络进行通信。这是我的端口转发规则的样子:协议:TCP

主机IP:*

主机端口:5555

访客IP:*

访客端口:5555

EDIT2 相关问题:错误:设备离线

EDIT3:潜在解决方案:Android 设备选择器 - 我的设备似乎离线

4

4 回答 4

5

这比所有这些都容易,在 Android VM Terminal Emulator 类型中启用 adb over tcpip:

adb tcpip 5555

然后从 Eclipse 机器上的命令行通过 adb 进行连接:

adb connect 192.168.40.1:5555

VM 现在应该可以通过 adb devices 以及 Eclipse 中的设备视图使用。

于 2012-09-01T17:52:14.647 回答
4

当我开始开发一些Android应用程序时,我必须处理同样的问题,所以寻找一些东西,就VirtualBox guide我读过 NAT 不需要在主机网络和来宾系统上进行任何配置,因此,它是 VirtualBox 中的默认网络模式。启用了 NAT 的虚拟机就像一台通过路由器连接到 Internet 的真实计算机。在这种情况下,“路由器”是 VirtualBox 网络引擎,它透明地将 trac 从虚拟机映射到虚拟机。在 VirtualBox 中,此路由器放置在每个虚拟机和主机之间。这种分离最大限度地提高了安全性,因为默认情况下虚拟机无法相互通信。NAT 模式的缺点是,就像路由器后面的专用网络一样,虚拟机是不可见的,并且无法从外部 Internet 访问。客户操作系统发出的网络帧被 VirtualBox 的 NAT 引擎接收,它提取 TCP/IP 数据并使用主机操作系统重新发送。对于主机上的应用程序,或与主机位于同一网络上的另一台计算机,看起来数据是由主机上的 VirtualBox 应用程序使用属于主机的 IP 地址发送的。VirtualBox 侦听对发送的包的回复,并将它们重新打包并重新发送到其专用网络上的客户机。
虚拟机在专用网络上从集成到 VirtualBox 的 DHCP 服务器接收其网络地址和配置。因此分配给虚拟机的 IP 地址通常位于与主机完全不同的网络上。由于虚拟机连接到 Virtual-Box 内部的专用网络并且对主机不可见,因此主机或同一网络上的其他计算机无法访问来宾上的网络服务。但是,就像物理路由器一样,VirtualBox 可以通过端口转发向来宾以外的世界提供选定的服务。这意味着 VirtualBox 会侦听主机上的某些端口,并将到达那里的所有数据包重新发送给客户机,在相同或不同的端口上。所以,执行cmd,转到安装 VirtualBox 的文件夹和 VBManage.exe 所在的文件夹,然后键入以下内容以应用 TPC 端口转发:

VBoxManage modifyvm "NameOfYourAndroidVM" --natpf1 adb,tcp,*,5555,*,5555

现在您可以通过 adb 连接到您的虚拟机:

adb connect localhost
于 2012-05-26T08:08:17.353 回答
0

只需将 vm 配置为使用 pridge 网络模式并在网络上启用 dhcp 服务器。

于 2014-08-02T16:54:24.430 回答
0

我认为大多数人已经尝试过这个,但在我的情况下,只需连接到 VirtualBox 的内置 wifi 接入点“VirtWifi”(它可以让虚拟机访问互联网)就可以解决这个问题。除了 5555 端口转发规则外,我所有的虚拟机网络更改都是默认的。我正在虚拟化 Android v9.0 (Pie)。

于 2020-04-13T06:41:36.963 回答