Windows 仮想マシン内から Mac 上の Android エミュレーターに接続する
Android エミュレーターには、Windows 仮想マシン (VM) 内から Mac で実行されているエミュレーターへの接続など、さまざまな目的で使用できる汎用性の高いネットワーク機能が用意されています。 これは、Mac で Windows を並列で実行する場合に便利です。 このシナリオでは、並列で実行できないため、Mac でエミュレーターを使用する必要があります。 Mac に Android エミュレーターをインストールする方法については、「インストール」を参照してください。
重要
開発用コンピューターのアドレス 127.0.0.1 は、エミュレーターのループバック インターフェイスに対応します。
Windows VM 内から Mac 上の Android エミュレーターに接続するには、次の 2 つのメイン方法があります。
- パケット転送の実行に使用
nc
します。 詳細については、「nc を使用してパケット転送を実行する」を参照してください。 - ポート フォワーディングの使用
ssh
。 詳細については、「SSH ポートフォワーディングを使用する」を参照してください。
どちらの場合も、Android デバッグ ブリッジ (ADB) を使用してエミュレーターに接続します。 ADB は、Android SDK Platform Tools パッケージにバンドルされているコマンドライン ツールで、デバイスと通信できます。 このコマンドを adb
使用すると、デバイスへの接続など、さまざまなデバイス アクションが容易になります。 詳細についてはadb
、developer.android.com の Android デバッグ ブリッジ (adb) を参照してください。
nc を使用してパケット転送を実行する
Windows VM から Mac で実行されている Android Emulator に接続するには、パケット転送を使用して、次の手順に従います。
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)
エミュレーターでは、コンソール接続には偶数ポート、接続には奇数ポートの 1 対のシーケンシャル TCP ポート
adb
が使用されます。 上記の出力では、エミュレーターはポート 5555 でリッスンadb
し、ポート 5554 でコンソール接続をリッスンします。ターミナルで、ポート 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
できます。Windows VM で、コマンド プロンプトを開 きます。
コマンド プロンプトで、エミュレーターに接続します。
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
して、次の手順を使用します。
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)
エミュレーターでは、コンソール接続には偶数ポート、接続には奇数ポートの 1 対のシーケンシャル TCP ポート
adb
が使用されます。 上記の出力では、エミュレーターはポート 5555 でリッスンadb
し、ポート 5554 でコンソール接続をリッスンします。Windows VM で、コマンド プロンプトを開 きます。
コマンド プロンプトで、Windows のローカル ポートと Mac のループバック インターフェイス上の奇数のエミュレーター ポートの間で双方向ポートフォワーディングを設定するために実行
ssh
します。ssh -L localhost:15555:127.0.0.1:5555 mac-username@ip-address-of-the-mac
この例では、Windows 上のローカル ポートを示し、
localhost:15555
127.0.0.1 5555
ループバック インターフェイスの奇数番号のポートを示します。コマンドで取得
whoami
できる Mac ユーザー名とip-address-of-the-mac
Mac の IP アドレスに置き換えますmac-username
。コマンド プロンプトで、ローカル ポートを使用してエミュレーターに接続します。
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 ローカル デバイスの下にデバッグ ターゲットとしてエミュレーターを表示します。これを使用して、エミュレーターにアプリをデプロイできます。
.NET MAUI