Emülatör örneklerini birbirine bağlama

Çeşitli cihaz etkileşimlerini içeren uygulamaları test etmek için birden fazla Android Emulator örneğini birbirleriyle iletişim kurabilecek şekilde bağlayabilirsiniz. Bağlantı kurma yöntemi, kullandığınız emülatörün sürümüne bağlıdır.

Android Emülatörleri 36.5 ve Sonraki Sürümler

Android Emulator 36.5 ve sonraki sürümler, örnekleri paylaşılan bir kablosuz ağ üzerinden bağlayan basitleştirilmiş bir ağ modeli sunar.

Bu ağ yığını sayesinde birden fazla emülatör, aynı sanal kablosuz ağda ayrı cihazlar olarak görünür. Bu sayede, standart Wi-Fi tabanlı protokolleri kullanarak birbirlerini otomatik olarak keşfedip iletişim kurabilirler.

Emülatörler, Ağ Hizmeti Keşfi (NSD) ve Kablosuz Doğrudan Bağlantı gibi teknolojileri kullanarak sanal ağda birbirini bulabilir.

Emülatörler aynı kablosuz ağda olduğundan bir emülatörün belirli IP adresini bulabilir ve doğrudan başka bir emülatör örneğinden bağlanabilirsiniz. Sanal kablosuz arayüzün (wlan0) IP adresini almak için ana makinenizde aşağıdaki komutu çalıştırın:

adb shell ip addr show wlan0

36.5 sürümünden önceki Android Emulator

Android Emulator'ın önceki bir sürümünü kullanıyorsanız örnekler arasında doğrudan iletişim varsayılan olarak mümkün değildir. Her emülatör örneği, kendi sanal yönlendiricisinin arkasında çalışır ve yerel ağdan ve diğer emülatörlerden yalıtılır.

İletişimi etkinleştirmek için ağ yönlendirmesini manuel olarak ayarlamanız gerekir. Bu işlem, ana makinenizdeki belirli bir bağlantı noktasından gelen trafiği sanal yönlendiriciyi atlayarak emüle edilmiş cihazdaki bir bağlantı noktasına yönlendiren bir eşleme oluşturmayı içerir.

Ağ yönlendirmesini iki şekilde yapılandırabilirsiniz:

  1. Emulator Console Commands (Emulator Konsolu Komutları): Çalışan emülatör örneği için bağlantı noktası eşlemelerini ayarlamak üzere yerleşik konsolu kullanın.
  2. Android Debug Bridge (adb): Gerekli bağlantı noktası yönlendirme kurallarını yapılandırmak için adb komutlarını kullanın.

Yönlendirmeyi emülatör konsolu üzerinden ayarlama

Her bir emülatör örneği, bağlanabileceğiniz ve o örneğe özel komutlar verebileceğiniz bir kontrol konsolu sağlar. Yönlendirmeyi bir emülatör örneği için gerektiği şekilde ayarlamak üzere redir konsol komutunu kullanın.

Öncelikle hedef emülatör örneğinin konsol bağlantı noktası numarasını belirleyin. Örneğin, başlatılan ilk emülatör örneğinin konsol bağlantı noktası numarası 5554'tür. Ardından, hedef emülatör örneğinin konsoluna bağlanın. Konsol bağlantı noktası numarasını aşağıdaki gibi belirtin:

    telnet localhost 5554

Bağlandıktan sonra yönlendirmeyi ayarlayabilmek için kimliğinizi doğrulamanız gerekir. Bunu nasıl yapacağınızla ilgili ayrıntılar için Konsol oturumu başlatma ve durdurma başlıklı makaleyi inceleyin. Kimlik doğrulama tamamlandıktan sonra yönlendirmeyle çalışmak için redir komutunu kullanın.

Yönlendirme eklemek için aşağıdaki komutu kullanın:

    redir add <protocol>:<host-port>:<guest-port>

Burada <protocol>, tcp veya udp'dir. <host-port> ve <guest- port> ise makineniz ile emüle edilen sistem arasındaki eşlemeyi ayarlar.

Örneğin, aşağıdaki komut, 127.0.0.1:5000 adresindeki ana makinenize (geliştirme) gelen tüm TCP bağlantılarını işleyen ve bunları 10.0.2.15:6000 adresindeki emüle edilmiş sisteme ileten bir yönlendirme ayarlar:

    redir add tcp:5000:6000

Yönlendirmeyi silmek için redir del komutunu kullanın. Belirli bir örnek için tüm yönlendirmeleri listelemek üzere redir list kullanın. Bu ve diğer konsol komutları hakkında daha fazla bilgi için Emülatör konsol komutları gönderme başlıklı makaleyi inceleyin.

Bağlantı noktası numaraları yerel ortamınız tarafından kısıtlanır. Bu durum genellikle 1024'ten küçük bağlantı noktası numaralarını özel yönetici ayrıcalıkları olmadan kullanamayacağınız anlamına gelir. Ayrıca, makinenizde başka bir işlem tarafından zaten kullanılan bir ana makine bağlantı noktası için yönlendirme ayarlayamazsınız. Bu durumda, redir bu etkiyi açıklayan bir hata mesajı oluşturur.

adb aracılığıyla yönlendirme ayarlama

Android Debug Bridge (adb) aracı, bağlantı noktası yönlendirme özelliği sunar. Bu özellik, ağ yönlendirmeyi ayarlamanın alternatif bir yoludur. Daha fazla bilgi için adb belgelerindeki Bağlantı noktası yönlendirmeyi ayarlama başlıklı makaleyi inceleyin.

adb, şu anda adb sunucusu durdurulmadığı sürece yönlendirmeyi kaldırmanın bir yolunu sunmamaktadır.

Ara bağlantı emülatör örnekleri

Bir emülatör örneğinin diğeriyle iletişim kurmasına izin vermek için aşağıdaki adımlarda açıklandığı gibi ağ yönlendirmeyi ayarlayın.

Ortamınızın aşağıdaki gibi olduğunu varsayalım:

  • A, geliştirme makinenizdir.
  • B, A üzerinde çalışan ilk emülatör örneğinizdir.
  • C, A üzerinde de çalışan ikinci emülatör örneğinizdir.

C'nin bağlanacağı bir sunucuyu B'de çalıştırmak istiyorsanız aşağıdaki şekilde ayarlayın:

  1. Sunucuyu B'de 10.0.2.15:<serverPort>'yı dinleyecek şekilde ayarlayın.
  2. B konsolunda, A: localhost:<localPort> adresinden B: 10.0.2.15:<serverPort> adresine yönlendirme ayarlayın.
  3. C'de istemciyi 10.0.2.2:<localPort>'ya bağlayın.

Örneğin, bir HTTP sunucusu çalıştırmak istiyorsanız <serverPort> değerini 80, <localPort> değerini ise 8080 olarak seçin:

  • B, 10.0.2.15:80 üzerinde dinliyor.
  • B konsolunda redir add tcp:8080:80 komutunu verin.
  • C, 10.0.2.2:8080'ya bağlanır.