Android Stop эмулятор из командной строки
Этот вопрос идентичен Как отключить эмулятор Android через командную строку.
Однако после попытки предлагаемого решения из первого ответа adb emu kill
не оказалось успешным для меня.
Я автоматизирую модульные тесты для приложения Android. Мой bash script работает на безголовой машине. Он создает устройство android с помощью android create avd
и выполняет emulator
с атрибутом -no-window
. Затем он компилирует тестовый проект, подключается к эмулятору с помощью adb
, устанавливает проект и выполняет мои тесты. Все это прекрасно работает.
Теперь мне нужно закончить процесс эмуляции, и точно так же, как ссылка, я могу сделать это только с помощью kill -9
.
В учебнике Google Управление AVD из командной строки упоминает, как остановить эмуляторы в среде GUI.
Любая помощь приветствуется.
Ответы
Ответ 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