Chciałbym przetestować moją aplikację pod kątem przypadków niskiej łączności sieciowej. Jaki jest najlepszy sposób na to, oprócz stania w windzie? Próbowałem owinąć telefon folią aluminiową, ale to niewiele pomogło.
Muszę to przetestować na prawdziwym urządzeniu, a nie w emulatorze.
android
connectivity
Maggie
źródło
źródło
Odpowiedzi:
Możesz do tego użyć emulatora. Spójrz na tę stronę: Emulator Androida . Zwróć uwagę na dwa kolejne argumenty:
-netdelay <delay>
-netspeed <speed>
Prędkości odniesienia w rosnącym kb / s:
źródło
tc
polecenia (z busybox).Może to zabrzmieć trochę szalone, ale kuchenka mikrofalowa służy jako osłona kuchenki mikrofalowej. Dlatego włożenie urządzenia do kuchenki mikrofalowej (NIE włączaj kuchenki mikrofalowej, gdy urządzenie jest w środku!) Spowoduje znaczne zmniejszenie siły sygnału. To zdecydowanie bije stojąc w windzie ...
źródło
Ponieważ iPhone opcja deweloper stosuje się na wifi tethering, można uzyskać iPhone, który ma
iOS 6
i powyżej (i został ustawiony nause for developments
zxcode
), ustawić go naśladować żądany profil sieci, podłącz Android urządzenie do jego hotspotźródło
Aktualizacja dla Androida Studio v 1.5 lub nowszego
Jak @LouMorda wspomniał w komentarzu poniżej, że
Emulator
karta wymieniona w oryginalnym poście została usunięta w Android Studio v 1.5.Teraz umieścili te ustawienia w Ustawieniach symulatora w
AVD Manager
.Aby uzyskać dostęp do tych ustawień:
Tools -> Android -> AVD Manager
Edit AVD
przycisk (ikona ołówka)Network Settings
Można uzyskać po kliknięciuShow Advanced Settings
przyciskuOto zrzut ekranu, jak to może wyglądać:
Oryginalny post
Dla każdego, kto używa Android Studio IDE:
Run -> Edit Configurations
Android Application -> [Your App]
Emulator
zakładkęNetwork Speed
iNetwork Latency
symulować różne prędkości i opóźnienia itpAlternatywnie możesz wpisać różne argumenty w
Additional command line options
polu tekstowym, jak wspomniano w odpowiedzi @ inazaruk.Poniższy zrzut ekranu opisuje, jak
Run Configuration
wygląda ten ekran:Wiem, że jest trochę za późno, aby odpowiedzieć na to pytanie, ale mam nadzieję, że pomoże to innym w obliczu podobnych problemów!
Edytuj
Dla każdego używającego zaćmienia, patrz odpowiedź @ Abhi poniżej.
źródło
Wiem, że to stare pytanie, ale ...
Niektóre telefony mają obecnie ustawienie umożliwiające korzystanie tylko z 2G. Jest idealny do symulacji wolnego Internetu na prawdziwym urządzeniu.
źródło
Lata, ale hej, wprowadzę moją niezawodną metodę z Genymotion.
Pobierz bezpłatną wersję próbną Charlesa: http://www.charlesproxy.com/download/
Zainstaluj to
Kliknij
Proxy -> Throttle Settings
Skonfiguruj swoje przepustowości HTTP
Zamknij to okno
Kliknij,
Proxy -> Throttling
aby włączyć przepustnicęOtwórz emulator Genymotion
Otwórz ustawienia Wi-Fi
Naciśnij i przytrzymaj włączone połączenie Wi-Fi
Kliknij
Modify Network
Kliknij
Show Advanced Options
Ustaw
Proxy
naManual
Ustaw
Proxy hostname
na10.0.3.2
Ustaw
Port
na8888
Kliknij
Save
A teraz twoja sieć będzie dławiona!
źródło
Możesz także przetestować powolną łączność z Internetem na prawdziwym urządzeniu z Androidem:
Testowane z Samsung Galaxy S8 + Android 8.0.0
Idź do Ustawienia -> Połączenia -> Mobile Network -> i pod networkmode można używać tylko 2G lub 3G połączeń
źródło
Mam jedną strategię rozwiązania twojego problemu. Możesz użyć aplikacji proxy do modyfikowania lub monitorowania stanu sieci. np . Charles .
Powinieneś zmienić domyślną konfigurację Charlesa jak na poniższym obrazku, który zamieściłem.
I wreszcie odkryjesz, że status sieci został ukształtowany w niższym tempie.
źródło
Łatwy sposób przetestowania aplikacji przy niskim / złym połączeniu w emulatorze:
Idź Uruchom > Uruchom konfiguracje , wybierz aplikację na Androida , a następnie przejdź do zakładki Cel . Parametry uruchamiania Look Emulator . Tutaj możesz łatwo modyfikować szybkość sieci i opóźnienie sieci.
źródło
Istnieje prosty sposób testowania niskich prędkości na prawdziwym urządzeniu, które wydaje się być przeoczone. Wymaga komputera Mac i połączenia sieciowego Ethernet (lub innego przewodowego).
Włącz udostępnianie Wi-Fi na komputerze Mac, zmieniając komputer w hotspot Wi-Fi, podłącz do niego urządzenie. Użyj Netlimiter / Charles Proxy lub Network Link Conditioner (który mógł już być zainstalowany), aby kontrolować prędkości.
Aby uzyskać więcej informacji i zrozumieć, jakie prędkości powinieneś przetestować przy kasie : http://opensignal.com/blog/2016/02/05/go-slow-how-why-to-test-apps-on-poor -znajomości/
źródło
W Android Studio podczas uruchamiania emulatora:
1- Naciśnij przycisk Ustawienia na dole paska bocznego emulatora
2– Idź do komórkowej
3- Ustaw typ sieci
źródło
Facebook zbudował coś o nazwie Augmented Traffic Control . Krótkie streszczenie ze strony GitHub:
Można go znaleźć tutaj na GitHub: https://github.com/facebook/augmented-traffic-control
Napisali również post na blogu na ten temat: https://code.facebook.com/posts/1561127100804165/augmented-traffic-control-a-tool-to-simulate-network-conditions/
źródło
Dziwię się, że nikt o tym nie wspominał. Możesz tethering przez Bluetooth i rozdzielić je na dziesięć + metrów (lub mniej z przeszkodami). Masz naprawdę złe połączenie. Bez mikrofalówki, windy, bez oprogramowania.
źródło
Lub na rzeczywistym urządzeniu możesz przejść do Ustawienia -> Sieci mobilne -> Preferowane typy sieci i wybrać najwolniejszy dostępny ... Oczywiście jest to bardzo ograniczone, ale dla niektórych celów testowych może to wystarczyć.
źródło
AKTUALIZACJA w studiu Android AVD:
Brak mikrofalówek lub wind :)
źródło
Dla użytkowników systemu Mac OS możesz użyć Network Link Conditioner, który można pobrać z Apple. ustaw go jako AP na Macu i każdy dział może go podłączyć.
możesz użyć narzędzi Facebooka typu open source ATC http://facebook.github.io/augmented-traffic-control/
źródło
Czy chcesz przetestować brak połączenia sieciowego, czy tylko powolne połączenie sieciowe? Jeśli to pierwsze, możesz przejść do
Settings > Wireless & networks > Airplane mode
trybu samolotowego i włączyć go. To pozwoli ci przetestować niedostępność sieci na rzeczywistym urządzeniu.źródło
Idź Uruchom> Uruchom konfiguracje, wybierz aplikację na Androida, a następnie przejdź do zakładki Cel. Wykonaj zmiany, jak pokazano na rysunku.
źródło
Walczyłem z tym problemem przez pół dnia, w końcu doszedłem do tego rozwiązania:
Testowanie na prawdziwym urządzeniu nie ma większego sensu, ponieważ musisz wiele zrobić, aby działało. Jedynym logicznym sposobem na przeprowadzenie prawdziwych testów jest połączenie telefonu z niskiej jakości siecią komórkową, taką jak EDGE, jeśli zapewnia to firma telekomunikacyjna. Możesz spróbować to zrobić, wybierając
*#*#4636#*#*
aplikację telefonuOryginalny emulator Androida jest zbyt wolny do testowania i nie osiąga więcej niż powyższe rozwiązanie.
Najlepszym sposobem na to jest użycie Genymotion . Jest to emulator Androida o znacznie lepszej wydajności niż oryginalne AVD, a wersja do użytku osobistego jest darmowa.
Po utworzeniu urządzenia wirtualnego w Genymotion wystarczy przejść przez ten samouczek, aby ustawić serwer proxy dla tego urządzenia.
Uruchom serwer proxy na swoim komputerze hosta, który symuluje złe warunki sieciowe, takie jak Crapify lub Toxiproxy (testowałem tylko ten pierwszy) i jesteś gotowy .
Aktualizacja:
Właśnie zdałem sobie sprawę, że możesz wybrać tę samą strategię również z prawdziwymi urządzeniami. Czuję się jak idiota, bo nie zdawałem sobie z tego sprawy wcześniej. Wystarczy uruchomić serwer proxy Crapify na komputerze, ustawić serwer proxy telefonu na adres lokalny komputera i voila, masz kiepski internet w telefonie.
źródło
jak sugeruje @VicVu Charles (lub dowolne inne narzędzie proxy) jest łatwiejszym sposobem. Chciałbym jednak dodać, że możesz to zrobić na swoim urządzeniu, a nie tylko na genymotion lub innych emulatorach. Proces będzie taki sam:
Zmodyfikuj ustawienia Wi-Fi urządzenia / emulatora, aby korzystać z ręcznego proxy. A następnie ustaw nazwę hosta serwera proxy i port a. ustaw nazwę hosta jako ip twojego systemu (uzyskaj ip swojego komputera PC / Mac przy pomocy ifconfig / ifconfig) b. ustaw numer portu genymotion (sprawdź ustawienia proxy w charles)
PS: Twoje urządzenie / emulator MUSI używać tego samego Wi-Fi, ponieważ używany ip najprawdopodobniej będzie prywatnym ip.
źródło
Otwórz terminal w Android Studio i przejdź do ../../Android/sdk/tools. Plik wykonywalny „emulatora” powinien być dostępny tutaj.
Uruchom ./emulator -netdelay "delay_in_millis" -avd "emulator_device_evice"
Np .: ./emulator -netdelay 60000 -avd Nexus_5_API_21
Teraz skompiluj aplikację i zainstaluj ją w emulatorze.
Upewnij się, że masz zmiany w kodzie aplikacji, która ustawia limit czasu dla twojego żądania i obsługuje to.
źródło
Wystarczy przejść do monitora urządzenia Android ze studia Android, a następnie DDMS -> Sterowanie emulatorem. Będą właściwości Szybkość i Opóźnienie.
źródło
Odkryłem, że netlimiter4 jest najlepszym rozwiązaniem do dławienia danych do emulatorów. Zapewnia szczegółową kontrolę za pomocą przyzwoitego interfejsu GUI i zapewnia graficzne informacje zwrotne na temat przepustowości danych dla każdego procesu. Obecnie w bezpłatnej wersji beta. zrzut ekranu
http://www.netlimiter.com/products/nl4
W sklepie z zabawkami są dostępne aplikacje do dławienia rzeczywistych urządzeń, ale wymagają rootowania (nie mogę udzielić żadnej porady dotyczącej tego, jak dobrze działają, jeśli w ogóle - YMMV).
wyszukaj bradybound w sklepie Play, nie mogę opublikować więcej niż jednego linku ..
źródło
próbowałeś tego? Ustawienia - Sieci - Więcej - Sieci mobilne - Tryb sieci - Wybierz preferowaną sieć (na przykład 2G).
Inną metodę, której użyłem, wspomniano powyżej. Połącz przez hot spot iPhone'a. Mam nadzieję że to pomoże.
źródło
Używam proxy HTTPS mitmproxy . https://mitmproxy.org/
Mitmproxy to aplikacja proxy typu open source, która umożliwia przechwytywanie połączeń HTTP i HTTPS między dowolnym klientem HTTP (S). Pozwala monitorować, rejestrować i zmieniać te połączenia w czasie rzeczywistym. Zmień żądanie, odpowiedź, nagłówek ... Dodatkowo możesz przechwytywać różne żądania.
np. response_delay.py :
Wykonanie tego komentarza opóźnia wszystkie odpowiedzi z serwera:
Prosty samouczek można znaleźć tutaj .
Możesz znaleźć inne przykłady skryptów tutaj .
źródło
Bardzo stary post, ale dodam dwa centy. Byłem bardzo zadowolony z tego produktu sprzętowego ( https://apposite-tech.com/products/linktropy-mini/ ), który umożliwił nam symulację wielu rzeczywistych warunków. Przez długi czas mieliśmy problemy z rozwiązywaniem problemów związanych z emulatorem lub trybem samolotowym.
Mamy kilka różnych konfiguracji profili, od zerowej łączności do różnych etapów marginalnej łączności, z różnymi stopniami opóźnień, utraty pakietów i błędów bitów. Wspaniałą rzeczą jest to, że możemy je zmieniać w locie bez konieczności ponownego uruchamiania aplikacji w emulatorze. Dla naszego sklepu cena była całkowicie tego warta, a korzystanie z niego jest proste.
źródło
Musiałem dławić niski internet na rodzimym urządzeniu z AndroidTV i na podstawie tego, co przeczytałem, najbardziej odpowiednim rozwiązaniem było ograniczenie dostępu do Internetu bezpośrednio na moim routerze.
Przejdź do ustawień routera (lokalnie jest to jak 192.168.0.1) -> skonfiguruj serwer DHCP (jeśli nie jest uruchomiony) -> wybierz adres IP urządzenia i ustaw ograniczenie;
źródło