Есть 2 способа, с помощью которых я могу выполнить обратный поиск серийного номера до имени AVD
Опция Telnet - Гадкий путь
Как указано в этом ответе SO ... вы можете отменить поиск имени AVD для каждого серийного номера, используя Telnet. Это слабовато, потому что все, что вы делаете, это находите экземпляр запущенного эмулятора с определенным именем AVD. Он не однозначно идентифицирует эмулятор, с которым вы хотите работать. Он также страдает от необходимости использовать telnet и анализировать номер порта для каждого эмулятора.
Сначала получите текущие серийные номера
adb devices
затем подключитесь к номеру порта каждого устройства
telnet localhost 5554
и введите команду
avd name
, который будет возвращать AVD-имя этого эмулятора.
Опция UUID - правильный путь
Первоначально я видел это в проекте под названием DCMTK . Сгенерируйте UUID uuidgen
и установите свойство на эмуляторе при запуске! В моем примере запускается эмулятор для выполнения некоторых проверок времени компиляции для библиотек, которым для запуска информации о типе требуется выполнить код на целевом объекте.
emulator -avd nexus19-arm -no-window -no-boot-anim -noaudio -prop emu.uuid=7a6f8701-43c2-4e16-988a-8b4992c0bf8d >/dev/null </dev/null 2>&1 &
Затем, когда вы хотите найти конкретный экземпляр эмулятора, вы просто прокручиваете все запущенные эмуляторы и ищите этот UUID.
adb -s emulator-5556 shell getprop emu.uuid
в цикле:
for SERIAL_NUMBER in `adb devices| grep emulator| cut -f1`; do
UUID=`adb -s ${SERIAL_NUMBER} shell getprop emu.uuid | tr -d '\r\n'`
echo ${SERIAL_NUMBER} ${UUID}
done
Отслеживание всего жизненного цикла эмулятора
- Запустить эмулятор со свойством UUID
- Затем запустите цикл, который проверяет, что каждое устройство подключено к сети и / или имеет соответствующий UUID
- После того, как вы получите матч-вызов,
adb -s ${SERIAL_NUMBER} wait-for-device
, чтобы вы знали, когда можно поговорить с эмулятором
- Если вы хотите, чтобы система была полностью онлайн, проверьте свойство
sys.boot_completed
- Когда вы закончите, просто убейте эмулятор с помощью
adb -s ${SERIAL_NUMBER} emu kill