Android için düşük ağ bağlantısını simüle edin [kapalı]


228

Uygulamamı düşük ağ bağlantısı durumları için test etmek istiyorum. Asansörde durmak dışında bunu yapmanın en iyi yolu nedir? Telefonumu alüminyum folyoya sarmayı denedim, ama pek yardımcı olmadı.

Bir emülatörde değil, gerçek bir cihazda test etmem gerekiyor.


1
Faraday kafeslerini de araştırın . İnşa edilmesi kolaydır.
jww

Yanıtlar:


119

Bunun için emülatör kullanabilirsiniz. Şu sayfaya bir göz atın: Android Emulator . Sonraki iki argümana dikkat edin:

  1. -netdelay <delay>

    Ağ gecikmesi öykünmesini olarak ayarlayın. Varsayılan değer yok. Desteklenen değerler için Ağ Gecikmesi Emülasyonu'ndaki tabloya bakın.

  2. -netspeed <speed>

    Ağ hızı emülasyonunu olarak ayarlayın. Varsayılan değer dolu. Desteklenen değerler için Ağ Hızı Emülasyonu'ndaki tabloya bakın.

    Artan kbps'de referans hızları:

                            UP       DOWN
                      -------- ----------
    gsm   GSM/CSD         14.4       14.4
    hscsd HSCSD           14.4       57.6
    gprs  GPRS            28.8       57.6
    umts  UMTS/3G        384.0      384.0
    edge  EDGE/EGPRS     473.6      473.6
    hsdpa HSDPA         5760.0   13,980.0
    lte   LTE         58,000.0  173,000.0
    evdo  EVDO        75,000.0  280,000.0
    full  No limit                     

15
Çok teşekkürler, ama dediğim gibi, gerçek bir cihazda test etmek istiyorum. herhangi bir şekilde bunu bir htc veya samsung telefonda yapabilirim?
Maggie

2
Benim tahminim, tek yolun, ağ hızını kontrol edebilen bir wi-fi yönlendirici / AP'ye sahip olmasıdır. Bu daha çok bir ağ yöneticisi şeyidir. Ancak bu teorik olarak mümkün olmalıdır.
inazaruk

78
Ben asansörü kullandım :) ama herkese teşekkürler
Maggie

3
HTTP üzerinden gecikmeyi simüle etmek için ResponseCache.setDefault (yeni CacheResponse () {...}) kullanın ve oraya Thread.sleep (200) çağrısı yapın. Bu, programlı olarak kontrol edilme (yani sadece bir aktivitede) ve diğer süreçleri etkilememe avantajına sahiptir. Ancak, daha gerçekçi bir test için, yönlendiricinizde veya tckomutu (meşgul kutusundan) kullanarak sınırı ayarlamanız gerekir .
Mart'ta

113
Bu neden cevap olarak kabul edildi? Soru açıkça bir emülatörde değil "
Kyle Ivey

272

Bu biraz çılgınca gelebilir, ancak mikrodalga fırın mikrodalga kalkan olarak işlev görür. Bu nedenle, cihazınızı mikrodalga fırının içine koymak (cihazınız içerideyken mikrodalga fırını AÇMAYIN!) Sinyal gücünüzün önemli ölçüde düşmesine neden olur. Kesinlikle bir asansör içinde duran yener ...


3
Vay be, şimdi bana kendimi fırına sığdırmanın bir yolunu önerebilirsen. Ve fırınlar 2,4 GHz ekranlama için tasarlanmıştır. Daha düşük frekanslarda çalışmayabilir. BİLMİYORUM!
WindRider

2
benim mikrodalga işe yaramadı (yani bağlantı hala iyi)! Agh: |
yura

1
Bağlı bir USB kablonuz varsa, sinyal bu şekilde gizlenebilir. Mikrodalga içinde hiçbir kablo takılı değilse, sinyal almamalıdır. Bu efekti, telefonu eritmeyecek alüminyum folyo ile de elde edebilmelisiniz, çünkü telefonu yanlışlıkla kapatamazsınız.
John Moore

Anında bağlantıyı kesmeniz gerekiyorsa ve daha fazla kullanıcı etkileşimi gerektirmiyorsa, mikrodalga fırın hala iyi bir seçenektir, ki bu benim özel kullanım durumumdu.
Robert Yang

108

Yana iPhone'lar geliştirici seçeneği wifi tethering'i uygulamak, sen sahip bir iPhone alabilirsiniz iOS 6ve yukarıda (ve set olmuştur use for developmentsile xcode), istenen ağ profili taklit senin bağlamak için ayarlayın Android onun hotspot cihazı

resim açıklamasını buraya girin


10
Biz de vardığımız çözüm buydu. Bunun mevcut en akılcı seçenek olması utanç verici. Yanıtta, iPhone'un tethering'in çalışması için 3G / hücresel bir bağlantı gerektirdiğine dikkat edilmelidir. Ayrıca, iPhone yardımcı programındaki yükleme / indirme hızlarının bağlı cihaza göre ters çevrilmesi gerektiğini unutmayın.
Kyle Ivey

Parlak! Aptallık, özellikle en iyi seçenek olduğundan, özellikle emülatör bunu yapabildiğinden.
karl

İPhone emülatörü WiFi bağlanabilir?
Kirill Kulakov

Teşekkürler. Nasıl ayarlanacağı konusunda şaşkındım. Kişisel Hotspot'lara izin veren bir hücresel plandaysanız, bu böyle olur. İOS 7.12 kullanıyorum 1) gidin SETTINGS-> Cellular-> Personal Hotspot 2) Kişisel Hotspot anahtarını sağa kaydırın, böylece yeşil / açık (tercih ederseniz şifreyi değiştirebilir) 3) geri dönün, geri dönün ve Geliştirici'ye kaydırın 4) Ağ Bağlantı Kremi'ne gidin ve dokunun. ETKİNLEŞTİR öğesini sağa kaydırın, böylece yeşil / açık olacak şekilde bir profil seçin. "Çok Kötü Ağ" ı seçtim. Bu bana ping verdi (2198ms) indir (0.05Mbps) upload (0.08Mbps) 5) Android'inizi hotspot'a bağlayın!
Anthony De Souza

1
Gülmeyi durduramıyorum ama bu, gerçek bir cihazda yavaş ağı simüle etmek için en iyi çözümdür. Teşekkürler
KD.

71

Android Studio v 1.5 veya üstü için güncelleme
As @LouMorda, aşağıdaki yorumda belirtildiği gibiEmulator yorumda, orijinal sekmenin Android Studio v 1.5'te kaldırıldığını belirtti.

Şimdi bu ayarları Simülatör Ayarları'na yerleştirdiler AVD Manager.
Bu ayarlara erişmek için:

  1. seçmek Tools -> Android -> AVD Manager
  2. Tıkla Edit AVD düğmesi (kalem simgesi)
  3. Network SettingsTıkladıktan sonra erişilebilir Show Advanced Settingsdüğmesi

İşte nasıl görünebileceğinin bir ekran görüntüsü:
Android Studio v 1.5'te Ağ Hızı ve Gecikme Ayarları

Orijinal Gönderi
Android Studio IDE kullanan herkes için:

  1. Adresine git Run -> Edit Configurations
  2. seçmek Android Application -> [Your App]
  3. seçmek EmulatorSekme
  4. Burada farklı hızları ve gecikmeleri simüle etmek Network Speedve Network Latencybenzetmek için farklı değerleri değiştirebilirsiniz.

Alternatif olarak, Additional command line options@ inazaruk'un cevabında belirtildiği gibi metin alanına çeşitli argümanlar girebilirsiniz .

Aşağıdaki ekran görüntüsü bu Run Configurationekranın nasıl göründüğünü açıklar :

Android Studio beta 0.8.6'da Yapılandırma Ekranını Çalıştırma

Ben bu soruya cevap vermek için biraz geç biliyorum, ama umarım bu benzer sorunlarla karşı karşıya başkalarına yardımcı olur!

Düzenle Tutulmayı
kullanan herkes için aşağıdaki @ Abhi'nin cevabına bakınız.


1
Bu sekme Android Studio v1.5'te kaldırıldı
Lou Morda

@ S1LENT WARRIOR Gecikme nedir ve (örneğin) "hız: kenar, gecikme: yok" ve "hız: dolu, gecikme: kenar" arasındaki fark nedir?
Johnny Five

1
@JohnnyFive hızı ağ hızınızı, gecikme süresi de ağ gecikmesini ifade eder.
S1LENT WARRIOR

45

Eski bir soru olduğunu biliyorum ama ...

Bazı telefonlarda günümüzde sadece 2G kullanılabiliyor. Gerçek bir cihazda yavaş interneti simüle etmek için mükemmeldir.

resim açıklamasını buraya girin


mükemmel ! kenardan kenara ve 9kbyte / s hızında yükleme.
JcV

Harika, bu benim şu andaki ihtiyacımla mükemmel bir şekilde uyuyor. Odamda,
200KB'lık

3
Bu adam gerçek MVP.
edwoollard

33

Yaşımdaydı ama hey, Genymotion ile kusursuz yöntemime gireceğim.

  • Charles ücretsiz deneme sürümünü indirin: http://www.charlesproxy.com/download/

  • Yükle

  • TıklayınProxy -> Throttle Settings

  • HTTP kısılmış hızlarınızı ayarlayın

  • Pencereyi kapat

  • Proxy -> ThrottlingGazı etkinleştirmek için tıklayın

  • Bir Genymotion emülatörü açın

  • Kablosuz ayarlarını açın

  • Etkin wifi bağlantısına uzun basın

  • Tıklayın Modify Network

  • Tıklayın Show Advanced Options

  • Set ProxyiçinManual

  • Set Proxy hostnameiçin10.0.3.2

  • Set Portiçin8888

  • Tıklayın Save

Ve şimdi ağınız daraltılacak!


10.0.3.2 ana bilgisayar adını nereden aldınız? bu charle varsayılan mı?
abbood

hostname, Charles yerel ağ adresini çalıştıran bilgisayar olmalıdır
MaTriXy

16

Ayrıca gerçek bir android cihazda yavaş internet bağlantısını test edebilirsiniz:

Samsung Galaxy S8 + Android 8.0.0 ile test edildi

Git Ayarlar -> Bağlantı -> Mobil Ağ -> ve altında networkmode sadece kullanmayı tercih edebilirsiniz 2G veya 3G bağlantılarını


15

Sorununuzu çözmek için bir stratejim var. Net durumunuzu değiştirmek veya izlemek için proxy uygulamasını kullanabilirsiniz. örneğin, Charles .

Gönderdiğim aşağıdaki resim gibi Charles'ın varsayılan yapılandırmasını değiştirmeniz gerekir.

Gaz Ayarınızı Açın

Gaz Ayarınızı Yapma

Ve son olarak, net durumun daha düşük hızda şekillendiğini keşfedeceksiniz.

Önce

Sonra Ayarlama


2
Bu şu ana kadar tek yeterli çözüm: D
egorikem

8

Emülatörde düşük / kötü bağlantı ile uygulamanızı test etmenin kolay yolu:

Git Run > Run yapılandırmaları , sizin seçmek Android Uygulaması ve oraya gidip Hedef sekmesine. Bakın Emülatörü fırlatma parametrelerini . Burada, Ağ Hızı ve Ağ Gecikmesini kolayca değiştirebilirsiniz.


8

Göz ardı edilmiş gibi görünen gerçek bir cihazda düşük hızları test etmenin basit bir yolu var. Mac ve ethernet (veya başka bir kablolu) ağ bağlantısı gerektirir.

Mac'te Wifi paylaşımını açın, bilgisayarınızı bir Wifi etkin noktasına dönüştürün, cihazınızı buna bağlayın. Hızları kontrol etmek için Netlimiter / Charles Proxy veya Network Link Conditioner'ı (daha önce kurmuş olabileceğiniz) kullanın.

Daha fazla ayrıntı ve check-out sırasında hangi hızları test etmeniz gerektiğini anlamak için: http://opensignal.com/blog/2016/02/05/go-slow-how-why-to-test-apps-on-poor -bağlantıları /


"Paylaşım" tercih bölmesini kullanarak, herhangi bir bağlantının çoğunu diğerleriyle paylaşabilirsiniz. WiFi bağlantımı Bluetooth üzerinden paylaşacak şekilde ayarladım. (Bu ayarlanana kadar bluetooth seçenekleri ile bağlantı Android telefonumda görünmedi.)
Doug Reeder

Ağ Bağlantısı Düzenleyici Aracını kurmak için: stackoverflow.com/q/9659382
Pang

7

Android Studio'da bir emülatör çalıştırırken:

1- Öykünücü kenar çubuğunun altındaki Ayarlar düğmesine basın

2- Hücresel

3- Ağ Türünü Ayarlayın

Ekran görüntüsü


6

Facebook, Artırılmış Trafik Kontrolü adlı bir şey yaptı . GitHub sayfalarından kısa bir özet:

Artırılmış Trafik Kontrolü (ATC) ağ koşullarını simüle etmek için bir araçtır. Bir cihazın internete olan bağlantısını kontrol etmeyi sağlar. Geliştiriciler, uygulamalarını çeşitli ağ koşullarında test etmek, yüksek hızlı, mobil ve hatta ciddi şekilde bozulmuş ağları kolayca taklit etmek için kullanabilirler. Kontrol edilebilen bağlantının özellikleri şunlardır:

  • Bant genişliği
  • gecikme
  • paket kaybı
  • bozuk paketler
  • paketleri sipariş

Ağ trafiğini şekillendirebilmek için ATC'nin trafiği yönlendiren ve örneğin ağ geçidiniz gibi cihazın gerçek IP adresini gören bir cihazda çalışıyor olması gerekir. Bu aynı zamanda ATC üzerinden geçen tüm cihazların trafiklerini şekillendirmesine olanak tanır. Trafik, web tarayıcısı olan herhangi bir aygıtın istemci uygulamasına gerek kalmadan ATC kullanmasına olanak tanıyan bir web arayüzü kullanılarak şekillendirilebilir / biçimlendirilemez.

GitHub'da bulabilirsiniz: https://github.com/facebook/augmented-traffic-control

Ayrıca bu konuda bir blog yazısı yazdılar: https://code.facebook.com/posts/1561127100804165/augmented-traffic-control-a-tool-to-simulate-network-conditions/


6

Kimsenin bundan bahsetmediğine şaşırdım. Bluetooth ile bağlanabilir ve on + metre (veya engellerle daha az) ayırabilirsiniz. Bir var gerçek kötü bağlantı. Mikrodalga yok, asansör yok, yazılım gerektirmiyor.


Çok iyi bir Bluetooth bağlantınız yoksa bu aslında iyi bir çözümdür. Bunun için eski bir cihaz kullanmanız gerekiyor. :)
android geliştirici

5

Ya da gerçek bir cihazda Ayarlar -> Mobil Ağlar -> Tercih edilen ağ türlerine gidebilir ve en yavaş olanı seçebilirsiniz ... Tabii ki bu çok sınırlıdır, ancak bazı test amaçları için yeterli olabilir.


3

Android Studio AVD'de GÜNCELLEME:

  1. AVD yöneticisini aç
  2. AVD oluştur / düzenle
  3. gelişmiş ayarları tıklayın
  4. tercih ettiğiniz bağlantı ayarını seçin

Mikrodalga veya asansör yok :)



2

Ağ bağlantısı veya yalnızca yavaş bir ağ bağlantısı olup olmadığını test etmek istiyor musunuz? Birincisi ise, Settings > Wireless & networks > Airplane modeUçak modunu açabilir ve açabilirsiniz. Bu, gerçek bir cihazda ağ kullanılabilirliğini test etmenizi sağlar.


Teşekkürler, ancak düşük ağ bağlantısını test etmeye çalışıyordum. Örneğin. düşük bir EDGE sinyali veya bunun gibi bir şey için.
Maggie

Ah. 3G'yi kapatamaz ve EDGE dolaşımına geri dönemezsiniz çok kötü. En azından telefonumda yapamazsın.
David Conrad

2

Çalıştır> Yapılandırmaları çalıştır'a gidin, Android Uygulamanızı seçin ve Hedef sekmesine gidin. Şekilde gösterildiği gibi değişiklikler yapın.

resim açıklamasını buraya girin


2

Yarım gün boyunca bu sorunla mücadele ediyordum, sonunda bu çözüme geldim:

  • Gerçek bir cihazda test yapmak, çalışmasını sağlamak için çok şey yapmanız gerektiğinden genel olarak çok mantıklı değildir. Gerçek bir test yapmanın tek mantıklı yolu, telefonunuz şirket tarafından sağlanıyorsa, telefonunuzun EDGE gibi düşük kaliteli bir hücresel ağa bağlanmasını sağlamaktır. *#*#4636#*#*Telefon uygulamasını arayarak bunu deneyebilirsiniz

  • Orijinal Android emülatörü test için çok yavaş ve yukarıdaki çözümden daha fazlasını başaramıyor.

Bunu yapmanın en iyi yolu Genymotion kullanmaktır . Orijinal AVD'lerden çok daha iyi performansa sahip bir Android emülatörüdür ve kişisel kullanım sürümü ücretsizdir.

Genymotion emülatörü

Genymotion'da sanal cihazınızı oluşturduktan sonra, bu eğiticiyi gözden geçirin , cihaz için bir proxy ayarlamak için .

Ana makinenizde Crapify veya Toxiproxy gibi kötü ağ koşullarını simüle eden bir proxy sunucusu çalıştırın (yalnızca test ettim) ve hazırsınız.

Güncelleme:

Aynı stratejiyi gerçek cihazlarla da seçebileceğinizi fark ettim. Daha erken fark edemediğim için aptal gibi hissediyorum. Bilgisayarınızda bir Crapify proxy'si başlatın, telefon proxy'nizi bilgisayarınızın yerel adresine ve voila'ya ayarlayın, telefonunuzda berbat bir internet var.


1

@VicVu tarafından önerildiği gibi Charles (veya başka herhangi bir proxy aracı) gitmek daha kolay bir yoludur. Ama bunu sadece genymotion veya diğer emülatörlerle değil, cihazınızla da yapabileceğinizi eklemek isterim. Süreç aynı olacak:

Manuel proxy kullanmak için cihazınızın / emülatörünüzün wifi ayarını değiştirin. Ve sonra Proxy ana bilgisayar adını ve bağlantı noktasını a ayarlayın. ana bilgisayar adını sisteminizin ipi olarak ayarlayın (ifconfig / ifconfig kullanarak pc / mac'inizin ipini alın) b. genymotion port numarasını ayarlayın (charles'ta proxy ayarlarını kontrol edin)

Not: Kullandığınız ip büyük olasılıkla özel ip olacağından cihazınız / emülatörünüz aynı wifi'yi KULLANMALIDIR.


1
  1. Android Studio'da terminali açın ve ../../Android/sdk/tools adresine gidin. "emulator" yürütülebilir dosyası burada mevcut olmalıdır.

  2. ./Emulator -netdelay "delay_in_millis" -avd "emulator_device_name" komutunu çalıştırın

    Örnek: ./emulator -netdelay 60000 -avd Nexus_5_API_21

  3. Şimdi uygulamanızı oluşturun ve emülatöre yükleyin.

  4. Senaryoyu uygulamada çalıştırın.

Kod değişikliklerinizi, isteğiniz için zaman aşımını ayarlayan ve bunu işleyen uygulamada yaptığınızdan emin olun.


1

Sadece Android stüdyosundan Android cihaz monitörüne, ardından DDMS -> Emulator Control'e gidin. Hız ve Gecikme özellikleri olacaktır.


1

Netlimiter4'ü, emülatörlere veri kısıtlamak için en iyi çözüm olarak buldum. İyi bir gui aracılığıyla ayrıntılı kontrol sağlar ve her bir sürece veri akışı hakkında grafiksel geri bildirim sağlar. Şu anda ücretsiz bir beta sürümünde. ekran görüntüsü

http://www.netlimiter.com/products/nl4

Oyun deposunda gerçek cihazlara kısmak için uygulamalar var, ancak kök gerektiriyorlar (YMMV.

oyun mağazasında bradybound arayın, birden fazla bağlantı gönderemiyorum ..


1

bunu denedin mi Ayarlar - Ağlar - Diğer - Mobil Ağlar - Ağ modu - Tercih edilen ağı seçin (örneğin 2G).

Kullandığım başka bir yöntem yukarıda belirtildi. İPhone etkin noktası üzerinden bağlanın. Bu yardımcı olur umarım.


1

Mitmproxy HTTPS proxy kullanıyorum . https://mitmproxy.org/

Mitmproxy, herhangi bir HTTP (S) istemcisi arasında HTTP ve HTTPS bağlantılarının kesilmesini sağlayan açık kaynaklı bir proxy uygulamasıdır. Bu bağlantıları gerçek zamanlı olarak izlemenizi, yakalamanızı ve değiştirmenizi sağlar. Değişiklik isteği, yanıt, başlık, ... Ayrıca farklı istekleri de kesebilirsiniz.

örneğin response_delay.py :

from mitmproxy import http
from time import sleep

def response(flow: http.HTTPFlow) -> None:
    sleep(5.0)

Daha sonra bu yorumun yürütülmesi sunucudan gelen tüm yanıtları geciktirir:

mitmproxy --cert \*.asdf.at=./cert.pem --scripts response_delay.py

Uygulamamda sertifika sabitleme kullanıyorum, bu nedenle sertifikayı eklemeniz gerekiyor (özel + genel)

cat private.key public.key> cert.pem

Burada basit bir Öğretici bulabilirsiniz .

Burada diğer komut dosyası örneklerini bulabilirsiniz .


0

Çok eski yazı ama iki sent ekleyeceğim. Birçok gerçek dünya koşulunu simüle etmemizi sağlayan bu donanım ürününden ( https://apposite-tech.com/products/linktropy-mini/ ) ÇOK memnun oldum . Uzun bir süre, emülatörde veya uçak modunda çalışacak çeşitli şeyleri gidermek için zorluklar yaşadık.

Sıfır bağlantıdan, farklı gecikme dereceleri, paket kaybı ve bit hatalarına sahip çeşitli marjinal bağlanma aşamalarına kadar birkaç farklı profil kurulumumuz var. Bununla ilgili en iyi şey, uygulamayı bir emülatörde yeniden başlatmak zorunda kalmadan bunları anında değiştirebilmemizdir. Fiyat bizim dükkan için tamamen buna değer olmuştur ve kullanımı ölü basit.


0

AndroidTV yerel cihazında düşük interneti kısaltmam gerekiyordu ve okuduğum şeye göre, en uygun çözüm internet erişimini doğrudan yönlendiricimde sınırlamaktı.
Yönlendirici ayarlarına gidin (yerel olarak 192.168.0.1 gibi bir şeydir) -> DHCP sunucusunu kurun (çalışmıyorsa) -> bir cihazın IP adresini seçin ve kısıtlamayı ayarlayın;

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.