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


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

24 152

24 ответа:

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

  1. -netdelay <delay>

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

  2. -netspeed <speed>

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

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

С айфонов вариант разработчика применить на 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. The 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 для имитации различных скоростей и задержек и т. д.

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

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

Run Configurations Screen in Android Studio beta 0.8.6

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

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 to 8888

  • клик Save

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

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

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

enter image description here

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

перейти выполнить>настройки запуска, выберите Приложения Для 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/

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

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

Open Your Throttle Setting

Setting Your Throttle Setting

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

Before

Setting After

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

для пользователя и mac OS вы можете использовать сетевой Link Conditioner, который можно загрузить с apple. установить его в качестве точки доступа по 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 вашего устройства / эмулятора, чтобы использовать ручной прокси. А затем установите имя хоста прокси и порт а. установить имя хоста в IP-адрес вашего компьютера (узнать IP-адрес вашего ПК/Mac, используя ifconfig/команду ifconfig) b. установите номер порта genymotion (проверьте прокси-сервер настройки в charles)

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

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

  2. выполнить ./emulator-netdelay "delay_in_millis" - avd"emulator_device_name"

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

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

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

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

просто перейдите на монитор устройства 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)

кошки частные.ключ открытый.ключ > сертификат.Пем

Вы можете найти простой учебник здесь.

Вы можете найти другие примеры сценариев здесь.

ты пробовал? Настройки-сети-больше-мобильные сети-сетевой режим-выберите предпочтительную сеть (например, 2G).

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

В Android Studio, при запуске эмулятора:

1-Нажмите кнопку Настройки в нижней части боковой панели эмулятора

2 - Перейти к сотовой связи

3-Установить Тип Сети

Screenshot