Имитация низкого сетевого подключения для Android

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

Мне нужно проверить это на реальном устройстве, а не в эмуляторе.

Ответ 1

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

  • -netdelay <delay>

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

  • -netspeed <speed>

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

Ответ 2

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

Ответ 3

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

enter image description here

Ответ 4

Обновление для Android Studio версии 1.5 или выше
Как отметил @LouMorda в комментарии ниже, вкладка Emulator, упомянутая в оригинальной записи, была удалена в Android Studio v 1.5.

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

  • Выберите Tools -> Android -> AVD Manager
  • Нажмите кнопку Edit AVD (значок карандаша)
  • Доступ к Network Settings можно получить после нажатия кнопки Show Advanced Settings

Вот скриншот, как это может выглядеть:
Настройки скорости сети и задержки в Android Studio v 1.5

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

  • Перейдите к Run -> Edit Configurations
  • Выберите Android Application -> [Your App]
  • Выберите вкладку Emulator
  • Здесь вы можете изменить разные значения для Network Speed и Network Latency, чтобы имитировать разные скорости и задержки и т.д.

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

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

Run Configurations Screen in Android Studio beta 0.8.6

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

Edit
Для тех, кто использует eclipse, см. @Abhi answer ниже.

Ответ 5

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

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

enter image description here

Ответ 6

Годы, но эй, я буду звонить с моим надежным методом с Genymotion.

  • Загрузите бесплатную пробную версию Charles: http://www.charlesproxy.com/download/

  • Установите его

  • Нажмите Proxy -> Throttle Settings

  • Настройте скорость дросселирования HTTP

  • Закройте это окно

  • Нажмите Proxy -> Throttling, чтобы включить дроссель

  • Откройте эмулятор Genymotion

  • Откройте настройки wifi

  • Длительное нажатие на включенное соединение Wi-Fi

  • Нажмите Modify Network

  • Нажмите Show Advanced Options

  • Установите Proxy в Manual

  • Установите Proxy hostname в 10.0.3.2

  • Установите Port в 8888

  • Нажмите Save

И теперь ваша сеть будет дросселирована!

Ответ 7

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

Go Запустить > Запустить конфигурации, выберите Android-приложение и перейдите на вкладку Целевая. Посмотрите параметры запуска эмулятора. Здесь вы можете легко изменить скорость сети и сетевую задержку.

Ответ 8

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

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

Open Your Throttle Setting

Setting Your Throttle Setting

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

Before

Setting After

Ответ 9

Существует простой способ тестирования низких скоростей на реальном устройстве, которое, похоже, было упущено. Для этого требуется подключение к сети Mac и ethernet (или другое проводное).

Включите совместное использование Wi-Fi на Mac, превратив ваш компьютер в точку доступа Wi-Fi, подключите ваше устройство к этому. Используйте Netlimiter/Charles Proxy или Network Link Conditioner (который вы, возможно, уже установили) для управления скоростями.

Подробнее и понять, какие скорости вы должны проверить при проверке: http://opensignal.com/blog/2016/02/05/go-slow-how-why-to-test-apps-on-poor-connections/

Ответ 10

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/

Ответ 11

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

Ответ 12

Я удивлен, что никто не упомянул об этом. Вы можете подключиться через Bluetooth и разделить их на ten+ метров (или меньше с препятствиями). У вас есть реальное плохое соединение. Без микроволновки, без лифта, без программного обеспечения.

Ответ 13

Вы хотите проверить отсутствие сетевого подключения или просто медленное сетевое соединение? Если первый, вы можете перейти к Settings > Wireless & networks > Airplane mode и включить режим полета. Это позволит вам проверить недоступность сети на самом устройстве.

Ответ 14

и для пользователя Mac OS вы можете использовать Network Link Conditioner, который можно загрузить из Apple. установите его как AP на mac, и любые его подразделения могут подключить его.

вы можете использовать инструменты open source с открытым исходным кодом ATC  http://facebook.github.io/augmented-traffic-control/

Ответ 15

Вы также можете проверить медленное интернет-соединение на реальном устройстве Android:

Протестировано с Samsung Galaxy S8 + Android 8.0.0

Перейдите в " Настройки" → " Подключение" → " Мобильная сеть" → и в режиме сети вы можете использовать только подключения 2G или 3G.

Ответ 16

Go Run > Запустите конфигурацию, выберите приложение Android и перейдите на вкладку Target. Сделайте изменения, как показано на рисунке.

enter image description here

Ответ 17

UPDATE на студии Android AVD:

  • открыть диспетчер AVD
  • создать/отредактировать AVD
  • нажмите дополнительные настройки
  • выберите предпочтительную настройку подключения

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

Ответ 18

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

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

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

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

Эмулятор Genymotion

После создания своего виртуального устройства в Genymotion просто перейдите этот учебник, чтобы установить прокси для устройства.

Запустите прокси-сервер на хост-машине, который имитирует плохие сетевые условия, например Crapify или Toxiproxy (я только тестировал первый), и вам хорошо идти.

Обновление:

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

Ответ 19

как это предложил @VicVu Charles (или любой другой прокси-инструмент), является более простым способом. Но я хотел бы добавить, что вы можете сделать это и с вашим устройством, а не только с genymotion или другими эмуляторами. Процесс будет таким же:

Измените настройки вашего устройства/эмулятора wifi для использования ручного прокси. И затем установите имя и порт прокси-сервера а. задайте имя хоста как ip вашей системы (получите ip вашего компьютера /mac, используя ifconfig/ifconfig) б. установите номер порта genymotion (проверьте настройки прокси-сервера в charles)

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

Ответ 20

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

  • Запустить./emulator -netdelay "delay_in_millis" -avd "emulator_device_name"

    Пример:./emulator -netdelay 60000 -avd Nexus_5_API_21

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

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

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

Ответ 21

Просто зайдите на Android-монитор устройства из студии Android, затем DDMS → Emulator Control. Появятся свойства скорости и задержки.

Ответ 22

Я нашел netlimiter4 лучшим решением для дросселирования данных для эмуляторов. Он обеспечивает гранулированный контроль через приличный gui и дает вам графическую обратную связь по пропускной способности данных для каждого процесса. В настоящее время в бесплатной бета-версии. скриншот

http://www.netlimiter.com/products/nl4

В магазине воспроизведения есть приложения, предназначенные для дросселирования на реальных устройствах, но для них требуется root (я не могу дать какие-либо рекомендации относительно того, насколько хорошо они работают, если вообще - YMMV.)

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

Ответ 23

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

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

Ответ 24

Я использую миттропрокси 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

В моем приложении я использую закрепление сертификата, поэтому вам нужно добавить сертификат (приватный + публичный)

cat private.key public.key> cert.pem

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

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

Ответ 25

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

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

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

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

Screenshot

Ответ 26

Очень старый пост, но я добавлю свои два цента. Я был ОЧЕНЬ счастлив с этим аппаратным продуктом (https://apposite-tech.com/products/linktropy-mini/), который позволил нам смоделировать множество реальных условий. Долгое время у нас были проблемы с поиском неисправностей в различных вещах, которые могли бы работать в эмуляторе или в режиме самолета.

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