Aracılığıyla paylaş


Mac’te çalışan Android öykünücülerine bir Windows sanal makinesinden bağlanılabilir mi?

Bir Windows sanal makinesinden Mac üzerinde çalışan Android Öykünücüsü'ne bağlanmak için aşağıdaki adımları kullanın:

Not

Google Play Store'a dahil olmayan bir Android Öykünücüsü kullanmanızı öneririz.

  1. Mac'te öykünücüyü başlatın.

  2. Mac'te adb sunucuyu sonlandırma:

    adb kill-server
    
  3. Öykünücünün geri döngü ağ arabirimindeki 2 TCP bağlantı noktasını dinlediğini unutmayın:

    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)
    

    Tek numaralı bağlantı noktası, öğesine adbbağlanmak için kullanılan bağlantı noktasıdır. Ayrıca https://developer.android.com/tools/devices/emulator.html#emulatornetworkingbkz. .

  4. 1. Seçenek: 5555 numaralı bağlantı noktasından (veya istediğiniz başka bir bağlantı noktasından) dışarıdan alınan gelen TCP paketlerini geri döngü arabirimindeki tek numaralı bağlantı noktasına (bu örnekte 127.0.0.1 5555) iletmek ve giden paketleri geri iletmek için kullanınnc:

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

    Komutlar nc Terminal penceresinde çalışmaya devam ettikçe paketler beklendiği gibi iletilir. Öykünücüyü kullanmayı bitirdikten sonra komutları kapatmak nc için Terminal penceresine Control-C yazabilirsiniz.

    (Seçenek 1 genellikle Seçenek 2'den daha kolaydır, özellikle Sistem Tercihleri > Güvenlik ve Gizlilik > Güvenlik Duvarı açık.)

    2. Seçenek: Paylaşılan Ağ arabirimindeki bağlantı noktasından (veya istediğiniz başka bir bağlantı noktasından 5555 ) TCP paketlerini geri döngü arabirimindeki tek numaralı bağlantı noktasına yeniden yönlendirmek için kullanın pfctl (127.0.0.1:5555bu örnekte):

    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 -
    

    Bu komut, sistem hizmetini kullanarak bağlantı noktası iletmeyi pf packet filter ayarlar. Satır sonları önemlidir. Kopyalama yapıştırma sırasında bunları olduğu gibi tuttuğunuzdan emin olun. Paraleller kullanıyorsanız vmnet8'den arabirim adını da ayarlamanız gerekir. vmnet8, VMWare Fusion'da Paylaşılan Ağ modu için özel NAT cihazının adıdır. Paraleller'de uygun ağ arabirimi büyük olasılıkla vnic0'dir.

  5. Öykünücüye Windows makinesinden Bağlan:

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

    "ip-address-of-the-mac" yerine Mac'in IP adresini yazın, örneğin tarafından listelenmiştir ifconfig vmnet8 | grep 'inet '. Gerekirse, değerini 4. adımda beğendiğiniz diğer bağlantı noktasıyla değiştirin 5555 . (Not: Komut satırı erişimine adb ulaşmanın bir yolu Visual Studio'da Araçlar > Android > Android Adb Komut İstemi'dir .)

Kullanarak alternatif teknik ssh

Mac bilgisayarda Uzaktan Oturum Açmayı etkinleştirdiyseniz, öykünücüye bağlanmak için bağlantı noktası iletmeyi kullanabilirsinizssh.

  1. Windows'a bir SSH istemcisi yükleyin. Seçeneklerden biri, Windows için Git'i yüklemektir. Komut ssh daha sonra Git Bash komut isteminde kullanılabilir.

  2. Öykünücüyü başlatmak, Mac'te sunucuyu sonlandırmak ve öykünücü adb bağlantı noktalarını belirlemek için yukarıdaki 1-3 arası adımları izleyin.

  3. Windows üzerinde yerel bir bağlantı noktası (localhost:15555bu örnekte) ile Mac'in geri döngü arabirimindeki tek numaralı öykünücü bağlantı noktası arasında iki yönlü bağlantı noktası iletmeyi ayarlamak için Windows üzerinde komutunu çalıştırın ssh (127.0.0.1:5555 bu örnekte):

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

    değerini, tarafından whoamilistelenen Mac kullanıcı adınızla değiştirinmac-username. değerini Mac'in IP adresiyle değiştirin ip-address-of-the-mac .

  4. Windows'da yerel bağlantı noktasını kullanarak öykünücüye Bağlan:

    C:\> adb connect localhost:15555
    

    (Not: Komut satırı erişimine adbulaşmanın kolay yollarından biri Visual Studio'daki Araçlar > Android > Android Adb Komut İstemi'dir.)

Küçük bir uyarı: Yerel bağlantı noktası için bağlantı noktası 5555 kullanırsanız öykünücünün adb Windows üzerinde yerel olarak çalıştığını düşünür. Bu, Visual Studio'da herhangi bir sorun oluşturmaz, ancak Mac için Visual Studio başlatmadan hemen sonra uygulamanın çıkmasına neden olur.

Alternatif teknik kullanımı adb -H henüz desteklenmiyor

Teoride, başka bir yaklaşım da uzak makinede çalışan bir adb sunucuya bağlanmak için 'nin yerleşik özelliğini kullanmaktır adb(örneğinhttps://stackoverflow.com/a/18551325). Ancak Xamarin.Android IDE uzantıları şu anda bu seçeneği yapılandırmak için bir yol sağlamaz.

İletişim bilgileri

Bu belgede Mart 2016 itibarıyla geçerli davranış ele alınmaktadır. Bu belgede açıklanan teknik, Xamarin için kararlı test paketinin bir parçası olmadığından gelecekte bozulabilir.

Tekniğin artık çalışmadığını fark ederseniz veya belgede başka hatalar olduğunu fark ederseniz, aşağıdaki forum yazışmasında tartışmaya eklemekten çekinmeyin: http://forums.xamarin.com/discussion/33702/android-emulator-from-host-device-inside-windows-vm. Teşekkür ederiz!