Windows 仮想マシン内から Mac 上の Android エミュレーターに接続する

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

重要

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

Windows VM 内から Mac 上の Android エミュレーターに接続するには、次の 2 つのメイン方法があります。

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

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

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

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

  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)
    

    エミュレーターでは、コンソール接続には偶数ポート、接続には奇数ポートの 1 対のシーケンシャル TCP ポート adb が使用されます。 上記の出力では、エミュレーターはポート 5555 でリッスン adb し、ポート 5554 でコンソール接続をリッスンします。

  5. ターミナル、ポート 5555 (またはその他のポート) で外部から受信した受信 TCP パケットをループバック インターフェイスの奇数のポートに転送し、送信パケットを他の方法で転送するために使用ncします。

    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

    Note

    コマンド ライン アクセスadbは、Visual Studio の [Tools Android Android Adb Command Prompt]\(Android > Android > Adb コマンド プロンプト\)... メニュー項目から取得できます。

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

SSH ポート転送を使用する

Mac でリモート ログインが有効になっている場合は、ポートフォワーディングを使用sshしてエミュレーターに接続できます。

重要

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

Windows 仮想マシンから Mac で実行されている Android Emulator に接続するには、ポート転送を使用 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)
    

    エミュレーターでは、コンソール接続には偶数ポート、接続には奇数ポートの 1 対のシーケンシャル TCP ポート adb が使用されます。 上記の出力では、エミュレーターはポート 5555 でリッスン adb し、ポート 5554 でコンソール接続をリッスンします。

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

  6. コマンド プロンプト、Windows のローカル ポートと Mac のループバック インターフェイス上の奇数のエミュレーター ポートの間で双方向ポートフォワーディングを設定するために実行sshします。

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

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

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

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

    adb connect localhost:15555
    

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

    Note

    コマンド ライン アクセスadbは、Visual Studio の [Tools Android Android Adb Command Prompt]\(Android > Android > Adb コマンド プロンプト\)... メニュー項目から取得できます。

    注意

    ローカル ポートにポート 5555 を使用する場合は、 adb エミュレーターが Windows 上でローカルで実行されていることを確認します。 Visual Studio では問題は発生しませんが、Visual Studio for Mac では起動直後にアプリが終了します。

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