Как перевести 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)
Но, возможно, это пригодится кому-то...
Старые вопросы, но я нашел решение:
- Откройте командную строку: CTRL+R >
cmd
Перейдите в папку инструментов Android
cd C:\Program Files\Android\android-sdk\tools
Запустите эмулятор с ложным 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.