android имитирует низкое сетевое подключение

Я хотел бы проверить свое приложение для случаев низкого сетевого подключения. Кроме как стоять в лифте, как лучше всего это сделать? Я попытался обернуть свой телефон в алюминиевую фольгу, но это не очень помогло.
Мне нужно протестировать его на реальном устройстве, а не в эмуляторе.

24 ответов


для этого можно использовать эмулятор. Взгляните на эту страницу: Эмулятор Android. Обратите внимание на следующие два аргумента:

  1. -netdelay <delay>

    установите эмуляцию задержки сети . Значение по умолчанию-none. Видеть таблица в эмуляции задержки сети для поддерживаемых значений.

  2. -netspeed <speed>

    установите эмуляцию скорости сети . Значение по умолчанию-full. Видеть стол Эмуляция скорости сети для поддерживаемых значений.


Это может показаться немного сумасшедшим, но микроволновая печь служит в качестве микроволнового экрана. Поэтому поместите устройство в микроволновую печь (не включайте микроволновую печь, пока устройство находится внутри!) приведет к значительному снижению уровня сигнала. Это определенно лучше, чем стоять в лифте...


С айфонов вариант разработчика применяется на привязывать wifi, вы можете получить iPhone который имеет iOS 6 и выше (и было установлено значение use for developments С xcode), установите его для эмуляции нужного профиля сети, подключите свой Android устройство к своей точке доступа

enter image description here


обновление для Android Studio v 1.5 или выше
Как @LouMorda упомянул в комментарии ниже, что Emulator вкладка, упомянутая в исходном сообщении, была удалена в Android Studio V 1.5.

теперь они разместили эти настройки в настройках симулятора в AVD Manager.
Для доступа к этим настройкам:

  1. выберите Tools -> Android -> AVD Manager
  2. выберите (значок карандаша)
  3. на Network Settings можно получить после щелчок

вот скриншот того, как он может появиться:
Network Speed and Latency Settings in Android Studio v 1.5

Оригинальное Сообщение
Для тех, кто использует Android Studio IDE:

  1. на Run -> Edit Configurations
  2. выберите Android Application -> [Your App]
  3. выберите Emulator tab
  4. здесь вы можете изменить различные значения Network Speed и Network Latency сымитировать различные скорости и задержки etc

кроме того, вы можете ввести различные аргументы в Additional command line options текстовое поле, как указано в ответе @inazaruk.

скриншот ниже описывает, как это Run Configuration экран выглядит так:

Run Configurations Screen in Android Studio beta 0.8.6

Я знаю, что немного поздно отвечать на этот вопрос, но я надеюсь, что это поможет другим, сталкивающимся с подобными проблемами!

редактировать
Для тех, кто использует 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 to 10.0.3.2

  • установить Port в 8888

  • клик Save

и теперь ваша сеть будет душиться!


Я знаю, это старый вопрос, но...

некоторые телефоны в настоящее время имеют настройку для использования только 2G. Он идеально подходит для моделирования медленного интернета на реальном устройстве.

enter image description here


простой способ проверить приложение с низким / плохим подключением в эмуляторе:

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/


У меня есть одна стратегия, чтобы решить ваши проблемы. Вы можете использовать приложение прокси для изменения или мониторинга состояния сети. е.г, Чарльз.

вы должны изменить конфигурацию по умолчанию Чарльза, как на следующем рисунке, который я опубликовал.

Open Your Throttle Setting

Setting Your Throttle Setting

и, наконец, вы обнаружите, что чистый статус был сформирован в более низкий шаг.

Before

Setting After


или на фактическом устройстве вы можете перейти в Настройки - > мобильные сети - > предпочтительные типы сетей и выбрать самый медленный доступный... Конечно, это очень ограничено, но для некоторых целей это может быть достаточно.


Для и 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. Сделать изменения, как показано на рисунке.

enter image description here


обновление на Android studio AVD:

  1. открыть AVD manager
  2. создать / изменить AVD
  3. дополнительные настройки
  4. выберите предпочтительную настройку подключения

нет микроволн или лифтов:)


Я боролся с этой проблемой в течение половины дня, наконец, я пришел к этому решению:

  • тестирование на реальном устройстве не имеет смысла в целом, как вы должны пройти через многое, чтобы заставить его работать. Единственный логичный способ добиться реального тестирования - подключить телефон к низкокачественной сотовой сети, например EDGE, если его предоставляет ваша телефонная компания. Вы можете попробовать сделать это, набрав *#*#4636#*#* в телефоне, приложения

  • оригинал Эмулятор Android слишком медленный для тестирования и не достигает большего, чем решение выше.

лучший способ сделать это с помощью Genymotion. Это эмулятор Android с гораздо лучшей производительностью, чем оригинальный AVDs, и версия для личного использования бесплатна.

Genymotion emulator

после того, как вы создали свое виртуальное устройство в 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.


  1. откройте терминал Inandroid Studio и перейдите../../ Android / sdk / инструменты. исполняемый файл 'emulator' должен быть доступен здесь.

  2. Run ./ эмулятор-netdelay "delay_in_millis" - avd "emulator_device_name"

    Ex: ./ эмулятор-netdelay 60000-avd Nexus_5_API_21

  3. Теперь создайте приложение и установите его в эмулятор.

  4. запустите сценарий в приложении.

убедитесь, что у вас есть изменения кода в приложении, которое устанавливает тайм-аут для вашего запроса и обрабатывает его.


просто перейдите в 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-Установить Тип Сети

Screenshot