android имитирует низкое сетевое подключение
Я хотел бы проверить свое приложение для случаев низкого сетевого подключения. Кроме как стоять в лифте, как лучше всего это сделать? Я попытался обернуть свой телефон в алюминиевую фольгу, но это не очень помогло.
Мне нужно протестировать его на реальном устройстве, а не в эмуляторе.
24 ответов
для этого можно использовать эмулятор. Взгляните на эту страницу: Эмулятор Android. Обратите внимание на следующие два аргумента:
-
-netdelay <delay>
установите эмуляцию задержки сети . Значение по умолчанию-none. Видеть таблица в эмуляции задержки сети для поддерживаемых значений.
-
-netspeed <speed>
установите эмуляцию скорости сети . Значение по умолчанию-full. Видеть стол Эмуляция скорости сети для поддерживаемых значений.
Это может показаться немного сумасшедшим, но микроволновая печь служит в качестве микроволнового экрана. Поэтому поместите устройство в микроволновую печь (не включайте микроволновую печь, пока устройство находится внутри!) приведет к значительному снижению уровня сигнала. Это определенно лучше, чем стоять в лифте...
С айфонов вариант разработчика применяется на привязывать wifi, вы можете получить iPhone который имеет iOS 6
и выше (и было установлено значение use for developments
С xcode
), установите его для эмуляции нужного профиля сети, подключите свой Android устройство к своей точке доступа
обновление для Android Studio v 1.5 или выше
Как @LouMorda упомянул в комментарии ниже, что Emulator
вкладка, упомянутая в исходном сообщении, была удалена в Android Studio V 1.5.
теперь они разместили эти настройки в настройках симулятора в AVD Manager
.
Для доступа к этим настройкам:
- выберите
Tools -> Android -> AVD Manager
- выберите (значок карандаша)
- на
Network Settings
можно получить после щелчок
вот скриншот того, как он может появиться:
Оригинальное Сообщение
Для тех, кто использует Android Studio IDE:
- на
Run -> Edit Configurations
- выберите
Android Application -> [Your App]
- выберите
Emulator
tab - здесь вы можете изменить различные значения
Network Speed
иNetwork Latency
сымитировать различные скорости и задержки etc
кроме того, вы можете ввести различные аргументы в Additional command line options
текстовое поле, как указано в ответе @inazaruk.
скриншот ниже описывает, как это Run Configuration
экран выглядит так:
Я знаю, что немного поздно отвечать на этот вопрос, но я надеюсь, что это поможет другим, сталкивающимся с подобными проблемами!
редактировать
Для тех, кто использует eclipse, см. ответ@Abhi под.
лет, но эй, я перезвоню с моим надежным методом с Genymotion.
скачать бесплатную пробную версию Charles:http://www.charlesproxy.com/download/
установки
клик
Proxy -> Throttle Settings
настройка скорости HTTP дросселирования
закрыть окно
клик
Proxy -> Throttling
включить дроссельоткройте эмулятор Genymotion
Откройте настройки wifi
длительное нажатие на включенное соединение wifi
клик
Modify Network
клик
Show Advanced Options
Set
Proxy
доManual
установить
Proxy hostname
to10.0.3.2
установить
Port
в8888
клик
Save
и теперь ваша сеть будет душиться!
Я знаю, это старый вопрос, но...
некоторые телефоны в настоящее время имеют настройку для использования только 2G. Он идеально подходит для моделирования медленного интернета на реальном устройстве.
простой способ проверить приложение с низким / плохим подключением в эмуляторе:
Go выполнить>настройки запуска, выберите Приложения Для Android, а там идите в цель tab. Посмотри параметры запуска эмулятора. Здесь вы можете легко изменить скорость сети и задержку сети.
есть простой способ тестирования низких скоростей на реальном устройстве, которое, кажется, было упущено. Для этого требуется Mac и ethernet (или другое проводное) сетевое подключение.
включите WiFi sharing на Mac, превратив ваш компьютер в точку доступа Wifi, подключите устройство к этому. Используйте Netlimiter / Charles Proxy или Network Link Conditioner (который вы, возможно, уже установили) для управления скоростью.
для получения более подробной информации и понять, какой скоростью вы следует проверить на выезд: http://opensignal.com/blog/2016/02/05/go-slow-how-why-to-test-apps-on-poor-connections/
Facebook построил что-то под названием Расширенный Контроль Трафика. Краткое резюме со страницы GitHub:
расширенное управление трафиком (ATC) - это инструмент для имитации сетевых условий. Это позволяет контролировать подключения устройства к интернету. Разработчики могут использовать ATC для тестирования своих приложений в различных сетевых условиях, легко эмулируя высокоскоростные, мобильные и даже сильно поврежденные сети. Аспекты связи, которые могут быть контролируемые включают:
- ширина полосы
- задержка
- потеря пакетов
- поврежденных пакетов
- пакеты заказ
чтобы иметь возможность формировать сетевой трафик, ATC должен работать на устройстве, которое маршрутизирует трафик и видит реальный IP-адрес устройства, например, ваш сетевой шлюз. Это также позволяет любым устройствам, которые проходят через ATC, иметь возможность формировать свой трафик. Трафик может быть сформирован / unshaped с помощью веб-интерфейса, позволяющего любым устройствам с веб-браузером использовать ATC без необходимости клиентского приложения.
вы можете найти его здесь на GitHub: https://github.com/facebook/augmented-traffic-control
Они также написали сообщение в блоге об этом: https://code.facebook.com/posts/1561127100804165/augmented-traffic-control-a-tool-to-simulate-network-conditions/
У меня есть одна стратегия, чтобы решить ваши проблемы. Вы можете использовать приложение прокси для изменения или мониторинга состояния сети. е.г, Чарльз.
вы должны изменить конфигурацию по умолчанию Чарльза, как на следующем рисунке, который я опубликовал.
и, наконец, вы обнаружите, что чистый статус был сформирован в более низкий шаг.
или на фактическом устройстве вы можете перейти в Настройки - > мобильные сети - > предпочтительные типы сетей и выбрать самый медленный доступный... Конечно, это очень ограничено, но для некоторых целей это может быть достаточно.
Для и Mac OS пользователя вы можете использовать Network Link Conditioner, который может быть загружен с apple. установите его как AP на mac, и любые божества могут его подключить.
вы можете использовать facebook open source tools ATC http://facebook.github.io/augmented-traffic-control/
Go Run > Run конфигурации, выберите приложение для Android, и там перейдите на вкладку Target. Сделать изменения, как показано на рисунке.
обновление на Android studio AVD:
- открыть AVD manager
- создать / изменить AVD
- дополнительные настройки
- выберите предпочтительную настройку подключения
нет микроволн или лифтов:)
Я боролся с этой проблемой в течение половины дня, наконец, я пришел к этому решению:
тестирование на реальном устройстве не имеет смысла в целом, как вы должны пройти через многое, чтобы заставить его работать. Единственный логичный способ добиться реального тестирования - подключить телефон к низкокачественной сотовой сети, например EDGE, если его предоставляет ваша телефонная компания. Вы можете попробовать сделать это, набрав
*#*#4636#*#*
в телефоне, приложенияоригинал Эмулятор Android слишком медленный для тестирования и не достигает большего, чем решение выше.
лучший способ сделать это с помощью Genymotion. Это эмулятор Android с гораздо лучшей производительностью, чем оригинальный AVDs, и версия для личного использования бесплатна.
после того, как вы создали свое виртуальное устройство в Genymotion, просто пройдите в этом уроке установить прокси для устройство.
запустите прокси-сервер на хост-компьютере, который имитирует плохие сетевые условия, например Crapify или Toxiproxy (я только проверил первое), и вы хорошо идти.
обновление:
Я только что понял, что вы можете выбрать ту же стратегию с реальными устройствами. Я чувствую себя идиоткой, что не поняла этого раньше. Просто запустите прокси-сервер Crapify на вашем компьютере, установите прокси-сервер телефона на локальный адрес вашего компьютера и вуаля, у тебя дерьмовый интернет на телефоне.
вы хотите проверить отсутствие сетевого подключения или просто медленное сетевое подключение? Если первое, вы можете перейти к Settings > Wireless & networks > Airplane mode
и включите режим "в самолете". Это позволит вам проверить недоступность сети на реальном устройстве.
Как предложил @VicVu Charles (или любой другой прокси-инструмент), это более простой способ пойти. Но я хотел бы добавить, что вы можете сделать это и с вашим устройством, а не только с genymotion или другими эмуляторами. Процесс будет таким же:
измените настройку wifi вашего устройства / эмулятора, чтобы использовать ручной прокси. А затем установите имя и порт прокси-сервера a. установите имя хоста как ip вашей системы (получите ip вашего ПК / mac, используя ifconfig / ifconfig) b. установите номер порта genymotion (проверьте прокси настройки в charles)
PS: ваше устройство / эмулятор должны использовать тот же wifi, так как ip, который вы используете, скорее всего, будет частным ip.
откройте терминал Inandroid Studio и перейдите../../ Android / sdk / инструменты. исполняемый файл 'emulator' должен быть доступен здесь.
-
Run ./ эмулятор-netdelay "delay_in_millis" - avd "emulator_device_name"
Ex: ./ эмулятор-netdelay 60000-avd Nexus_5_API_21
Теперь создайте приложение и установите его в эмулятор.
- запустите сценарий в приложении.
убедитесь, что у вас есть изменения кода в приложении, которое устанавливает тайм-аут для вашего запроса и обрабатывает его.
просто перейдите в Android Device monitor из Android studio, затем DDMS - > управление эмулятором.Будут свойства Speed и Latency.
Я нашел netlimiter4 лучшим решением для дросселирования данных для эмуляторов. Он обеспечивает гранулированный контроль через достойный графический интерфейс и дает графическую обратную связь по пропускной способности данных для каждого процесса. В настоящее время в бесплатной бета-версии. скриншот
http://www.netlimiter.com/products/nl4
есть приложения, доступные в play store, чтобы дросселировать фактические устройства, но они требуют root(я не могу дать никаких советов о том, насколько хорошо они работа, если вообще-YMMV.)
поиск bradybound в play Маркете, я не могу опубликовать более одной ссылки..
Я удивлен, что никто не упомянул об этом. Вы можете привязать через Bluetooth и разделить их на десять метров(или меньше с препятствиями). У тебя есть реальные плохая связь. Ни микроволновки, ни лифта, ни программного обеспечения.
Я использую mitmproxy HTTPS прокси. https://mitmproxy.org/
Mitmproxy-это прокси-приложение с открытым исходным кодом, которое позволяет перехватывать соединения HTTP и HTTPS между любым клиентом HTTP(S). Это позволяет контролировать, захватывать и изменять эти соединения в режиме реального времени. Изменить запрос, ответ, заголовок,... Кроме того, вы можете перехватывать различные запросы.
например response_delay.py:
from mitmproxy import http
from time import sleep
def response(flow: http.HTTPFlow) -> None:
sleep(5.0)
затем выполнение этого комментария задерживает все ответы с сервера:
mitmproxy --cert \*.asdf.at=./cert.pem --scripts response_delay.py
в моем приложении я использую закрепление сертификата, поэтому вам нужно добавить сертификат (private + public)
кошки частные.ключ открытый.ключ > верняк.Пем!--7-->
Вы можете найти простой учебник здесь.
Вы можете найти другие примеры сценариев здесь.
ты пробовал? Настройки-сети-больше-мобильные сети-сетевой режим-выберите предпочтительную сеть (например, 2G).
другой метод я использовал выше. Подключение через горячую точку iPhone. Надеюсь, это поможет.
В Android Studio при запуске эмулятора:
1-Нажмите кнопку Настройки в нижней части боковой панели эмулятора
2 - Перейти к сотовой связи
3-Установить Тип Сети