从Vagrant机器连接到Android模拟器

4
我正在尝试通过在vagrant机器上使用命令adb connect 10.0.2.2,将我设置的vagrant机器连接到我普通计算机上的Android模拟器,然后我会得到这样的输出:connected to 10.0.2.2:5555
然而,当我执行adb devices命令时,输出为10.0.2.2:5555 offline,这很奇怪,因为我的模拟器实际上正在运行,当我在我的普通计算机上执行adb设备时,输出为:
List of devices attached 
emulator-5554   device

我已经尝试过多次杀掉并重新启动adb服务器,但是问题仍然存在。请问有人可以帮我解决吗?非常感谢!

你解决了吗?我也遇到了这个问题。 - Steve
1个回答

1
这是让它开始运行的方法,但我花了很长时间才想明白:

  • Android服务器应该只在您的主机上运行。如果您的Android模拟器正在运行,则我认为它会自动保持adb服务器运行(在主机上)。
  • 在Vagrantfile中启用公共网络选项(以给vagrant机器分配独立的IP地址)https://www.vagrantup.com/docs/networking/public_network.html
  • 使用vagrant ssh-config获取vagrant ssh配置。
  • 直接使用ssh连接到vagrant(不是vagrant ssh),如下:ssh -R 5037:localhost:5037 -l vagrant -i [私钥路径] [vagrant机器IP地址]

-R 5037:localhost:5037指令告诉SSH创建一个反向端口转发,其中5037是adb服务器使用的端口。因此,在vagrant机器上运行的任何adb命令都将连接到在主机上运行的adb服务器,后者将在模拟器(adbd)上执行它们。

所以,这种方法成功地将三个adb系统(adb客户端、adb服务器、adb守护程序)分别分配到3个机器实例上(vagrant、主机、模拟器)。 https://developer.android.com/studio/command-line/adb.html 为了测试其是否正常工作,在vagrant机器上运行adb devices,你应该会在列表中看到模拟器。
我记不清具体原因了(我想有几个原因),但尝试使用adb connect是一条死路。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接