Имитировать плохое сетевое подключение на android [duplicate]

Какое поведение вы ожидаете? Вызов system ('notepad') работает отлично - он просто не отображает графический интерфейс. Он работает в фоновом режиме, и PHP сидит там терпеливо, ожидая, когда блокнот закроется (и только продолжит, если вы убьете блокнот из списка процессов).

Если вы ожидаете, что он появится в графическом интерфейсе, Я абсолютно уверен, что вы не можете этого сделать. ;) Параметр может состоять в том, чтобы выписать пакетный скрипт ( file_put_contents ('runme.bat', 'notepad hello.txt') ) и поставить этот пакетный скрипт в очередь (с планировщиком Windows или любым другим cron -эквивалент находится на Windows), чтобы работать в асинхронном режиме (и очистить себя в конце).

152
задан Maggie 11 August 2011 в 13:57
поделиться

25 ответов

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

  1. -netdelay & lt; delay & gt; Установите эмуляцию латентности сети на. Значение по умолчанию - нет. См. Таблицу в эмуляции сетевой задержки для поддерживаемых значений.
  2. -netspeed & lt; speed & gt; Установите эмуляцию сетевой скорости в. Значение по умолчанию заполнено. См. Таблицу в эмуляции сетевой скорости для поддерживаемых значений.
82
ответ дан gudthing 15 August 2018 в 22:44
поделиться
  • 1
    спасибо большое, но, как я уже сказал, я хотел бы протестировать на реальном устройстве. любым способом я могу сделать это на телефоне htc или samsung? – Maggie 11 August 2011 в 14:04
  • 2
    Я предполагаю, что единственный путь - это иметь Wi-Fi-маршрутизатор / AP, который может контролировать скорость сети. Это больше связано с сетевым администрированием. Но это теоретически возможно. – inazaruk 11 August 2011 в 14:46
  • 3
    Я использовал лифт :), но спасибо всем – Maggie 16 August 2011 в 20:00
  • 4
    Для моделирования латентности через HTTP используйте ResponseCache.setDefault (новый CacheResponse () {...}) и поместите туда вызов Thread.sleep (200). Это имеет то преимущество, что он программно контролируется (т. Е. Только в одном действии) и не влияет на другие процессы. Однако для более реалистичного теста вы должны установить лимит на своем маршрутизаторе или с помощью команды tc (из busybox). – yingted 14 March 2012 в 23:53
  • 5
    Почему это было принято как ответ? Вопрос четко сформулирован «не в эмуляторе», – Kyle Ivey 10 December 2013 в 05:05

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

enter image description here [!d1]

2
ответ дан Abhi 15 August 2018 в 22:44
поделиться

Facebook построил нечто, называемое Расширенное управление трафиком . Краткое описание с их страницы GitHub:

Расширенное управление трафиком (ATC) - это инструмент для моделирования условий сети. Он позволяет управлять подключением устройства к Интернету. Разработчики могут использовать ATC для тестирования своего приложения в разных условиях сети, легко подражая высокоскоростным, мобильным и даже сильно поврежденным сетям. Аспекты подключения, которые можно контролировать, включают в себя:

  • полоса пропускания
  • латентность
  • потеря пакетов
  • поврежденные пакеты
  • ]
  • заказы пакетов

Чтобы иметь возможность формировать сетевой трафик, ATC должен работать на устройстве, которое направляет трафик и видит реальный IP-адрес устройства, например например, ваш сетевой шлюз. Это также позволяет любым устройствам, проходящим через ATC, иметь возможность формировать свой трафик. Трафик может быть сформирован / неформован с использованием веб-интерфейса, позволяющего любым устройствам с веб-браузером использовать ATC без необходимости в клиентском приложении.

Вы можете найти его здесь, на GitHub: https://github.com/facebook/augmented-traffic-control

Они также опубликовали сообщение в блоге об этом: https://code.facebook.com/posts / 1561127100804165 / дополненный трафик управление-а-инструмент к-Simulate-сеть-условие /

6
ответ дан Anirudh 15 August 2018 в 22:44
поделиться

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

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

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

1
ответ дан Ankit 15 August 2018 в 22:44
поделиться

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

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

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

4
ответ дан Benchur Wong 15 August 2018 в 22:44
поделиться
  1. Откройте терминал inAndroid Studio и перейдите к ../../Android/sdk/tools.
  2. Запустить ./emulator -netdelay "delay_in_millis" -avd "emulator_device_name" Пример: ./emulator -netdelay 60000 -avd Nexus_5_API_21
  3. Теперь выполните сборку ваше приложение и установите его в эмулятор.
  4. Запустите свой сценарий в приложении.

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

1
ответ дан cgr 15 August 2018 в 22:44
поделиться

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

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

0
ответ дан Charlie Brown 15 August 2018 в 22:44
поделиться

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

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

  1. Выберите Инструменты - & gt; Android - & gt; AVD Manager
  2. Нажмите кнопку Edit AVD (значок карандаша)
  3. Доступ к настройкам сети возможен после нажав кнопку Показать дополнительные настройки

Вот скриншот о том, как это может выглядеть:

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

  1. Перейдите к Run - & gt; Изменить настройки
  2. Выбрать Android Application - & gt; [Ваше приложение]
  3. Выберите вкладку эмулятора
  4. Здесь вы можете изменить разные значения для Network Speed ​​ и Network Latency для имитации различных скоростей и латентностей и т. д.

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

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

Run Configurations Screen in Android Studio beta 0.8.6 [!d15]

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

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

54
ответ дан Community 15 August 2018 в 22:44
поделиться

Вы хотите проверить отсутствие сетевого подключения или просто медленное сетевое соединение? Если первый, вы можете перейти к Настройки & gt; Беспроводная связь & amp; сетей & gt; Режим полета и включите режим полета. Это позволит вам проверить недоступность сети на реальном устройстве.

1
ответ дан David Conrad 15 August 2018 в 22:44
поделиться
  • 1
    Спасибо, но я пытался проверить низкую сетевую связь. Например. для низкого сигнала EDGE или что-то в этом роде. – Maggie 23 September 2011 в 22:21
  • 2
    Ах. Слишком плохо, что вы не можете отключить 3G и вернуться в режим EDGE. По крайней мере, по моему телефону вы не можете. – David Conrad 24 September 2011 в 04:02

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

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

Лучший способ сделать это - использовать Genymotion .

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

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

Обновление:

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

2
ответ дан Iman Akbari 15 August 2018 в 22:44
поделиться

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

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

Для получения дополнительной информации и для понимания того, какие скорости вы должны проверить при проверке: http://opensignal.com/blog/2016/02/05/go-slow-how-why -в-тест-приложения-на-бедного-соединение /

7
ответ дан James_OSM 15 August 2018 в 22:44
поделиться
  • 1
    Использование «Совместное использование» панели предпочтений, вы можете поделиться большинством любых подключений с большинством других. Я установил его для обмена своим WiFi-соединением по Bluetooth. (Соединение через опции Bluetooth не появилось на моем телефоне Android, пока оно не было настроено.) – Doug Reeder 13 June 2017 в 03:31
  • 2
    Чтобы поделиться Wifi на Mac: support.apple.com/kb/PH25327 – Pang 13 September 2017 в 04:22
  • 3
    Чтобы установить средство настройки сетевого связывания: stackoverflow.com/q/9659382 – Pang 13 September 2017 в 04:22

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

4
ответ дан jpm 15 August 2018 в 22:44
поделиться

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

enter image description here [!d3]

90
ответ дан Kirill Kulakov 15 August 2018 в 22:44
поделиться
  • 1
    Это было решение, к которому мы тоже пришли. Жаль, что это самый разумный вариант. Следует отметить, что iPhone требует подключения 3G / сотовой связи для подключения к работе. Также следует учитывать, что необходимость загрузки / загрузки в утилите iPhone должна быть инвертирована в отношении привязанного устройства. – Kyle Ivey 10 December 2013 в 05:05
  • 2
    Brilliant! Глупо, что это лучший вариант, тем более что эмулятор может это сделать. – karl 9 August 2014 в 01:00
  • 3
    Эмулятор iPhone может привязать Wi-Fi? – Kirill Kulakov 9 August 2014 в 05:57
  • 4
    Благодарю. Был смущен, как настроить его. Вот как - если вы находитесь на сотовом плане, который разрешает личные горячие точки. Я использую iOS 7.12 1) перейдите к SETTINGS- & gt; Cellular- & gt; Personal Hotspot 2) переместите переключатель Personal Hotspot вправо, чтобы он был зеленым / включенным (можно изменить пароль, если вы предпочитаете) 3) вернуться, назад и прокрутить вниз для разработчика 4) прокрутите вниз до Network Link Conditioner и коснитесь его. слайд ENABLE вправо, чтобы он был зеленым / наконец, выберите профиль. Я выбрал «Очень плохая сеть». Это дало мне ping (2198ms) загрузить (0.05Mbps) upload (0.08Mbps) 5) Подключите Android к горячей точке! – Anthony De Souza 17 October 2014 в 12:59
  • 5
    Я не могу перестать смеяться, но это лучшее решение во всей партии, чтобы имитировать медленную сеть на реальном устройстве. благодаря – KD. 2 August 2016 в 03:17

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

1
ответ дан Lester 15 August 2018 в 22:44
поделиться

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

вы можете использовать функции open source с помощью facebook ATC http://facebook.github.io/augmented-traffic-control/ [ ! d0]

3
ответ дан Lucas Liu 15 August 2018 в 22:44
поделиться

Я использую прокси-сервер mitmproxy HTTPS. https://mitmproxy.org/

Mitmproxy - это приложение с открытым исходным кодом, которое позволяет перехватывать HTTP и HTTPS-соединения между любым клиентом HTTP (S). Он позволяет контролировать, фиксировать и изменять эти соединения в реальном времени. Запрос на изменение, ответ, заголовок, ... Кроме того, вы можете перехватывать разные запросы.

например. response_delay.py:

  из HTTP-импорта mitmproxy из отклика времени отклика временного импорта (поток: http.HTTPFlow) - & gt;  None: sleep (5.0)  

Затем выполнение этого комментария задерживает все ответы с сервера:

  mitmproxy --cert \ *. Asdf.at =.  /cert.pem --scripts response_delay.py  

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

cat private.key public.key> cert.pem

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

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

0
ответ дан Manuel Schmitzberger 15 August 2018 в 22:44
поделиться

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

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

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

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

1
ответ дан Michael. 15 August 2018 в 22:44
поделиться

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

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

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

2
ответ дан nurxyz 15 August 2018 в 22:44
поделиться

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

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

8
ответ дан pgarriga 15 August 2018 в 22:44
поделиться

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

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

enter image description here [!d0]

28
ответ дан Pkmmte 15 August 2018 в 22:44
поделиться
  • 1
    идеально ! назад к краю и загрузке со скоростью 9 кбайт / с. – JcV 16 July 2015 в 08:37
  • 2
    Отлично, это отлично подходит для моей нынешней потребности. В моей комнате загрузка на 200 КБ почти всегда терпит неудачу на 2G :) – Deleplace 9 July 2017 в 14:30
  • 3
    Этот парень - настоящий MVP. – edwoollard 9 February 2018 в 18:43

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

206
ответ дан Shams Shafiq 15 August 2018 в 22:44
поделиться
  • 1
    Сначала я подумал, что ты собираешься предложить начать микроволновую помощь. ха-ха – Waclock 9 March 2017 в 20:08
  • 2
    Если вы разрабатываете для iPhone, я рекомендую включить микроволновую систему независимо. ;) – A Boschman 23 May 2017 в 10:36
  • 3
    я могу стоять внутри лифта, чтобы проверить приложение, но я не могу сделать то же самое внутри микроволновой печи: D – Beeing Jk 18 January 2018 в 04:19
  • 4
    Мой iPhone не работает после того, как я включил микроволновую печь на 15 секунд. Любая помощь? – Risinek 13 April 2018 в 12:16
  • 5
    твоя идея сработала для меня одна микроволновая печь моего дома, но не офисная – abbood 24 July 2018 в 05:12

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

  • Загрузите бесплатную пробную версию Charles: http://www.charlesproxy.com/download /
  • Установите его
  • Нажмите Proxy -> Throttle Settings
  • Настройте скорость дроссельной затухания HTTP
  • Закройте это окно
  • Нажмите Proxy -> Throttling, чтобы включить дроссель
  • Откройте эмулятор Genymotion
  • Откройте настройки Wi-Fi
  • Длительное нажатие на включенное соединение Wi-Fi
  • Нажмите Modify Network
  • Нажмите Show Advanced Options
  • Установите Proxy на Manual
  • Установите для параметра Proxy hostname значение 10.0.3.2
  • Установите Port на 8888
  • Нажмите Save

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

30
ответ дан VicVu 15 August 2018 в 22:44
поделиться
  • 1
    откуда вы взяли имя хоста 10.0.3.2? это то, что Чарльз по умолчанию? – abbood 24 July 2018 в 05:21

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

0
ответ дан yhm 15 August 2018 в 22:44
поделиться
0
ответ дан Mert Kahraman 29 October 2018 в 05:30
поделиться
0
ответ дан rm -rf 29 October 2018 в 05:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: