Sdílet prostřednictvím


Je možné se připojit k emulátorům Androidu běžících na Macu z virtuálního počítače s Windows?

Pokud se chcete připojit k emulátoru Androidu spuštěného na Počítači Mac z virtuálního počítače s Windows, postupujte následovně:

Poznámka:

Doporučujeme použít emulátor Androidu, který neobsahuje Obchod Google Play.

  1. Spusťte emulátor na Macu.

  2. adb Ukončete server na Macu:

    adb kill-server
    
  3. Mějte na paměti, že emulátor naslouchá na 2 portech TCP v síťovém rozhraní zpětné smyčky:

    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)
    

    Lichý číslovaný port je port použitý pro připojení k adb. Viz také https://developer.android.com/tools/devices/emulator.html#emulatornetworking.

  4. Možnost 1: Slouží nc k přesměrování příchozích paketů TCP přijatých externě na portu 5555 (nebo jiném portu, který se vám líbí) na lichý port v rozhraní zpětné smyčky (v tomto příkladu 127.0.0.1 5555 ) a k přesměrování odchozích paketů zpět tímto způsobem:

    cd /tmp
    mkfifo backpipe
    nc -kl 5555 0<backpipe | nc 127.0.0.1 5555 > backpipe
    

    nc Dokud příkazy zůstanou spuštěné v okně terminálu, pakety se předávají podle očekávání. Po dokončení používání emulátoru můžete v okně terminálu zadat control-C a ukončit nc příkazy.

    (Možnost 1 je obvykle jednodušší než možnost 2, zejména pokud Je zapnutá brána firewall zabezpečení a ochrany osobních údajů > v předvolbách > systému.)

    Možnost 2: Slouží pfctl k přesměrování paketů TCP z portu 5555 (nebo jakéhokoli jiného portu, který se vám líbí) v rozhraní sdílené sítě na lichý port v rozhraní zpětné smyčky (127.0.0.1:5555 v tomto příkladu):

    sed '/rdr-anchor/a rdr pass on vmnet8 inet proto tcp from any to any port 5555 -> 127.0.0.1 port 5555' /etc/pf.conf | sudo pfctl -ef -
    

    Tento příkaz nastaví přesměrování portů pomocí pf packet filter systémové služby. Konce řádků jsou důležité. Při vkládání nezapomeňte je zachovat beze změny. Pokud používáte Parallels, budete také muset upravit název rozhraní z virtuální sítě8 . vmnet8 je název speciálního zařízení NAT pro režim sdílených sítí v nástroji VMWare Fusion. Vhodné síťové rozhraní paralelně je pravděpodobně vnic0.

  5. Připojení do emulátoru z počítače s Windows:

    C:\> adb connect ip-address-of-the-mac:5555
    

    Nahraďte "ip-address-of-the-mac" IP adresou Počítače Mac, například uvedenou uživatelem ifconfig vmnet8 | grep 'inet '. V případě potřeby nahraďte 5555 jiným portem, který se vám líbí z kroku 4. (Poznámka: Jedním ze způsobů, jak získat přístup adb pomocí příkazového řádku příkazového řádku Tools > Android > Android Adb v sadě Visual Studio.)

Alternativní technika s využitím ssh

Pokud jste na Macu povolili vzdálené přihlášení , můžete k připojení k emulátoru použít ssh přesměrování portů.

  1. Nainstalujte klienta SSH ve Windows. Jednou z možností je instalace Gitu pro Windows. Příkaz ssh pak bude k dispozici na příkazovém řádku Git Bash .

  2. Podle kroků 1 až 3 výše spusťte emulátor, ukončete server na Macu a identifikujte adb porty emulátoru.

  3. Spuštěním ssh ve Windows nastavte obousměrné přesměrování portů mezi místním portem ve Windows (localhost:15555 v tomto příkladu) a lichým číslovaným portem emulátoru v rozhraní zpětné smyčky Macu (127.0.0.1:5555 v tomto příkladu):

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

    Nahraďte mac-username svým uživatelským jménem pro Mac, jak je uvedeno v whoamiseznamu . Nahraďte ip-address-of-the-mac IP adresou počítače Mac.

  4. Připojení do emulátoru pomocí místního portu ve Windows:

    C:\> adb connect localhost:15555
    

    (Poznámka: Jedním ze snadných způsobů, jak získat přístup k příkazovému adb řádku pomocí příkazového řádku Tools > Android > Android Adb v sadě Visual Studio.)

Malé upozornění: Pokud používáte port 5555 pro místní port, bude si myslet, adb že emulátor běží místně ve Windows. To nezpůsobuje žádné potíže v sadě Visual Studio, ale v Visual Studio pro Mac způsobí, že se aplikace okamžitě po spuštění ukončí.

Alternativní technika použití ještě není podporována.adb -H

Teoreticky by dalším přístupem bylo použití adbintegrované funkce pro připojení k adb serveru běžícímu na vzdáleném počítači (viz například https://stackoverflow.com/a/18551325). Rozšíření IDE Xamarin.Android ale v současné době neposkytují způsob konfigurace této možnosti.

Kontaktní informace

Tento dokument popisuje aktuální chování od března 2016. Technika popsaná v tomto dokumentu není součástí stabilní testovací sady pro Xamarin, takže by se mohla v budoucnu přerušit.

Pokud si všimnete, že technika již nefunguje nebo pokud si všimnete jiných chyb v dokumentu, můžete přidat do diskuze na následujícím fóru vlákno: http://forums.xamarin.com/discussion/33702/android-emulator-from-host-device-inside-windows-vm. Děkujeme!