Как перевести AVD (эмулятор) в автономный режим?

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

-> Как перевести виртуальное устройство Android в автономный режим (где невозможно подключение к Интернету)?

Я пробовал следующее:

  • Активация режима полета через настройки AVD: на удивление, это НЕ работает (просмотр интернета все еще возможен в режиме полета!)

  • Отключение сетевого подключения на моем ПК: это, очевидно, работает, но не удовлетворительно, так как мне нужен Интернет, когда я тестирую свое приложение

10 ответов

Решение

Я вижу все те же проблемы. DDMS не полностью убивает это. Как и F8. И при этом не включается режим полета внутри эмулятора. Возможно, нам всем стоит отметить эту проблему, если кто-то зарегистрировался в 2009 году.

WI-FI:

$ adb shell svc wifi enable
$ adb shell svc wifi disable

МОБИЛЬНЫЕ ДАННЫЕ:

$ adb shell svc data enable
$ adb shell svc data disable

Я нашел рабочее решение. Протестировано на Android 6.0 эмуляторы 7.0, но должно работать на других.

Сеть отключена:

adb shell ifconfig eth0 down

Сеть вверх:

adb shell ifconfig eth0 up

Если вы получили сообщение об ошибке "Отказано в доступе", перезапустите демон adb с правами root:

adb root

и попробуй еще раз.

Вам просто нужно нажать F8 в окне эмулятора, чтобы отключить сотовую сеть в соответствии с: http://developer.android.com/guide/developing/tools/emulator.html. Но я проверяю, и это тоже не работает! Есть только сообщение, что нет подключения к интернету, но это на самом деле работает...

Я обнаружил в своем представлении "Управление эмулятором", когда я настроил "Голос и данные" на "незарегистрированные", а не "запрещенные". Теперь я наконец-то отключил AVD для сети, пока могу опубликовать этот ответ.

Вместо использования режима полета в эмуляторе Android (который работает не очень хорошо) отключите сетевое подключение к вашей системе во время тестирования. То есть коммутатор Ethernet-соединения или Wi-Fi . Работал хорошо для меня.

Все, что я делаю, это захожу в меню "Окно", выбираю "открыть перспективу -> другое", чтобы открыть перспективу DDMS. В перспективе DDMS у вас есть представление "Управление эмулятором", где вы можете настроить задержку, роуминг, вы можете назначить ему различные состояния телефона и данных. Таким образом, следуя этой процедуре, чтобы получить представление эмулятора, перейдите в раскрывающийся список "Данные" и выберите опцию "Отклонено".

Один комментарий к проблеме, упомянутой Джеймсом Кохом, говорит, что есть обходной путь:

Комментарий 15 от iscy%inv...@gtempaccount.com, 8 июля 2011 г.
Наконец нашел способ обойти эту проблему:
telnet localhost 5554    // Подключается к эмулятору
qemu monitor             // Вход в функциональные возможности QEmu
Информация о сети // Список сетевого адаптера "user.0" обычно имя
set_link user.0 down     // Выключить сеть
set_link user.0 up       // Повторное включение сети

НО:

Комментарий 16 от leonhard...@gmail.com, 6 сентября 2011 г.
Этот обходной путь не работает для меня на MacOS 10.7.1 и SDK rev 12 (с платформой 2.2, 2.1 и 2.3.3)
... ...
QEMU монитор
KO: внутренняя ошибка: не удалось отсоединиться от консоли!

-> То же самое для меня в Windows Vista, SDK rev 19 и платформе 10 (2.3.3)

Но, возможно, это пригодится кому-то...

Старые вопросы, но я нашел решение:

  1. Откройте командную строку: CTRL+R > cmd
  2. Перейдите в папку инструментов Android

    cd C:\Program Files\Android\android-sdk\tools

  3. Запустите эмулятор с ложным DNS-сервером. + Изменить 2.3.3 на имя вашего AVD. @ Заставляет это начать:

    emulator.exe @2.3.3 -dns-server 127.0.0.1

Посмотрите в руководстве дополнительные параметры командной строки.

Я обнаружил, что ответ @Marco C. сработал, но я также обнаружил, что мои настройки AVD позволили сделать это очень легко.

На боковой панели полностью щелкните значок тройной точки внизу:

Затем настройте параметры сотовой связи "Сила сигнала" и "Состояние данных" на "нет" и "отказано" соответственно, как показано на этом рисунке:

Наконец, как насчет этого подхода.

android-sdks/tools/emulator -avd [AVD name goes here] -qemu -net nic,vlan=0 -net user,vlan=1

На самом деле, это хитрость, потому что следующее вылетает мой эмулятор:

android-sdks/tools/emulator -avd [AVD name goes here] -qemu -net none

Протестировано с эмулятором Android V21.0 на Debian.

Другие вопросы по тегам