连接虚拟机里的安卓模拟器

0x00 背景

电脑是Mac的,但是安卓模拟器基本都只运行在Windows上,所以我在Mac上安装了Windows虚拟机。但是在虚拟机里使用adb连接模拟器很麻烦,我需要从宿主机Mac上通过adb连接模拟器。

0x01 虚拟机设置

想要在虚拟机里启动模拟器,需要打开硬件虚拟化。我用的是VMWare Fusion,需要在设置里把Intel VT-x/EPT打开。

0x02 端口转发

  1. 在windows中打开"服务",找到"IP Helper"服务,关闭这个服务。
  2. 启动安卓模拟器。
  3. 模拟器完全启动后重新开启"IP Helper"服务。
  4. 以管理员权限启动powershell,断开adb连接:adb disconnect
  5. 转发端口:以管理员权限启动powershell,运行:
    netsh interface portproxy add v4tov4 listenport=5555 listenaddress=0.0.0.0 connectport=21503 connectaddress=127.0.0.1
  6. 在宿主机(Mac)上连接转发的端口:
    adb connect VM_IP:5555

为何要关闭重启IP Helper,是因为这个服务经常占用一些端口,所以先关闭它,等模拟器启动后确保了端口再打开它就不会被占用端口了。

0x03 各种模拟器的端口

  1. NOX (default): 62001
  2. NOX (Android 5): 62025,最近的Nox6.2.7.1仍然用62001端口。
  3. BlueStacks: 5555 (5555被占用时自动使用5556)。
  4. Memu: 21503
  5. Ledian: 5555