如何使用Android模拟器进行远程调试?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (36)

是否可以在一台机器上编写代码/编译Android应用程序并在另一台机器上启动的模拟器上进行远程调试?我厌倦了模拟器不断吃掉笔记本电脑一半的CPU。

提问于
用户回答回答于

我以前没有尝试(甚至没有注意到)adb connectcmb提到的命令,但我可以确认自己转发TCP端口 - 例如通过SSH - 可以正常工作。

仿真器在每个实例上侦听两个TCP端口:5554用于telnet接口,5555用于与DDMS等工具进行控制通信。所以你可能只能通过转发端口5555(尽管我只用这两个端口来试用它)。每个后续的模拟器都会采用下一个可用的偶数+奇数端口号元组(我认为最高可达5580)。

作为参考,我在本地机器上执行了以下步骤:

  • ssh -NL 5554:localhost:5554 -L 5555:localhost:5555 myuser@remote-server
  • killall adb; adb devices

用户回答回答于

这是我在Windows上解决它的方式。我几乎跟随克里斯托弗的领导,但我不能编辑,所以一个新的答案将不得不做。

我遇到的问题是,亚行和模拟器只是在为我听127.0.0.1,而不是0.0.0.0。

  1. 我在运行模拟器的机器上安装了WinSSHD。(我相信它也可以和freeSSHd一起工作,但我无法在那里获得登录。)
  2. 我在Windows防火墙中打开了端口22(TCP)。(WinSSHD可能可以为你做到这一点。)
  3. 我在WinSSHD GUI中创建了一个虚拟帐户。
  4. 我创建了一个从开发机器到仿真器的新PuTTY连接,并确保可以连接。
  5. 然后我在PuTTY中设置隧道:连接 - > SSH - >隧道 Source port: 5554 Destination: localhost:5554 Type: Local/Auto Source port: 5555 Destination: localhost:5555 Type: Local/Auto (连接并保持PuTTY打开,以维护隧道。)
  6. 现在我启动了远程计算机上的仿真器,并确保ADB不在那里运行。
  7. 我在开发机器上重新启动了ADB(adb kill-server然后adb start-server)。
  8. adb devices并且远程模拟器显示为emulator-5554 device。我现在可以直接从Eclipse / ADT部署和运行我的应用程序,其中模拟器显示在虚拟设备下,就像它是本地模拟器一样。

扫码关注云+社区