平时用模拟器调试,用的比较多的是夜神或者逍遥模拟器
那么在物理机上用adb连模拟器:
adb connect 127.0.0.1:21513
端口百度一下应该就有了,多开的情况下端口会递增,夜神是62001,62025,62026......,逍遥是21503,21513......
我们有些情况下需要使用linux上的软件与Android设备进行adb连接,而linux一般都是在Windows上开个vmware虚拟机来实现,这个时候如果没有真机(或者必须用模拟器)的情况下,就要从虚拟机连接物理机上的Android模拟器了。因为Linux上的模拟器本来速度就感人,再加上是在虚拟机里面。
那么虚拟机通过adb连物理机的安卓模拟器应该怎么办呢?
一开始我尝试了Wifiadb,结果在模拟器装Wifiadb,物理机和虚拟机都连不上
那么就直接连肯定是连不上的,需要端口转发,凭感觉试了一下,果然不行。然后就去查找了一下关于端口转发的配置方法,这里记录一下。
简单来说,如果需要虚拟机连上物理机的模拟器,就要在物理机找一个端口作为监听端口,然后转发到对应模拟器的端口即可,监听发起TCP的端口可以设定为虚拟机的ip,也可以直接0.0.0.0设为监听所有
我并不确定转发到的对象设定的ip地址是物理机,还是模拟器的ip地址,后来才想明白两者都用的是本机的ip地址(模拟器在adb shell里面ifconfig查看到的ip地址根本ping不通的)
大概画了下本机内部的网络架构:
然后在本地Windows以管理员身份运行cmd,然后执行命令
netsh interface portproxy add v4tov4 listenport=18888 listenaddress=10.0.2.15 connectport=21513 connectaddress=127.0.0.1
其中,listenport是自己设定一个端口,这里我设定为18888,你也可以设成别的
然后listenaddress是虚拟机的ip,如果你不只一台虚拟机有这个需求,这里也可以设成0.0.0.0,监听所有ip地址向18888端口的访问
connectport是原来在Windows连Android模拟器的端口
connectaddress如果你的模拟器就在windows本地开的就127.0.0.1,当然如果想远程连另一台电脑上的,可以改成另一台电脑的ip,同样在那台电脑上也要做端口转发
然后就可以在虚拟机上通过adb连模拟器啦
adb connect 192.168.255.10:21513
最后,如果想要删除转发规则,执行命令
netsh interface portproxy delete v4tov4 listenaddress=10.0.2.15 listenport=18888