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.
Spusťte emulátor na Macu.
adb
Ukončete server na Macu:adb kill-server
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.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čitnc
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 portu5555
(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.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ďte5555
jiným portem, který se vám líbí z kroku 4. (Poznámka: Jedním ze způsobů, jak získat přístupadb
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ů.
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 .Podle kroků 1 až 3 výše spusťte emulátor, ukončete server na Macu a identifikujte
adb
porty emulátoru.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 vwhoami
seznamu . Nahraďteip-address-of-the-mac
IP adresou počítače Mac.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í adb
integrované 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!