Амбициозная попытка запустить приложение Android на нескольких эмуляторах - не может остановить эмуляторы

1

Итак, у меня есть идея проверить мое приложение Android на моем ноутбуке, используя один avd, но с несколькими файлами config.ini, чтобы изменить состав самого avd.

Я создал несколько avds и скопировал файлы config.ini в отдельную папку.

Я также написал bash script to

  • через мои файлы config.ini
  • скопируйте их по одному в папку avd (переписывая последнюю)
  • попытка остановить любой текущий эмулятор запуска (это моя большая проблема)
  • запустить эмулятор
  • запустите мои тесты (сделайте скриншоты)
  • adb вытащите скриншоты в папку
  • начать со следующего файла ini

Итак, у меня большая часть этой работы, но я не могу на всю жизнь меня останавливать/запускать/перезапускать avd.

Я пробовал несколько вещей из различных вопросов SO, включая, но не ограничиваясь

  • adb emu kill
  • telnet kill
  • останов оболочки adb
  • pgrep emulator -f (чтобы найти pid), тогда kill -9, чтобы остановить его

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

Кажется, что это должно быть так просто и отличным способом запускать мое приложение на нескольких эмуляторах устройств, без необходимости запускать их все сразу, то, что мой ноутбук никогда не сможет обработать (возможно, 3 один раз)

  • 1
    если вы делаете any_shell_command & и затем echo $! вы получите идентификатор процесса задания, которое в последний раз было помещено в фоновый режим, независимо от того, выполнено ли оно как асинхронная команда или с помощью встроенной команды bg, поэтому, если вы запустите свой эмулятор с помощью & то сможете сохранить его pid где-нибудь, а затем убить его
  • 0
    @pskink - всякий раз, когда я убиваю, он часто приводит меня к файлам .lock в папке avd, что означает, что я не могу перезапустить этот эмулятор снова
Показать ещё 5 комментариев
Теги:
android-emulator
avd
android-avd

1 ответ

1
Лучший ответ

Сделайте это в оболочке (linux):

adb shell su -c 'svc power shutdown' && echo "target has shut down"

Он остановит цель (правильно отображает окно "выключение системы" внутри эмуляции), а затем закрывает окно эмулятора. Отсутствует устаревший файл блокировки.

Конечно, после запуска вашей цели вам придется подождать до тех пор, пока цель не загрузится правильно и не примет такие команды оболочки adb.

Просто протестировал его на эмулированном целевом андроиде API 19 (kitkat) - работал красиво.

Надеюсь, он решает вашу идею удаленного сценария настройки нескольких целей.

  • 0
    Спасибо за это, у меня не было возможности проверить, но скоро попробую
  • 0
    Просто попробовал это. Это не сработало точно, по какой-то причине я не мог заставить ее работать. Тем не менее, если я запускаю adb root && adb shell 'svc power shutdown' && echo "target has shut down" то это работает отлично. Спасибо

Ещё вопросы

Сообщество Overcoder
Наверх
Меню