VirtualBox上的Android x86:Android已连接但未联机

VirtualBox上的Android x86:Android已连接但未联机,android,adb,virtual-machine,virtualbox,android-x86,Android,Adb,Virtual Machine,Virtualbox,Android X86,我正在尝试使用Oracle VirtualBox配置一台运行Android x86的机器,以便它能够与Eclipse一起工作。我在使我的虚拟机“联机”时遇到了一些问题。我通过在Android终端模拟器中键入以下命令将手机连接到adb: ifconfig eth0 192.168.40.1 netmask 255.255.255.0 route add default gw 192.168.40.1 dev eth0 之后,我切换到cmd并键入 adb连接本地主机 但是当我尝试在虚拟Androi

我正在尝试使用Oracle VirtualBox配置一台运行Android x86的机器,以便它能够与Eclipse一起工作。我在使我的虚拟机“联机”时遇到了一些问题。我通过在Android终端模拟器中键入以下命令将手机连接到adb:

ifconfig eth0 192.168.40.1 netmask 255.255.255.0
route add default gw 192.168.40.1 dev eth0
之后,我切换到cmd并键入 adb连接本地主机

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

List of devices attached
localhost:5555   offline
另一件让我担心的事情是,每次关闭虚拟机后,我都必须在重启时在终端中再次键入
ifconfig
route add
命令,以便连接到设备

如何使设备联机

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

主机IP:*

主机端口:5555

嘉宾IP:*

客港:5555

EDIT2 相关问题:


EDIT3:潜在的解决方案:

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

VBoxManage modifyvm "NameOfYourAndroidVM" --natpf1 adb,tcp,*,5555,*,5555
现在,您可以通过以下方式通过adb连接到虚拟机:

adb connect localhost

要在Android VM终端仿真器类型中启用adb over tcpip,这比所有这些要容易得多:

adb tcpip 5555
然后从Eclipse计算机上的命令行通过adb进行连接:

adb connect 192.168.40.1:5555

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

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

我想大多数人已经尝试过这一点,但在我的例子中,这个问题只是通过连接VirtualBox的内置wifi接入点“VirtWifi”(该接入点为虚拟机提供互联网接入)解决的。除了5555端口转发规则之外,所有虚拟机网络更改都是默认设置。我正在虚拟化Android v9.0(Pie)。

似乎您需要删除这部分中的空格,否则VBoxManage会抛出一个错误:adb、tcp、*、5555、*,5555@Josh1billion谢谢我没有注意到我把空格拼错了!我马上编辑我的答案!实际上,空格拼写正确,只是不应该在那里:)这个答案帮助了我:不幸的是,我失去了上下文,所以我无法验证哪些答案是最好的。