共用方式為


從 Windows 虛擬機內部連線到 Mac 上的 Android 模擬器

Android 模擬器提供多功能的網路功能,可用於不同的用途,包括從 Windows 虛擬機 (VM) 連線到 Mac 上執行的模擬器。 這在 Mac 上以 Parallels 執行 Windows 時很有用。 在此案例中,必須使用 Mac 上的模擬器,因為它無法在 Parallels 中執行。 如需在 Mac 上安裝 Android 模擬器的相關信息,請參閱 安裝

重要

開發計算機上的位址 127.0.0.1 會對應至模擬器的回送介面。

從 Windows VM 內部連線到 Mac 上的 Android 模擬器有兩個主要方法:

  1. 使用 nc 來執行封包轉送。 如需詳細資訊,請參閱 使用 nc 來執行封包轉送
  2. 使用 ssh 埠轉送。 如需詳細資訊,請參閱 使用 SSH 埠轉送

在這兩種情況下,Android 偵錯網橋 (ADB) 會用來連線到模擬器。 ADB 是一種命令行工具,隨附於 Android SDK 平臺工具套件,可讓您與裝置通訊。 命令 adb 可協助執行各種裝置動作,包括連線到裝置。 如需 的詳細資訊adb,請參閱 developer.android.com 上的 Android Debug Bridge (adb)。

使用 nc 執行封包轉送

若要從 Windows VM 連線到在 Mac 上執行的 Android 模擬器,請使用封包轉送,請使用下列步驟:

  1. 在您的 Mac 上,啟動 Android 模擬器。

  2. 在您的 Mac 上,開啟 [終端機]。

  3. 在終端機中adb,終止伺服器:

    adb kill-server
    
  4. 在終端中,識別模擬器所使用的埠:

    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 上的控制台連線。

  5. 在終端機中,使用 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執行封包轉送。

  6. 在您的 Windows VM 中,開啟 命令提示字元

  7. 命令提示字元中,連線到模擬器:

    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 Windowsssh命令接著會在 Git Bash 命令提示字元中提供。

若要從 Windows 虛擬機連線到在 Mac 上執行的 Android 模擬器,請使用 ssh 埠轉送,使用下列步驟:

  1. 在您的 Mac 上,啟動 Android 模擬器。

  2. 在您的 Mac 上,開啟 [終端機]。

  3. 在終端機中adb,終止伺服器:

    adb kill-server
    
  4. 在終端中,識別模擬器所使用的埠:

    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 上的控制台連線。

  5. 在您的 Windows VM 中,開啟 命令提示字元

  6. 命令提示字元中,執行 ssh 以在 Windows 上的本機埠與 Mac 回送介面上的奇數模擬器埠之間設定雙向埠轉送:

    ssh -L localhost:15555:127.0.0.1:5555 mac-username@ip-address-of-the-mac
    

    在此範例中,表示 Windows 上的本機埠, localhost:15555127.0.0.1 5555 表示回送介面上的奇數埠。

    將 取代mac-username為您的 Mac 用戶名稱,其可使用 命令取得,並以 ip-address-of-the-mac Mac 的 IP 位址來取得whoami

  7. 命令提示字元中,使用本機埠連線到模擬器:

    adb connect localhost:15555
    

    在此範例中, localhost:15555 表示 Windows 上的本機埠

    注意

    您可以透過 [Android > Android Adb 命令提示字元] 功能表項,在 Visual Studio 中取得 的命令行存取adb>權。

當連線完成時,Visual Studio 會將模擬器顯示為 Android 本機裝置下的偵錯目標,您可以使用它將應用程式部署至模擬器。