android имитирует низкое сетевое подключение
Я хотел бы проверить мое приложение для случаев низкого подключения к сети. Кроме стояния в лифте, каков лучший способ сделать это? Я попытался обернуть свой телефон в алюминиевую фольгу, но это не очень помогло.
Мне нужно протестировать его на реальном устройстве, а не в эмуляторе.
24 ответа:
Вы можете использовать эмулятор для этого. Взгляните на эту страницу: Эмулятор Android. Обратите внимание на следующие два аргумента:
-netdelay <delay>
установить эмуляцию задержки сети . Значение по умолчанию-нет. Видеть таблица в эмуляции сетевой задержки для поддерживаемых значений.
-netspeed <speed>
установить эмуляцию скорости сети . Значение по умолчанию-полный. Видеть стол Эмуляция скорости сети для поддерживаемых значений.
Это может показаться немного сумасшедшим, но микроволновая печь служит в качестве микроволнового экрана. Поэтому поместите устройство в микроволновую печь (не включайте микроволновую печь, пока устройство находится внутри!) заставит вашу силу сигнала значительно упасть. Это определенно лучше, чем стоять в лифте...
С айфонов вариант разработчика применить на 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
- выберите (значок карандаша)
- The
Network Settings
можно получить после щелчок навот скриншот того, как это может выглядеть:
Оригинальное Сообщение
Для тех, кто использует Android Studio IDE:
- на
Run -> Edit Configurations
- выберите
Android Application -> [Your App]
- выберите
Emulator
tab- здесь вы можете изменить различные значения
Network Speed
иNetwork Latency
для имитации различных скоростей и задержек и т. д.кроме того, вы можете ввести различные аргументы в
Additional command line options
текстовое поле, как указано в ответе @inazaruk.скриншот ниже описывает, как это
Run Configuration
экран выглядит так:Я знаю, что это немного поздно, чтобы ответить на этот вопрос, но я надеюсь, что это помогает другим с похожими проблемами!
Edit
Для тех, кто использует eclipse, см. @ Abhi ответ под.
лет, но эй,я буду перезванивать с моим надежным методом с Genymotion.
загрузите бесплатную пробную версию Charles:http://www.charlesproxy.com/download/
установки
клик
Proxy -> Throttle Settings
настройка скорости HTTP дросселирования
закрыть окно
клик
Proxy -> Throttling
включить дроссельоткройте эмулятор Genymotion
Откройте настройки wifi
длительное нажатие на включенное соединение Wi-Fi
клик
Modify Network
клик
Show Advanced Options
Set
Proxy
доManual
установить
Proxy hostname
до10.0.3.2
установить
Port
to8888
клик
Save
и теперь ваша сеть будет душиться!
Я знаю, это старый вопрос, но...
некоторые телефоны в настоящее время имеют настройки для использования только 2G. Он идеально подходит для моделирования медленного интернета на реальном устройстве.
простой способ проверить ваше приложение с низким / плохим соединением в эмуляторе:
перейти выполнить>настройки запуска, выберите Приложения Для 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, иметь возможность формировать свой трафик. Трафик может быть сформирован / не сформирован с помощью веб-интерфейса, позволяющего любым устройствам с веб-браузером использовать 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 вы можете использовать сетевой Link Conditioner, который можно загрузить с apple. установить его в качестве точки доступа по 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 вашего устройства / эмулятора, чтобы использовать ручной прокси. А затем установите имя хоста прокси и порт а. установить имя хоста в IP-адрес вашего компьютера (узнать IP-адрес вашего ПК/Mac, используя ifconfig/команду ifconfig) b. установите номер порта genymotion (проверьте прокси-сервер настройки в charles)
PS: ваше устройство / эмулятор должны использовать тот же Wi-Fi, так как ip, который вы используете, скорее всего, будет частным ip.
откройте терминал Inandroid Studio и перейдите к нему ../../ Android / sdk / tools. исполняемый файл 'emulator' должен быть доступен здесь.
выполнить ./emulator-netdelay "delay_in_millis" - avd"emulator_device_name"
Ex: ./ эмулятор-netdelay 60000-avd Nexus_5_API_21
Теперь создайте свое приложение и установите его в эмулятор.
- запустите сценарий в приложении.
убедитесь, что у вас есть изменения кода в приложении, которое устанавливает тайм-аут для вашего запроса и обрабатывает его.
просто перейдите на монитор устройства Android из Android studio, затем DDMS -> управление эмулятором.Там будут свойства скорости и задержки.
Я нашел netlimiter4, чтобы быть лучшим решением для дросселирования данных для эмуляторов. Он обеспечивает гранулированный контроль через достойный графический интерфейс и дает вам графическую обратную связь по пропускной способности данных для каждого процесса. В настоящее время в бесплатной бета-версии. скриншот
http://www.netlimiter.com/products/nl4
есть приложения, доступные в play store, чтобы дросселировать до реальных устройств, но они требуют root(я не могу дать никаких советов о том, насколько хорошо они работа, если вообще-МММВ.)
поиск bradybound на play store, я не могу разместить более одной ссылки..
Я удивлен, что никто не упомянул об этом. Вы можете привязать через Bluetooth, и отделить их на десять+ метров(или меньше с препятствиями). У тебя есть real плохая связь. Ни микроволновки, ни лифта, ни программного обеспечения не требуется.
Я использую mitmproxy HTTPS прокси. https://mitmproxy.org/
Mitmproxy-это прокси-приложение с открытым исходным кодом, которое позволяет перехватывать HTTP-и HTTPS-соединения между любыми http-клиентами. Это позволяет отслеживать, захватывать и изменять эти соединения в режиме реального времени. Запрос на изменение, ответ, заголовок, ... Кроме того, вы можете перехватывать различные запросы.
например 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)
кошки частные.ключ открытый.ключ > сертификат.Пем
Вы можете найти простой учебник здесь.
Вы можете найти другие примеры сценариев здесь.