Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Per connettersi all'emulatore Android in esecuzione in un Mac da una macchina virtuale Windows, seguire questa procedura:
Nota
È consigliabile usare un emulatore Android che non include Google Play Store.
Avviare l'emulatore nel Mac.
Terminare il
adbserver sul Mac:adb kill-serverSi noti che l'emulatore è in ascolto su 2 porte TCP nell'interfaccia di rete di loopback:
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)La porta con numeri dispari è quella usata per connettersi a
adb. Vedere anche https://developer.android.com/tools/devices/emulator.html#emulatornetworking.Opzione 1: usare
ncper inoltrare i pacchetti TCP in ingresso ricevuti esternamente sulla porta 5555 (o qualsiasi altra porta desiderata) alla porta dispari nell'interfaccia di loopback (127.0.0.1 5555 in questo esempio) e per inoltrare i pacchetti in uscita in altro modo:cd /tmp mkfifo backpipe nc -kl 5555 0<backpipe | nc 127.0.0.1 5555 > backpipeSe i
nccomandi rimangono in esecuzione in una finestra del terminale, i pacchetti verranno inoltrati come previsto. È possibile digitare Control-C nella finestra Del terminale per chiudere inccomandi al termine dell'uso dell'emulatore.L'opzione 1 è in genere più semplice dell'opzione 2, soprattutto se Sicurezza e privacy > del firewall per le preferenze > di sistema è attivato.
Opzione 2: usare
pfctlper reindirizzare i pacchetti TCP dalla porta5555(o da qualsiasi altra porta desiderata) nell'interfaccia di rete condivisa alla porta con numeri dispari nell'interfaccia di loopback (127.0.0.1:5555in questo esempio):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 -Questo comando configura l'inoltro delle porte usando il
pf packet filterservizio di sistema. Le interruzioni di riga sono importanti. Assicurarsi di mantenerli intatti durante il incollamento della copia. È anche necessario modificare il nome dell'interfaccia da vmnet8 se si usa Parallels.vmnet8è il nome del dispositivo NAT speciale per la modalità rete condivisa in VMWare Fusion. L'interfaccia di rete appropriata in Parallels è probabilmente vnic0.Connessione all'emulatore dal computer Windows:
C:\> adb connect ip-address-of-the-mac:5555Sostituire "ip-address-of-the-mac" con l'indirizzo IP del Mac, ad esempio come indicato da
ifconfig vmnet8 | grep 'inet '. Se necessario, sostituire5555con l'altra porta desiderata nel passaggio 4. Nota: un modo per ottenere l'accesso dalla riga di comando aadbconsiste nell'usare Strumenti > > Android Adb Command Prompt in Visual Studio.
Tecnica alternativa con ssh
Se è stato abilitato Accesso remoto sul Mac, è possibile usare ssh il port forwarding per connettersi all'emulatore.
Installare un client SSH in Windows. Un'opzione consiste nell'installare Git per Windows. Il
sshcomando sarà quindi disponibile nel prompt dei comandi di Git Bash .Seguire i passaggi da 1 a 3 precedenti per avviare l'emulatore, terminare il
adbserver sul Mac e identificare le porte dell'emulatore.Eseguire
sshin Windows per configurare l'inoltro delle porte bidirezionali tra una porta locale in Windows (localhost:15555in questo esempio) e la porta dell'emulatore con numeri dispari nell'interfaccia di loopback del Mac (127.0.0.1:5555in questo esempio):C:\> ssh -L localhost:15555:127.0.0.1:5555 mac-username@ip-address-of-the-macSostituire
mac-usernamecon il nome utente Mac come indicato dawhoami. Sostituireip-address-of-the-maccon l'indirizzo IP del Mac.Connessione all'emulatore usando la porta locale in Windows:
C:\> adb connect localhost:15555Nota: un modo semplice per ottenere l'accesso dalla riga di comando a
adbè tramite Strumenti > prompt dei comandi Android > Adb android in Visual Studio.
Una piccola attenzione: se si usa la porta 5555 per la porta locale, adb si pensa che l'emulatore sia in esecuzione in locale in Windows. Ciò non causa problemi in Visual Studio, ma in Visual Studio per Mac causa l'uscita dell'app immediatamente dopo l'avvio.
L'uso adb -H di tecniche alternative non è ancora supportato
In teoria, un altro approccio consiste nell'usare adbla funzionalità predefinita per connettersi a un adb server in esecuzione in un computer remoto (vedere ad esempio https://stackoverflow.com/a/18551325).
Tuttavia, le estensioni dell'IDE Xamarin.Android non offrono attualmente un modo per configurare tale opzione.
Informazioni sul contatto
Questo documento illustra il comportamento corrente a partire da marzo 2016. La tecnica descritta in questo documento non fa parte del gruppo di test stabile per Xamarin, quindi potrebbe interrompersi in futuro.
Se si nota che la tecnica non funziona più o se si notano altri errori nel documento, è possibile aggiungere alla discussione nel thread del forum seguente: http://forums.xamarin.com/discussion/33702/android-emulator-from-host-device-inside-windows-vm. Grazie.