Emülatör, birçok farklı işlem için kullanabileceğiniz çok yönlü Uygulamanız için karmaşık modelleme ve test ortamları oluşturabilirsiniz. Bu sayfa emülatör ağ mimarisini ve özelliklerini tanıtıyor.
Ağ adres alanı
Emülatörün her örneği bir sanal yönlendirici veya güvenlik duvarı hizmetinin arkasında çalışır kendi geliştirme makinenizin ağ arayüzlerinden ve ayarlarınızdan izole eden ve internetten. Öykünülen bir cihaz, geliştirme makinenizi algılayamıyor veya diğer emülatör örneklerinden birini kullanabilir. Yalnızca bunu algılar Ethernet üzerinden bir yönlendiriciye veya güvenlik duvarına bağlı olduğundan emin olun.
Her örneğin sanal yönlendiricisi 10.0.2/24 ağ adresini yönetir boşluk oluşturur. Yönlendirici tarafından yönetilen tüm adresler şu biçimdedir: 10.0.2.xx; burada xx bir sayıdır. Bu alandaki adresler emülatör veya yönlendirici tarafından şu şekilde önceden tahsis edilir:
Ağ Adresi | Açıklama |
---|---|
10.0.2.1 | Yönlendirici veya ağ geçidi adresi |
10.0.2.2 | Barındırıcı geri döngü arayüzünüz için özel takma ad (Chrome'da 127.0.0.1 geliştirme makinesi) |
10.0.2.3 | İlk DNS sunucusu |
10.0.2.4 / 10.0.2.5 / 10.0.2.6 | İsteğe bağlı ikinci, üçüncü ve dördüncü DNS sunucuları |
10.0.2.15 | Ethernet kullanılarak bağlanıldığında emüle edilen cihaz ağı |
10.0.2.16 | Kablosuz ağ kullanılarak bağlanıldığında emüle edilen cihaz ağı |
127.0.0.1 | Taklit edilmiş cihaz geri döngü arayüzü |
Çalışan tüm emülatörler tarafından aynı adres atamaları kullanılıyor sağlar. Yani, aynı anda çalışan iki örneğiniz varsa her birinin kendi yönlendiricisi olacak. Onun arkasında her birinin bir tane 10.0.2.15 IP adresi. Örnekler bir yönlendirici tarafından izole edildiğinden algılamasıdır. Nasıl yapıldığını emülatör örneklerinin TCP/UDP üzerinden iletişim kurmasına izin vermek için emülatör örnekleri arasında bağlantı kurma ile ilgili bölüme bakın.
Geliştirme makinenizdeki 127.0.0.1 adresi karşılık gelir devre dışı bırakılır. Çalışan hizmetlere erişmek için geri döngü arayüzünüzün birinde özel geri bildirim 10.0.2.2 adresini kullanmanız gerekir.
Öykünülen bir cihazın önceden ayrılmış adresleri Android Emülatör'e özgüdür ve gerçek hayatta büyük farklılıklar (özellikle de büyük olasılıkla ağ adresinin çevrilmesi için bir yönlendirici veya güvenlik duvarı arkasında).
Yerel ağ iletişimi sınırlamaları
Emülatörde çalışan Android uygulamaları, bir iş istasyonu olabilir. Ancak uygulamalar doğrudan donanıma ve emülatöre değil, emülatör üzerinden bağlanır. iş istasyonunuzdaki normal bir uygulama gibi çalışır. Bu durum, bazı sınırlamalara neden olabilir:
- Öykünülen cihazla iletişim, bir güvenlik duvarı tarafından engelleniyor olabilir yardımcı olan bir self servis programdır.
- Başka bir kişi, emüle edilen cihazla iletişimi engelliyor olabilir (fiziksel) güvenlik duvarı veya yönlendirici olması gerekir.
Emülatörün sanal yönlendiricisi, tüm giden TCP ve UDP bağlantıları ve mesajları (varsa) bunu mümkün kılar. Hayır, bağlantı noktası numaralarına veya aralıklarına ilişkin yerleşik sınırlamalar vardır. ana bilgisayar işletim sistemi ve ağ.
Emülatör, ortama bağlı olarak diğer ("ping" için kullanılan ICMP gibi) kullanır. Şu anda emülatörü, IGMP veya çoklu yayını desteklemiyor.
Ağ yönlendirmesi kullan
Sanal yönlendiricisinin arkasındaki bir emülatör örneğiyle iletişim kurmak için Sanal yönlendiricide ağ yönlendirmesini ayarlayın. Böylece müşteriler yönlendirici, trafiği yönlendirirken yönlendiricideki belirli bir misafir bağlantı noktasına ve emüle edilmiş cihaz ana makine bağlantı noktasına doğru taşıyabilirsiniz.
Ağ yönlendirmesini ayarlamak için ana makine ile misafirin eşlemesini oluşturun
bağlantı noktaları ve adresler üzerinde çalışır. iki şekilde ayarlayabilirsiniz:
ağ yönlendirme: Emülatör konsol komutlarını kullanma ve Android'i kullanma
Aşağıdaki bölümlerde açıklandığı gibi Hata Ayıklama Köprüsü (adb
) aracı.
Emülatör konsolu üzerinden yönlendirmeyi ayarlama
Her emülatör örneği, bağlanabileceğiniz bir kontrol konsolu sağlar ve
sorun komutlarını kullanabilirsiniz. Şunu kullanın:
redir
konsol komutunu kullanarak bir
emülatör örneğidir.
Öncelikle hedef emülatör örneği için konsol bağlantı noktası numarasını belirleyin. Örneğin, başlatılan ilk emülatör örneği için konsol bağlantı noktası numarası: 5554.) Daha sonra, hedef emülatör örneğinin konsoluna bağlanarak aşağıdaki gibi konsol bağlantı noktası numarası:
telnet localhost 5554
Bağlandıktan sonra, yeniden yönlendirmeyi ayarlayabilmek için önce kimlik doğrulaması yapmanız gerekir. Görüntüleyin
Şunlar için konsol oturumu başlat ve durdur
ayrıntılarına inceleyebilirsiniz. Kimlik doğrulamasından sonra şunun üzerinde çalışmak için redir
komutunu kullanın:
daha fazla bilgi edineceksiniz.
Yönlendirme eklemek için:
redir add <protocol>:<host-port>:<guest-port>
Burada <protocol>
, tcp
veya udp
olduğunda
ve <host-port>
ve <guest-port>
,
emüle edilmiş sistem ile emülasyonlu (emüle) gerçekleştirilen sistem arasında bir eşleme oluşturmayı sağlar.
Örneğin, aşağıdaki komut, tüm verilerinizi işleme koyan 127.0.0.1:5000 üzerinde ana makine (geliştirme) makinenize gelen TCP bağlantıları ve 10.0.2.15:6000 adresindeki emülasyonlu sisteme aktarır:
redir add tcp:5000:6000
Bir yönlendirmeyi silmek için redir del
komutunu kullanın. Alıcı:
belirli bir örneğe ait tüm yönlendirmelerin listesini yapmak için redir
list
kullanın. Bunlar ve diğer konsol komutları hakkında daha fazla bilgi için bkz.
Emulator konsol komutlarını gönderin.
Bağlantı noktası numaralarının yerel ortamınız tarafından kısıtlandığını unutmayın. Bu genelde
1024'ten küçük ana makine bağlantı noktası numaralarını özel bağlantı olmadan
yönetici ayrıcalıkları. Ayrıca, bir
makinenizdeki başka bir işlem tarafından kullanılan ana makine bağlantı noktasıdır. Bu
durumunda, redir
bu konuda bir hata mesajı oluşturur.
Adb üzerinden yönlendirmeyi ayarlama
Android Hata Ayıklama Köprüsü (adb
) aracı, alternatif bir uygulama olan bağlantı noktası yönlendirme sağlar.
ağ yönlendirmesini ayarlamanın bir yoludur. Daha fazla bilgi için adb
sayfasında Bağlantı noktası yönlendirmeyi ayarlama bölümüne bakın.
belgelerinden faydalanabilirsiniz.
adb
şu anda yönlendirmeyi kaldırmak için bir yol sunmadığını unutmayın
yalnızca adb
sunucusu durdurularak yapılır.
Emülatör DNS ayarlarını yapılandırma
Başlatma sırasında emülatör, sisteminizin ayarlı DNS sunucularının listesini okur belirleyebilirsiniz. Daha sonra, bu dizinde en fazla dört sunucunun IP adreslerini depolar. 10.0.2.3, 10.0.2.4, 10.0.2.4 veya 10.0.2.3, 10.0.2.4 adresli e-posta adreslerinde 10.0.2.5 ve 10.0.2.6'ya uygun olmalıdır.
Linux ve macOS'te emülatör, DNS sunucusu adreslerini ayrıştırarak elde eder.
/etc/resolv.conf
dosyası. Windows'da emülatör
GetNetworkParams()
API'yi çağırarak diğer adreslerini özelleştirebilirsiniz. Bu
genellikle emülatörün "ana makinelerinizin" içeriğini yok saydığı anlamına gelir dosya
(Linux/macOS'te /etc/hosts
, %WINDOWS%/system32/HOSTS
) görürsünüz.
Emülatörü komut satırından başlatırken
-dns-server <serverList>
kullanılacak DNS sunucularının adresleri (burada <serverList>
virgülle ayrılmış bir değerdir)
listesi oluşturmayı da gerektirir. Aşağıdaki şartlar karşılanıyorsa bu seçenek sizin için yararlı olabilir:
emüle edilmiş ağda DNS çözümleme sorunlarıyla karşılaşmanız (örneğin,
"Bilinmeyen Ana Makine hatası" mesajı gösterilir.
Emülatörü proxy ile kullanma
Birçok şirket ağında, internetle kurulan doğrudan bağlantılar tarafından reddediliyor. ağ yöneticileri için geçerlidir. Bunun yerine, internet bağlantılarının belirli bir temsil eder. Proxy gereksinimi olan bir ağ üzerinde internete erişmek için emülatör bir proxy olduğunu ve ona bağlanması gerektiğini bilmesi gerekir.
HTTP'nin yapısı nedeniyle, doğrudan web sunucusu bağlantısı ve proxy, farklı GET isteklerine neden olur. Emülatör, komut dosyasının içeriğini şeffaf bir şekilde yeniden yazar Proxy ile konuşmadan önce sanal cihazdan istek GET isteği gönderin.
Emülatörünüzün internete bir proxy sunucusu üzerinden erişmesi gerekiyorsa emülatörün Genişletilmiş denetimler ekranından özel HTTP proxy'si:
- Emülatör açıkken Diğer'i
tıklayın.
- Ayarlar'ı tıklayın ve Proxy.
- HTTP proxy ayarlarınızı tanımlayın.
![](https://developer.android.com/static/studio/images/run/emulator-proxy-settings_2x.png?authuser=9&hl=tr)
Alternatif olarak, komut satırından
-http-proxy <proxy>
seçeneği sunulur.
Bu durumda, proxy bilgilerini belirtin
<proxy>
dilinde, şu biçimlerden birinde:
http://<machineName>:<port>
veya
http://<username>:<password>@<machineName>:<port>
-http-proxy
seçeneği, emülatörü belirtilen değeri kullanmaya zorlar
Giden tüm TCP bağlantıları için HTTP veya HTTPS proxy'si. UDP için yönlendirme şu değil:
desteklenir.
Alternatif olarak ortam değişkenini de tanımlayabilirsiniz.
http_proxy
için kullanmak istediğiniz değeri içeren
<proxy>
. Bu durumda,
-http-proxy
komutundaki <proxy>
emülatör, http_proxy
ortam değişkeninin değerini
başlatma ve tanımlanmışsa otomatik olarak bu değeri kullanır.
Proxy'yi teşhis etmek için -debug-proxy
seçeneğini kullanabilirsiniz
bağlantı sorunlarına neden olur.
Ara bağlantı emülatörü örnekleri
Bir emülatör örneğinin başka bir emülatör örneğiyle iletişim kurmasını sağlamak için ağ yönlendirmesi için aşağıdaki talimatları uygulayın.
Ortamınızın şu şekilde temsil edildiğini varsayalım:
- A, geliştirme makinenizdir.
- B, A üzerinde çalışan ilk emülatör örneğinizdir.
- C, yine A üzerinde çalışan ikinci emülatör örneğinizdir.
C'nin bağlanacağı B üzerinde bir sunucu çalıştırmak istiyorsanız şöyle sıralayabiliriz:
- B'de sunucuyu kurup 10.0.2.15:<serverPort>.
- B konsolunda A:localhost:<localPort> - B:10.0.2.15:<serverPort>.
- C üzerinde, istemcinin 10.0.2.2:<localPort> bağlantısına bağlanmasını sağlayın.
Örneğin, bir HTTP sunucusu çalıştırmak istiyorsanız
80 olarak <serverPort>
ve <localPort>
8080:
- B, 10.0.2.15:80'de dinliyor.
- B konsolunda
redir add tcp:8080:80.
. sorun - C, 10.0.2.2:8080'e bağlanır.
Başka bir emülatör örneğine sesli arama veya SMS gönderin
Emülatör, simüle edilmiş sesli aramaları ve SMS mesajlarını tek bir örnekten otomatik olarak başka bir tane. Sesli arama veya SMS göndermek için sırasıyla numara çevirici uygulamasını veya SMS uygulamasını kullanın. elde edebiliyorlar.
Başka bir emülatör örneğine çağrı simüle edilmiş sesli arama başlatmak için:
- Kaynak emülatör örneğinde numara çevirici uygulamasını başlatın.
Çevrilecek numara olarak hedef örneğin konsol bağlantı noktası numarasını girin.
Şunları yapabilirsiniz: pencere başlığını kontrol ederek hedef örneğin konsol bağlantı noktası numarasını belirleyin. eğer ayrı bir pencerede çalıştırılıyor, ancak bir araç penceresinde çalıştırılıyorsa bunu yapamazsınız. İlgili içeriği oluşturmak için kullanılan konsol bağlantı noktası numarası "Android Emulator (<bağlantı noktası>)" olarak bildirildi.
Alternatif olarak,
adb devices
komutu, çalışan sanal cihazların ve bunların konsol bağlantı noktalarının listesini yazdırır numaraları'na dokunun. Daha fazla bilgi için bkz. cihazlar.- Çevir düğmesini tıklayın. Hedef emülatör örneğinde yeni bir gelen çağrı görünür.
Başka bir emülatör örneğine SMS mesajı göndermek için:
- Varsa SMS uygulamasını başlatın.
- Hedef emülatör örneğinin konsol bağlantı noktası numarasını SMS adresi olarak belirtin.
- Mesaj metnini girin.
- Mesajı gönderin. Mesaj, hedef emülatör örneğine teslim edilir.
Gelen sesli aramayı veya SMS'i simüle etmek için bir emülatör konsoluna da bağlanabilirsiniz. Daha fazla bilgi için bkz. Telefon emülasyonu ve SMS emülasyonu.