Android Emulator には、Windows 仮想マシン (VM) 内から Mac 上で実行されているエミュレーターに接続するなど、さまざまな目的に使用できる多用途のネットワーク機能があります。 これは、Mac 上の Parallels で Windows を並列で実行する場合に便利です。 このシナリオでは、並列で実行できないため、Mac でエミュレーターを使用する必要があります。 Mac に Android Emulator をインストールする方法については、「Installation」をご覧ください。
重要
開発用コンピューターのアドレス 127.0.0.1 は、エミュレーターのループバック インターフェイスに対応します。
Windows VM 内から Mac 上の Android Emulator に接続するには、主に次の 2 つの方法があります。
-
nc
を使用してパケット転送を実行する。 詳細については、「nc を使用してパケット転送を実行するをご覧ください。 - ポート フォワーディングに
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 に接続するには、次のステップに従います。
Mac で Android Emulator を起動します。
Mac で [Terminal] を開きます。
[Terminal] で、
adb
サーバーを強制終了します。adb kill-server
[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 でコンソール接続をリッスンします。ターミナルで、
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] ウィンドウで実行し続けることで、パケットは想定どおりに転送されます。 エミュレーターの使用が完了したら、ターミナル ウィンドウnc
Ctrl キーを押しながら C キー を押して、パケット転送の実行を停止できます。Windows VM で、コマンド プロンプトを開きます。
コマンド プロンプトで、エミュレーターに接続します。
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 に接続するには、次のステップに従います。
Mac で Android Emulator を起動します。
Mac で [Terminal] を開きます。
[Terminal] で、
adb
サーバーを強制終了します。adb kill-server
[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 でコンソール接続をリッスンします。Windows VM で、コマンド プロンプトを開きます。
コマンド プロンプトで
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 アドレスに置き換えます。コマンド プロンプトで、ローカル ポートを使用してエミュレーターに接続します。
adb connect localhost:15555
この例では、
localhost:15555
は Windows 上のローカル ポートを示します。注
adb
へのコマンド ライン アクセスは、[ツール]、>[Android]、>[Android Adb コマンド プロンプト...] メニュー項目を介して Visual Studio で取得できます。
接続が完了すると、Visual Studio によって、エミュレーターがデバッグ ターゲットとして [Android ローカル デバイス] に表示されます。これは、エミュレーターにアプリをデプロイするために使用できます。
.NET MAUI