從 Windows 虛擬機內部連線到 Mac 上的 Android 模擬器
Android 模擬器提供多功能的網路功能,可用於不同的用途,包括從 Windows 虛擬機 (VM) 連線到 Mac 上執行的模擬器。 這在 Mac 上以 Parallels 執行 Windows 時很有用。 在此案例中,必須使用 Mac 上的模擬器,因為它無法在 Parallels 中執行。 如需在 Mac 上安裝 Android 模擬器的相關信息,請參閱 安裝。
重要
開發計算機上的位址 127.0.0.1 會對應至模擬器的回送介面。
從 Windows VM 內部連線到 Mac 上的 Android 模擬器有兩個主要方法:
- 使用
nc
來執行封包轉送。 如需詳細資訊,請參閱 使用 nc 來執行封包轉送。 - 使用
ssh
埠轉送。 如需詳細資訊,請參閱 使用 SSH 埠轉送。
在這兩種情況下,Android 偵錯網橋 (ADB) 會用來連線到模擬器。 ADB 是一種命令行工具,隨附於 Android SDK 平臺工具套件,可讓您與裝置通訊。 命令 adb
可協助執行各種裝置動作,包括連線到裝置。 如需 的詳細資訊adb
,請參閱 developer.android.com 上的 Android Debug Bridge (adb)。
使用 nc 執行封包轉送
若要從 Windows VM 連線到在 Mac 上執行的 Android 模擬器,請使用封包轉送,請使用下列步驟:
在您的 Mac 上,啟動 Android 模擬器。
在您的 Mac 上,開啟 [終端機]。
在終端機中
adb
,終止伺服器:adb kill-server
在終端機中,識別模擬器所使用的埠:
lsof -iTCP -sTCP:LISTEN -P | grep 'emulator\|qemu' emulator6 94105 macuser 20u IPv4 0xa8dacfb1d4a1b51f 0t0 TCP localhost:5555 (LISTEN) emulator6 94105 macuser 21u IPv4 0xa8dacfb1d845a51f 0t0 TCP localhost:5554 (LISTEN)
模擬器會使用一對循序 TCP 連接埠 - 主控台連線的偶數埠,以及連線
adb
的奇數埠。 在模擬器上方的輸出中,會在埠 5555 上接聽 ,並接聽adb
埠 5554 上的控制台連線。在終端機中,使用
nc
將埠 5555(或任何其他埠)外部接收的輸入 TCP 封包轉送至回送介面上的奇數埠,並以其他方式轉送輸出封包:cd /tmp mkfifo backpipe nc -kl 5555 0<backpipe | nc 127.0.0.1 5555 > backpipe
在此範例中,
127.0.0.1 5555
表示回送介面上的奇數埠。如果
nc
命令在終端機視窗中持續執行,封包將會如預期般轉送。 使用模擬器完成後,您可以在 [終端機] 視窗中按 CTRL+C,停止nc
執行封包轉送。在您的 Windows VM 中,開啟 命令提示字元。
在 命令提示字元中,連線到模擬器:
adb connect ip-address-of-the-mac:5555
以 Mac 的 IP 位址取代此範例中的 ,並將 5555 取代
ip-address-of-the-mac
為您先前步驟所使用的埠。注意
您可以透過 [Android > Android Adb 命令提示字元] 功能表項,在 Visual Studio 中取得 的命令行存取
adb
>權。
當連線完成時,Visual Studio 會將模擬器顯示為 Android 本機裝置下的偵錯目標,您可以使用它將應用程式部署至模擬器。
使用 ssh 埠轉送
如果您的 Mac 上已啟用遠端登錄,您可以使用ssh
埠轉送來連線到模擬器。
重要
ssh
埠轉送會要求您已在 Windows VM 中安裝 SSH 用戶端。 其中一個選項是安裝 Git for Windows。 ssh
命令接著會在 Git Bash 命令提示字元中提供。
若要從 Windows 虛擬機連線到在 Mac 上執行的 Android 模擬器,請使用 ssh
埠轉送,使用下列步驟:
在您的 Mac 上,啟動 Android 模擬器。
在您的 Mac 上,開啟 [終端機]。
在終端機中
adb
,終止伺服器:adb kill-server
在終端機中,識別模擬器所使用的埠:
lsof -iTCP -sTCP:LISTEN -P | grep 'emulator\|qemu' emulator6 94105 macuser 20u IPv4 0xa8dacfb1d4a1b51f 0t0 TCP localhost:5555 (LISTEN) emulator6 94105 macuser 21u IPv4 0xa8dacfb1d845a51f 0t0 TCP localhost:5554 (LISTEN)
模擬器會使用一對循序 TCP 連接埠 - 主控台連線的偶數埠,以及連線
adb
的奇數埠。 在模擬器上方的輸出中,會在埠 5555 上接聽 ,並接聽adb
埠 5554 上的控制台連線。在您的 Windows VM 中,開啟 命令提示字元。
在 命令提示字元中,執行
ssh
以在 Windows 上的本機埠與 Mac 回送介面上的奇數模擬器埠之間設定雙向埠轉送:ssh -L localhost:15555:127.0.0.1:5555 mac-username@ip-address-of-the-mac
在此範例中,表示 Windows 上的本機埠,
localhost:15555
並127.0.0.1 5555
表示回送介面上的奇數埠。將 取代
mac-username
為您的 Mac 用戶名稱,其可使用 命令取得,並以ip-address-of-the-mac
Mac 的 IP 位址來取得whoami
。在 命令提示字元中,使用本機埠連線到模擬器:
adb connect localhost:15555
在此範例中,
localhost:15555
表示 Windows 上的本機埠注意
您可以透過 [Android > Android Adb 命令提示字元] 功能表項,在 Visual Studio 中取得 的命令行存取
adb
>權。
當連線完成時,Visual Studio 會將模擬器顯示為 Android 本機裝置下的偵錯目標,您可以使用它將應用程式部署至模擬器。