①不能直连,需要做个端口转发,具体如下:
netsh interface portproxy add v4tov4 listenport=18888 listenaddress=0.0.0.0 connectport=62026 connectaddress=127.0.0.1
在windows cmd命令行输入这行代码,其中
listenport 18888 表示用来转发的端口 可以自定义
listenaddress 0.0.0.0 表示接收转发的虚拟机,0.0.0.0表示无差别转发,也可以指定具体虚拟机ip
connectport 62026 是物理主机模拟器的端口,不同模拟器会有所不同,具体去查即可
connectaddress 表示本机ip 固定为127.0.0.1 也可以是其他远程主机
输入完成之后可以进入linux虚拟机shell界面输入 adb connect 物理主机ip4:1888
物理主机ip4 在命令行输入 ipconfig 其中的ipv4就是 一般为192.168.***.***
example:在linux虚拟机运行
adb connect 192.168.1.7:18888
运行完之后即可正常运链接windows物理机的模拟器
connected to 192.168.1.7:18888
========================================================================
附上netsh interface的相关指令:
查看所有设置的转发端口状态:
netsh interface portproxy show all
删除已经设置的端口转发:
netsh interface portproxy delete v4tov4 listenport=10022 listenaddress=* protocol=tcp
tips:有时候重复设置也会引发错误,所以连得时候需要多方面排查,看是否双重设置了。
还有一种连接不上的方式是因为端口占用: adb默认端口是5037,修改的情况下不会变.
linux下查看端口占用情况:
lsof -i:5037
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 496772 root 89u IPv6 1458420 0t0 TCP localhost:35692->localhost:5037 (ESTABLISHED)
adb 499459 root 9u IPv4 1458408 0t0 TCP localhost:5037 (LISTEN)
adb 499459 root 14u IPv4 1458421 0t0 TCP localhost:5037->localhost:35692 (ESTABLISHED)
发现有两个进程 分别pid是 496772 和 499459 占用了5037端口,我们将其关闭:
kill -9 499459
kill -9 496772
=========================================================================更新:②发现一个很离谱的问题,模拟器从多开器中打开的话连不上,需要从模拟器这个软件直接打开才能连得上,都是吐血经验。
③重启模拟器,关闭之后要去任务管理器里杀掉所有的带有雷电模拟器图标的进程,然后隔至少20秒再在虚拟器里就连得上了.
=========================================================================
更新: ③试了这个方法也不行? 有以下几种原因:
1.安卓手机/模拟器忘记打开调试模式(这个特别重要)
2.划重点!!!!!! 虽然你已经打开调试模式了 但是看下面的图!
有时候安卓机不会挑选这个选项或者你勾选了之后他自己又变成apps only了,一定要注意,不然你花再多时间也找不到原因。
所以从这个教训来看,一个问题的解决,需要从源头去广度搜索,再进行深度搜索,千万不要盲目的乱调。
欢迎留言一起补充这个板块bug问题