1. 程式人生 > 其它 >虛擬機器上通過adb連線物理機上的Android模擬器

虛擬機器上通過adb連線物理機上的Android模擬器

平時用模擬器除錯,用的比較多的是夜神或者逍遙模擬器

那麼在物理機上用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 v4tov4listenport=18888 listenaddress=10.0.2.15connectport=21513connectaddress=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