Подтвердить что ты не робот

Android Stop эмулятор из командной строки

Этот вопрос идентичен Как отключить эмулятор Android через командную строку.

Однако после попытки предлагаемого решения из первого ответа adb emu kill не оказалось успешным для меня.

Я автоматизирую модульные тесты для приложения Android. Мой bash script работает на безголовой машине. Он создает устройство android с помощью android create avd и выполняет emulator с атрибутом -no-window. Затем он компилирует тестовый проект, подключается к эмулятору с помощью adb, устанавливает проект и выполняет мои тесты. Все это прекрасно работает.

Теперь мне нужно закончить процесс эмуляции, и точно так же, как ссылка, я могу сделать это только с помощью kill -9.

В учебнике Google Управление AVD из командной строки упоминает, как остановить эмуляторы в среде GUI.

Любая помощь приветствуется.

4b9b3361

Ответ 1

Может быть, попробуйте использовать adb kill-server он вам adb kill-server?

или же

adb -s emulator-5554 emu kill, где emulator-5554 - это имя эмулятора.

Для пользователей Ubuntu я нашел хорошую команду, чтобы остановить все запущенные эмуляторы (спасибо @uwe)

adb devices | grep emulator | cut -f1 | while read line; do adb -s $line emu kill; done

Ответ 2

Чтобы остановить все запущенные эмуляторы, мы используем следующую команду:

adb devices | grep emulator | cut -f1 | while read line; do adb -s $line emu kill; done

Ответ 3

Другой ответ не работал у меня (в Windows 7). Но это сработало:

telnet localhost 5554
kill

Ответ 4

Почему бы просто не сделать

adb reboot bootloader

Ответ 5

Иногда команда

adb -s emulator-5554 emu kill

не работал на моих CI серверах или рабочих столах по неизвестной причине. Я думаю, что на Windows это нормально, чтобы убить процесс QEMU, так же, как

Taskkill /IM qemu-system-x86_64.exe /F /T

Ответ 6

adb kill-server убьет всех эмуляторов и перезапустит сервер.

Ответ 7

Ни один из решений не работал у меня. Мне пришлось пройти через telnet-путь, включая проверку подлинности:

AUTH=$(cat "$HOME/.emulator_console_auth_token")

expect << EOF
spawn telnet localhost 5554
expect "OK"
send   "auth $AUTH\r"
expect "OK"
send   "kill\r"
expect "OK"
send   "exit\r"
EOF

Полный script можно получить со свободной лицензией https://github.com/kullo/android-emulator-tools


Обновление: похоже, что это все еще не обеспечивает надежного закрытия портов консоли и ADB (например, 5554 5555)

Ответ 8

Я использую этот однострочный вкладыш, разбитый на несколько строк для удобства чтения:

adb devices |
 perl -nle 'print $1 if /emulator-(\d+).device$/' |
 xargs -t -l1 -i bash -c "
   ( echo auth $(cat $HOME/.emulator_console_auth_token) ;
     echo kill ;
     yes ) |
   telnet localhost {}"

Ответ 9

Список подключенных устройств эмулятор-5584 хост эмулятор-5580 хост эмулятор-5576 эмулятор-5572 хост эмулятор-5568 эмулятор-5564 хост хост эмулятора-5560

C:\Users\Administrator > adb -s emulator-5584 emu kill Ошибка: не удалось подключиться к TCP-порту 5584: невозможно подключиться к 127.0.0.1:5584: соединение не может быть выполнено, потому что целевая машина активно отказалась от него. (10061)

ПРИМЕЧАНИЕ: gui эмулятора не работает, но все же он показывает

РЕШЕНИЕ:

adb kill-server

запустить эмулятор, используя:

emulator.exe -netdelay none -netspeed full -avd Nexus_5X_API_19

Я надеюсь, что это поможет вам!

Ответ 10

Чтобы автоматизировать это, вы можете использовать любое script или приложение, которое может отправить строку в сокет. Мне лично нравится nc (netcat) под cygwin. Как я уже говорил, я использую его следующим образом:

$ echo kill | nc -w 2 localhost 5554

(это означает, что вы отправляете строку "kill" на порт 5554 на localhost и завершаете netcat через 2 секунды.)

Ответ 11

Я могу закрыть это с:

adb shell reboot -p