我的主机上有一个 Linux VM 和一个 genymotion VM。两者的网络配置相同(我自己设置的),即:
Adapter 1:
Attached-To: Host-only adapter
Name: VirtualBox Host-Only Ethernet Adapter
Advanced:
Promiscuous Mode: Deny
Cable connected: yes
Adapter 2:
Attached-To: NAT
Advanced:
Cable connected: yes
Adapter 3:
Attached-To: Bridged Adapter
Name: Realtek PCIe GBE Family Controller
Advanced:
Promiscuous Mode: Deny
Cable connected: yes
Adapter 4:
Attached-To: Bridged Adapter
Name: TAP-Windows Adpater V9
Advanced:
Cable connected: yes
我可以adb devices
在主机中看到:
C:\Program Files\Genymobile\Genymotion\tools>adb devices
List of devices attached
192.168.184.101:5555 device
当我尝试在 Linux 客户机中使用它时adb devices
,它什么也没显示。如果我输入,adb connect 192.168.184.101
它显示已连接,但它显示离线状态。最后,我可以从 Linux VM 成功 ping 我的 Android VM。
答案1
因为我遇到了同样的问题,所以我对其进行了更深入的研究并找到了一个“可以的”解决方案。
基本上,要点是,Genymotion 会自动使用 Windows 操作系统的 adb 连接到模拟器(如果您在设置中提供了路径,则是 Genymotion-Local-adb 或已安装的 SDK)
因此,通过启动模拟器,“Windows-ADB”通过仅主机适配器连接到模拟器并“阻止”端口。当您尝试连接时,模拟器已经很忙并发送状态“离线”。
我没有找到解决方案,如何直接通过 Genymotion 阻止 adb 连接,但这里有一个解决方法:
1.)找到 Genymotion 正在使用的 adb(可能在 Genymotion/tools 或提供的 /android-sdk/platform-tools/
2.)在 Windows 上终止连接在文件夹中打开 cmd 并中断连接:
adb disconnect adb kill-server
3.)完成此操作后,您可以通过虚拟机更快地连接到模拟器:
#!/bin/bash
echo ADB Genymotion connect...
./adb disconnect
./adb kill-server
ADBHOST=192.168.1.2 ./adb devices
echo Done!
在 ADBHOST 之后获取 Genymotion-Emulator 的 IP。如果一切正常,设备现在在 VM 中处于“在线”状态,而在 Windows 中处于“离线”状态。
干杯,霍布
更新:Adetutu 给出了步骤 3 的详细信息,这是正确的。谢谢!
答案2
Hob 的答案是正确的。=只是为了纠正虚拟机/客户机上的脚本,它应该是
/bin/bash #!/bin/bash
echo ADB Genymotion 连接...
adb 断开连接
adb kill-server
ADBHOST=IPofGenyMotiondevice adb 设备
echo 完成!
=然后保存为可执行 bash 文件,在 Windows 上立即 kill-server 并在客户操作系统中运行该 bash 文件