在并发 Linux VM 中使用 ADB 和 Genymotion

在并发 Linux VM 中使用 ADB 和 Genymotion

我的主机上有一个 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 文件

相关内容