Обнаруживать, когда эмулятор Android полностью загружен

Я хочу создать сценарий, где я запускаю эмулятор, и после полной загрузки системы я хочу установить .apk.

Как я могу узнать, когда эмулятор полностью загружен, поэтому я могу запустить команду установки? Здесь http://developer.android.com/guide/developing/tools/adb.html сказано, что adb wait-for-device install <app>.apk .

Итак, как я могу это достичь? Является ли это возможным? Является ли мой единственный способ спать в течение нескольких минут, пока я не буду уверен, что эмулятор запущен?

    Adb shell getprop init.svc.bootanim

    Это покажет вам, запущена ли загрузочная анимация. Это то, что мы используем на нашем сервере для сборки без проблем, чтобы проверить, работает ли эмулятор. Sys.boot_completed from dac2009 – это то, что заставило меня найти этот флаг. Вместо этого мы используем init.svc.bootanim, потому что boot_completed имеет тенденцию запускать слишком рано.

    Я не уверен, что это работает на всех устройствах, но работает на те, которые я тестировал.

    Если вы войдете в оболочку, вы можете ввести getprop и получить список свойств телефона. Должно быть одно имя «sys.boot_completed».

    Если вы наберете «getprop sys.boot_completed», он ответит «1», если система загрузится, и пустая строка, если система не загружена.

     while [ "`adb shell getprop sys.boot_completed | tr -d '\r' `" != "1" ] ; do sleep 1; done 

    Этот код получает информацию из sys.boot_completed, если системная загрузка завершена, удаляет новую строку и сравнивает результирующее значение с 1. Если его неравный 1 / не загружается полностью / он будет просто спать 1 секунду и повторит попытку.

    Просто поставьте свою adb install … после этой строки кода.

    Вы можете установить широковещательный приемник, который может уведомить, что загрузка устройства завершена

     android:name="android.intent.action.BOOT_COMPLETED" 

    Вы можете разобрать вывод stdout эмулятора, если вы запустите его с помощью «-logcat VERBOSE» и дождитесь сообщения, которое указывает, что эмулятор загружен.

    Я не видел хорошего сообщения прямо сейчас на выходе, но вы можете написать приложение, которое прослушивает «android.intend.action.BOOT_COMPLETED» и записывает что-то в журнал.

    Для получения дополнительной информации см. http://developer.android.com/guide/developing/tools/emulator.html .