Simulieren niedrige Netzwerk-Konnektivität für Android
Ich würde gerne testen, meine Anwendung für die Fälle der niedrige Netzwerk-Konnektivität. Außer stehend im Lift, was ist der beste Weg, dies zu tun? Ich habe versucht, packe meine Handy in einer Aluminium-Folie, aber es half nicht viel.
Ich brauche, um es zu testen auf einem echten Gerät, nicht in einem emulator.
- Auch Forschung, Faraday-Käfige. Sie sind einfach zu bauen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie emulator für diese. Werfen Sie einen Blick auf diese Seite: Android-Emulator. Achten Sie die nächsten zwei Argumente:
-netdelay <delay>
-netspeed <speed>
tc
Befehl (aus der busybox).Das klingt ein wenig verrückt, aber eine Mikrowelle dient als eine Mikrowelle-Schild. Daher setzen Sie Ihr Gerät in Mikrowelle (DO NICHT schalten Sie die Mikrowelle, während Ihr Gerät im inneren!) verursachen Sie Ihre Signalstärke deutlich sinken. Es definitiv schlägt Sie stehen in einem Aufzug...
Seit iPhones Entwickler-option anwenden auf WLAN-tethering, können Sie ein iPhone, das hat
iOS 6
und oben (und wurde eingestellt, umuse for developments
mit derxcode
), es zu emulieren, die gewünschte Netzwerk-Profil, verbinden Sie Ihr Android Geräte auf den hotspotUpdate für Android Studio v 1.5 oder höher
Wie @LouMorda erwähnt in einem Kommentar unten, dass die
Emulator
tab erwähnt im ursprünglichen post wurde entfernt, in Android Studio v 1.5.Nun Sie platziert haben, werden diese Einstellungen in den Simulator-Einstellungen in
AVD Manager
.Um auf diese Einstellungen zuzugreifen:
Tools -> Android -> AVD Manager
Edit AVD
- button (Bleistift-Symbol)Network Settings
zugegriffen werden kann, nach einem Klick auf denShow Advanced Settings
TasteHier ist ein screenshot von dem, wie es scheinen mag:
Original-Beitrag
Für alle mit Android Studio-IDE:
Run -> Edit Configurations
Android Application -> [Your App]
Emulator
RegisterkarteNetwork Speed
undNetwork Latency
Simulation unterschiedlicher Geschwindigkeiten und Latenzen etcAlternativ können Sie auch verschiedene Argumente in
Additional command line options
Textfeld wie bereits erwähnt in @inazaruk Antwort.Die Abbildung unten beschreibt, wie diese
Run Configuration
Bildschirm sieht wie folgt aus:Ich weiß, das ist ein bisschen spät, um eine Antwort auf diese Frage, aber ich hoffe, dies hilft anderen mit ähnlichen Problemen!
Bearbeiten
Für jemand mit eclipse finden Sie @Abhi ' s Antwort unten.
Ich weiß, es ist eine alte Frage, aber...
Einige Handys haben heute eine Einstellung zu nutzen, nur 2G. Es ist perfekt für die Simulation von langsamen internet-auf einem echten Gerät.
Jahre alt, aber hey, ich werde Glockenspiel mit meinem narrensichere Methode, mit Genymotion.
Download Charles free trial: http://www.charlesproxy.com/download/
Installieren Sie es
Klicken Sie auf
Proxy -> Throttle Settings
Einrichten HTTP gedrosselte Geschwindigkeiten
Schließen Sie das Fenster
Klicken Sie auf
Proxy -> Throttling
zu ermöglichen, die DrosselklappeÖffnen, eine Genymotion emulator
Öffnen Sie die WLAN-Einstellungen
Lange drücken Sie die aktivierte wifi-Verbindung
Klicken Sie auf
Modify Network
Klicken Sie auf
Show Advanced Options
Set
Proxy
zuManual
Legen Sie die
Proxy hostname
zu10.0.3.2
Legen Sie die
Port
zu8888
Klicken Sie auf
Save
Nun ist Ihr Netzwerk wird gedrosselt!
Habe ich eine Strategie, um begleichen Sie Ihre problem. Sie können die Anwendung von proxy zu ändern oder überwachen Sie Ihre Netz-status. e.g, Charles.
Sollten Sie das ändern der Standard-config von der Charles wie das folgende Bild, das ich gepostet.
Und schließlich entdecken Sie die net-status geprägt, in geringerem Umfang.
Einfache Möglichkeit zum testen Ihrer Anwendung mit niedrig/schlechte Verbindung im emulator:
Gehen Laufen > "Konfigurationen Ausführen", wählen Sie Ihr Android Anwendung, und dort gehen Sie zu Ziel tab.
Schauen Emulator starten Parameter. Hier können Sie leicht ändern Sie die Netzwerkgeschwindigkeit und Netzwerk-Latenz.
Gibt es eine einfache Möglichkeit zu testen niedrigen Geschwindigkeiten auf einem realen Gerät, das scheint zu übersehen wurden. Es erfordert eine Mac-und eine ethernet - (oder andere Kabel) - Netzwerk-Anschluss.
Schalten Sie Wifi-sharing auf dem Mac, drehen Sie Ihren computer in einen Wifi-hotspot verbinden Sie Ihr Gerät mit diesem. Verwenden Netlimiter/Charles Proxy oder Network Link Conditioner (die Sie möglicherweise bereits installiert haben) zum Steuern der Geschwindigkeiten.
Für mehr details und zu verstehen, welche Art von Geschwindigkeiten, sollten Sie testen, check out: http://opensignal.com/blog/2016/02/05/go-slow-how-why-to-test-apps-on-poor-connections/
Sind Sie auch in der Lage zu testen, langsame internet-Konnektivität auf einem echten android-Gerät:
Getestet mit Samsung Galaxy S8 + Android Version 8.0.0
Gehen Einstellungen -> Verbindung -> Mobile Netzwerk -> und unter Netzwerkmodus können Sie nur verwenden, 2G oder 3G verbindungen
Facebook etwas geschaffen, das sogenannte Augmented Traffic Control. Eine kurze Zusammenfassung aus Ihrer GitHub Seite:
Finden Sie es hier auf GitHub: https://github.com/facebook/augmented-traffic-control
Haben Sie auch geschrieben, um einen blog-post darüber: https://code.facebook.com/posts/1561127100804165/augmented-traffic-control-a-tool-to-simulate-network-conditions/
Ich bin überrascht, niemand erwähnt. Sie können die Leine über Bluetooth, und trennen Sie Sie durch zehn+ m(oder weniger mit Hindernissen). Du hast eine real schlechte Verbindung. Keine Mikrowelle, kein Aufzug, keine software erforderlich.
Oder auf einem tatsächlichen Gerät, das Sie können gehen Sie zu Einstellungen -> Mobile Netzwerke -> Bevorzugte Netzwerk-Typen und wählen Sie die langsamste verfügbar...
Dies ist natürlich sehr begrenzt, aber für einige test - Zwecke könnte es reichen.
In Android-Studio, beim laufen eine emulator:
1 - Hit-Einstellungen Schaltfläche am unteren Rand des emulator sidebar
2 - Gehen zu Zellulären
3er - Set-Netzwerk-Typ
UPDATE auf die Android-studio AVD:
Keine Mikrowellen oder Aufzügen 🙂
für-und mac-OS-Benutzer können Sie mit Network Link Conditioner, die heruntergeladen werden kann von apple. legen Sie es als ein AP auf mac und alle Geräte betroffen, könnte ihm verbunden.
können Sie entweder facebook open-source-Werkzeugen ATC
http://facebook.github.io/augmented-traffic-control/
Wollen Sie testen, für die keine Netzwerk-Verbindung, oder nur eine langsame Netzwerk-Verbindung? Wenn der ehemalige, können Sie gehen, um
Settings > Wireless & networks > Airplane mode
und schalten Sie den Flugzeugmodus auf. Lassen Sie test der Netzwerk-Nichtverfügbarkeit, die auf einem Gerät.Gehen Ausführen > "Konfigurationen Ausführen", wählen Sie Ihre Android-Anwendung, und dort gehen Sie zur Registerkarte Target. Mache änderungen wie in der Abbildung gezeigt.
Ich kämpfte mit diesem problem seit einem halben Tag, schließlich kam ich zu dieser Lösung:
Tests auf einem echten Gerät macht nicht viel Sinn insgesamt, wie Sie müssen durch eine Menge gehen, um es arbeiten. Der einzige logische Weg, um eine echte Prüfung zu machen Sie Ihr Telefon eine Verbindung zu einer niedrigen Qualität Mobilfunknetz, wie EDGE, wenn Ihre Telefongesellschaft zur Verfügung stellt. Sie können versuchen, dies zu tun, indem Sie wählen
*#*#4636#*#*
in die Telefon-appOriginal-Android-emulator ist viel zu langsam für die Prüfung und erreicht nicht mehr als die Lösung oben.
Der beste Weg, dies zu tun ist mit Genymotion. Es ist ein Android-emulator, mit viel bessere Leistung als das original AVDs und die version für den persönlichen Gebrauch ist frei.
Nachdem das virtuelle Gerät in Genymotion, gehen Sie einfach durch dieses tutorial um einen proxy für das Gerät.
Führen Sie einen proxy-server auf Ihrem host-Maschine, die simuliert schlechten Netzwerk-Bedingungen, wie Crapify oder Toxiproxy (ich habe nur getestet die ehemaligen) und du bist gut zu gehen.
Update:
Ich merkte, Sie können wählen Sie die gleiche Strategie, die mit echten Geräten zu. Ich fühle mich wie ein idiot für nicht ahnend, dass es früher. Starten Sie einfach eine Crapify-proxy auf Ihrem computer, legen Sie Ihre Handy-proxy auf Ihrem computer die lokale Adresse, und voila, Sie habe beschissen internet auf Ihrem Handy.
vorgeschlagen von @VicVu Charles (oder anderen proxy-tool) ist ein einfacher Weg, um zu gehen. Aber ich möchte hinzufügen, dass Sie dies tun können, mit Ihrem Gerät auch, nicht nur genymotion oder anderen Emulatoren. - Prozess werden die gleichen sein:
Ändern Ihr Gerät/emulator die wifi-Einstellung manual proxy. Und dann werden die Proxy-hostname & port
ein. setzen Sie den Hostnamen als ip-Adresse Ihres Systems (die ip-Adresse Ihres pc/mac mit ifconfig/ifconfig)
b. legen Sie die port-Nummer von genymotion (überprüfen Sie die proxy-Einstellungen in charles)
PS: Ihr Gerät/emulator MÜSSEN mit dem gleichen wifi, da die ip, die Sie verwenden werden die meisten wahrscheinlich werden die privaten ip.
Terminal öffnen inAndroid Studio und Gehe zu ../../Android/sdk/tools. 'emulator' executable sollten hier verfügbar sein.
Laufen ./emulator -netdelay "delay_in_millis" -avd "emulator_device_name"
Ex: ./emulator -netdelay 60000 -avd Nexus_5_API_21
Nun bauen Sie Ihre app und installieren Sie es im emulator.
Stellen Sie sicher, dass Sie Ihre code-änderungen in der app, setzt timeout auf Ihre Anfrage und Griffe.
Gehen Sie einfach zu der Android device monitor aus dem Android studio , dann DDMS -> Emulator Kontrolle.Es werden Geschwindigkeit-und Latenz-Eigenschaften.
Fand ich netlimiter4 die beste Lösung für die Drosselung der Daten zu Emulatoren.
Es sorgt für eine fein abgestufte Kontrolle durch eine anständige gui und gibt Ihnen die grafische Rückmeldung auf den Daten-Durchsatz für jeden Prozess. Derzeit in einer kostenlosen beta.
screenshot
http://www.netlimiter.com/products/nl4
Gibt es apps im play store zu drosseln, um die tatsächlichen Geräte, aber Sie erfordern root(kann ich nicht geben Ratschläge, wie gut Sie funktionieren, wenn überhaupt - YMMV.)
Suche nach bradybound auf den play store, kann ich nicht mehr posten als ein link..
haben Sie versucht das?
Einstellungen - Netzwerke - Mehr - Mobile Netzwerke - Netzmodus - Wählen Sie das bevorzugte Netz (2G zum Beispiel).
Andere Methode, die ich oben erwähnt wurde. Verbindung via iPhone Hotspot.
Hoffe, das hilft.
Ich bin mit mitmproxy HTTPS-proxy. https://mitmproxy.org/
Mitmproxy ist ein open-source-proxy-Anwendung, die es ermöglicht das abfangen von HTTP-und HTTPS-verbindungen zwischen HTTP(S) - client. Sie ermöglicht es, zu überwachen, zu erfassen und zu verändern, diese verbindungen in Echtzeit. Change request, response, header, ...
Zusätzlich können Sie abfangen unterschiedliche Anforderungen.
z.B. response_delay.py:
Dann ausführen dieser Kommentar Verzögerungen alle Antworten vom server:
Finden Sie ein einfaches Tutorial hier.
Finden Sie andere Skript-Beispiele hier.
Sehr Alter post, aber ich ' ll hinzufügen meine zwei Cent. Ich war SEHR zufrieden mit diesem hardware-Produkt ( https://apposite-tech.com/products/linktropy-mini/ ), die es uns ermöglicht hat, zu simulieren, eine Menge von real-Welt-Bedingungen. Für eine lange Zeit, die wir hatten Herausforderungen Fehlerbehebung verschiedene Dinge, die funktionieren würde, in einem emulator oder mit dem Flugzeug-Modus.
Wir haben mehrere verschiedene profile setup von null-Konnektivität zu verschiedenen Stadien der marginalen verbindungen, mit unterschiedlichen Graden der Latenz, Paketverlust und bit-Fehler. Die große Sache über Sie ist, wir können ändern Sie diese on-the-fly, ohne dass der relaunch der app in einem emulator. Der Preis wurde ganz gelohnt für unser Geschäft, und es ist tot einfach zu bedienen.