VMware虛擬機上通過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 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連模擬器啦(ip是主機,注意這里端口是自定義的18888,不是模擬器原來的21503)

adb connect 192.168.255.10:18888

最后,如果想要刪除轉發規則,執行命令

netsh interface portproxy delete v4tov4 listenaddress=10.0.2.15 listenport=18888

 

PS:玄學問題的記錄

按照上面的操作做完后,虛擬機的adb還是連接不上18888,這個時候先在物理機adb連接一次模擬器,然后再用disconnect斷開連接,然后在虛擬機中kill再start adb server,然后就可以連接上了(我也不知道為什么)

具體步驟:

# 虛擬機上操作 adb kill-server adb start-server # 主機物理機上操作 adb connect 127.0.0.1:21513 adb disconnect 127.0.0.1:21513 # 虛擬機上操作 adb connect 192.168.255.10:18888

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM