7 марта 2018 г.

Android эмулятор не запускается с ошибкой PANIC: Missing emulator engine program for 'x86' CPU

Утилита имеет множество опций,
включая аргументы quemu
    Если вы привыкли запускать Android эмулятор из командной строки (а если не привыкли — рекомендую), то могли заметить, что в последних версиях она перестала запускать самые новые эмуляторы. Скажем, она не сможет запустить эмулятор Android 8.1 на Pixel 2.
    В моём случае возникает вот такая ошибка:
umnik@myachin: > emul @Pixel_2_API_27
PANIC: Missing emulator engine program for 'x86' CPU.
    Пусть вас не смущает emul. Это просто алиас на  $ANDROID_HOME/tools/emulator. В общем, если вы столкнулись с похожей проблемой, то вот решение.


    Дело в том, что привычный /tools/emulator объявлен устаревшим. Вместо него теперь используется /emulator/emulator. Вот так просто:
umnik@myachin:~> alias | grep emul
alias emul='$ANDROID_HOME/tools/emulator'
umnik@myachin:~> emul -list-avds
Pixel_2_API_27
umnik@myachin:~> emul @Pixel_2_API_27
PANIC: Missing emulator engine program for 'x86' CPU.
umnik@myachin:~> $ANDROID_HOME/emulator/emulator @Pixel_2_API_27
<Здесь запустился эмулятор>
    То есть в моём случае я в ~/.bashrc просто сделаю замену /tools/ на /emulator/

    Ну и бонусом подскажу полезный параметр: -no-snapshot:
emulator -no-snapshot @Pixel_2_API_27
     Вообще их 2: -no-snapshot и -no-snapshot-load. Оба они выполняют холодную загрузку эмулятора, а не восстанавливают его состояния из снапшота. Только первый ещё и НЕ сохраняет текущее состояние на выходе, а второй — сохранит:
umnik@myachin:~> $ANDROID_HOME/emulator/emulator -no-snapshot @Pixel_2_API_27
=========cut=========
emulator: INFO: boot completed
^C

emulator: WARNING: Discarding the changed state (command-line flag).
umnik@myachin:~> $ANDROID_HOME/emulator/emulator -no-snapshot-load @Pixel_2_API_27
=========cut=========
emulator: INFO: boot completed^C
emulator: Saving state on exit with session uptime 18550 ms

6 комментариев: