Share via


Windows 가상 머신 내에서 Mac의 Android 에뮬레이터에 커넥트

Android 에뮬레이터는 Windows VM(가상 머신) 내부에서 Mac에서 실행되는 에뮬레이터에 연결하는 등 다양한 용도로 사용할 수 있는 다양한 네트워킹 기능을 제공합니다. 이 기능은 Mac에서 병렬로 Windows를 실행할 때 유용합니다. 이 시나리오에서는 병렬로 실행할 수 없으므로 Mac에서 에뮬레이터를 사용해야 합니다. Mac에 Android 에뮬레이터를 설치하는 방법에 대한 자세한 내용은 설치를 참조하세요.

Important

개발 머신의 주소 127.0.0.1은 에뮬레이터의 루프백 인터페이스에 해당합니다.

Windows VM 내에서 Mac의 Android 에뮬레이터에 연결하는 두 가지 기본 방법이 있습니다.

  1. 패킷 전달을 수행하는 데 사용 nc 자세한 내용은 nc를 사용하여 패킷 전달을 수행합니다.
  2. 포트 전달 사용 ssh . 자세한 내용은 ssh 포트 전달 사용을 참조 하세요.

두 경우 모두 ADB(Android 디버그 브리지)를 사용하여 에뮬레이터에 연결합니다. ADB는 디바이스와 통신할 수 있는 Android SDK 플랫폼 도구 패키지와 함께 제공되는 명령줄 도구입니다. 이 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)
    

    에뮬레이터는 한 쌍의 순차적 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 니다.

    참고 항목

    도구 > Android > Android Adb 명령 프롬프트... 메뉴 항목을 통해 Visual Studio에서 명령줄 액세스를 adb 가져올 수 있습니다.

연결이 완료되면 Visual Studio는 에뮬레이터에 앱을 배포하는 데 사용할 수 있는 Android 로컬 디바이스 아래에 디버그 대상으로 에뮬레이터를 표시합니다.

ssh 포트 전달 사용

Mac에서 원격 로그인을 사용하도록 설정한 경우 포트 전달을 사용하여 ssh 에뮬레이터에 연결할 수 있습니다.

Important

ssh 포트 전달을 사용하려면 Windows VM에 SSH 클라이언트를 설치해야 합니다. 한 가지 옵션은 Windows용 Git를 설치하는 것입니다. 그러면 Git Bash 명령 프롬프트에서 ssh 명령을 사용할 수 있습니다.

포트 전달을 사용하여 ssh Windows 가상 머신에서 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)
    

    에뮬레이터는 한 쌍의 순차적 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
    

    이 예제 localhost:15555 에서는 Windows의 로컬 포트를 표시하고 127.0.0.1 5555 루프백 인터페이스의 홀수 포트를 나타냅니다.

    명령을 ip-address-of-the-mac 사용하여 가져올 whoami 수 있는 Mac 사용자 이름과 Mac의 IP 주소로 바꿉 mac-username 니다.

  7. 명령 프롬프트에서 로컬 포트를 사용하여 에뮬레이터에 연결합니다.

    adb connect localhost:15555
    

    이 예제에서는 localhost:15555 Windows의 로컬 포트를 표시합니다.

    참고 항목

    도구 > Android > Android Adb 명령 프롬프트... 메뉴 항목을 통해 Visual Studio에서 명령줄 액세스를 adb 가져올 수 있습니다.

    주의

    로컬 adb 포트에 포트 5555를 사용하는 경우 에뮬레이터가 Windows에서 로컬로 실행되고 있다고 생각할 것입니다. 이로 인해 Visual Studio에서 문제가 발생하지는 않지만 Mac용 Visual Studio 실행 직후 앱이 종료되도록 합니다.

연결이 완료되면 Visual Studio는 에뮬레이터에 앱을 배포하는 데 사용할 수 있는 Android 로컬 디바이스 아래에 디버그 대상으로 에뮬레이터를 표시합니다.