次の方法で共有


Windows 仮想マシン内から Mac 上の Android Emulator に接続する

Android Emulator には、Windows 仮想マシン (VM) 内から Mac 上で実行されているエミュレーターに接続するなど、さまざまな目的に使用できる多用途のネットワーク機能があります。 これは、Mac 上の Parallels で Windows を並列で実行する場合に便利です。 このシナリオでは、並列で実行できないため、Mac でエミュレーターを使用する必要があります。 Mac に Android Emulator をインストールする方法については、「Installation」をご覧ください。

重要

開発用コンピューターのアドレス 127.0.0.1 は、エミュレーターのループバック インターフェイスに対応します。

Windows VM 内から Mac 上の Android Emulator に接続するには、主に次の 2 つの方法があります。

  1. nc を使用してパケット転送を実行する。 詳細については、「nc を使用してパケット転送を実行するをご覧ください。
  2. ポート フォワーディングに ssh を使用する。 詳細については、「SSH ポートの転送」をご覧ください。

どちらの場合も、Android Debug Bridge (ADB) を使用してエミュレーターに接続します。 ADB は、Android SDK Platform Tools パッケージにバンドルされているコマンドライン ツールで、デバイスと通信できます。 adb コマンドを使用すると、デバイスへの接続など、さまざまなデバイス アクションが容易になります。 adb の詳細については、developer.android.com の「Android Debug Bridge (adb))」をご覧ください。

nc を使用してパケット転送を実行する

パケット転送を使用して、Windows VM から Mac で実行中の Android Emulator に接続するには、次のステップに従います。

  1. Mac で Android Emulator を起動します。

  2. Mac で [Terminal] を開きます。

  3. [Terminal] で、adb サーバーを強制終了します。

    adb kill-server
    
  4. [Terminal] で、エミュレーターで使用されるポートを特定します。

    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)
    

    エミュレーターでは、コンソール接続には偶数ポート、adb 接続には奇数ポートの 2 つのシーケンシャル TCP ポートが使用されます。 上記の出力では、エミュレーターはポート 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 コマンドを [Terminal] ウィンドウで実行し続けることで、パケットは想定どおりに転送されます。 エミュレーターの使用が完了したら、ターミナル ウィンドウ ncCtrl キーを押しながら C キー を押して、パケット転送の実行を停止できます。

  6. Windows VM で、コマンド プロンプトを開きます。

  7. コマンド プロンプトで、エミュレーターに接続します。

    adb connect ip-address-of-the-mac:5555
    

    この例の ip-address-of-the-mac を Mac の IP アドレスに置き換え、5555 を前の手順で使用したポートに置き換えます。

    adb へのコマンド ライン アクセスは、[ツール]、>[Android]、>[Android Adb コマンド プロンプト...] メニュー項目を介して Visual Studio で取得できます。

接続が完了すると、Visual Studio によって、エミュレーターがデバッグ ターゲットとして [Android ローカル デバイス] に表示されます。これは、エミュレーターにアプリをデプロイするために使用できます。

SSH ポート フォワーディングの使用

Mac で [Remote Login] を有効にしている場合は、ssh ポート フォワーディングを使用してエミュレーターに接続できます。

重要

ssh ポートフォワーディングでは、Windows VM に SSH クライアントをインストールしている必要があります。 1 つのオプションが Git for Windows をインストールするものです。 ssh コマンドが、Git Bash コマンド プロンプトで使用できるようになります。

ssh ポート フォワーディングを使用して、Windows 仮想マシンから Mac で実行中の Android Emulator に接続するには、次のステップに従います。

  1. Mac で Android Emulator を起動します。

  2. Mac で [Terminal] を開きます。

  3. [Terminal] で、adb サーバーを強制終了します。

    adb kill-server
    
  4. [Terminal] で、エミュレーターで使用されるポートを特定します。

    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)
    

    エミュレーターでは、コンソール接続には偶数ポート、adb 接続には奇数ポートの 2 つのシーケンシャル TCP ポートが使用されます。 上記の出力では、エミュレーターはポート 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
    

    この例では、localhost:15555 は Windows 上のローカル ポートを示し、127.0.0.1 5555 はループバック インターフェイスの奇数ポートを表します。

    mac-username を、whoami コマンドで取得できる Mac ユーザー名に置き換え、ip-address-of-the-mac を Mac の IP アドレスに置き換えます。

  7. コマンド プロンプトで、ローカル ポートを使用してエミュレーターに接続します。

    adb connect localhost:15555
    

    この例では、localhost:15555 は Windows 上のローカル ポートを示します。

    adb へのコマンド ライン アクセスは、[ツール]、>[Android]、>[Android Adb コマンド プロンプト...] メニュー項目を介して Visual Studio で取得できます。

接続が完了すると、Visual Studio によって、エミュレーターがデバッグ ターゲットとして [Android ローカル デバイス] に表示されます。これは、エミュレーターにアプリをデプロイするために使用できます。