Предыстория
Я собрал года 4 назад домашний комп, который подходил всем моим запросам. На процессоре решил сэкономить — взял amd. К компу вопросов нет.
Потом занялся разработкой под Android и тут меня ждал сюрприз! Эмулятор запускался только на процессоре intel. Его можно было запустить без аппаратной виртуализации конечно, используя вот этот совет www.youtube.com/watch?v=QTbjdBPKnnw&t=127s, но кто пользовался знает, что эмулятор может запускаться очень долго. У меня с 12ГБ доходило до 10 мин. Это может конечно из-за встроенной видеокарты.
Основное рабочее место у меня было в офисе, поэтому особо переживал и тестировал дома на реальных устройствах. Но пару месяцев назад стал нужен именно эмулятор. Первой мыслью было конечно купить intel-овский процессор. Но нужно было покупать ещё материнскую плату и видеокарту. Скорее всего я бы так и поступил, если бы не наткнулся на обновлённые требования к системе. В требованиях написано, что эмулятор всё таки можно запустить на Windows 10 (с обновлениями после апреля 2018) с помощью технологии WHPX.
Теперь основная часть истории, как это сделать. Всё оказалось не так тривиально. Заранее прошу прощения за упущения, потому что не могу назвать себя знатоком ни в “железе”, ни в Windows.
Инструкция
После всех обновлений эмулятор естественно не запустился. AndroidStudio пыталась запустить эмулятор с помощью HAXM и выбрасывала ошибку “Emulator: emulator: ERROR: x86 emulation currently requires hardware acceleration!”.
Далее приведу инструкцию с ссылками упустив кучу подробностей и моих “танцев с бубном”.
Скачиваем утилиты и проверяем поддерживает ли процессор hyper-v.
Должен поддерживать для работы с аппаратной виртуализацией.
2. Обновляем Windows 10 до версии 1803 (апрель 2018):
3. Удаляем HAXM:
4. Включаем в bios режим виртуализации. Он там может называеться IOMMU, а не VT.
5. Качаем обновления для bios с официального сайта. Для моего asus, например, они были здесь.
6. Обновляем bios по инструкции типа этой.
Версия Bios должна стать что-то около 3001:
7. Заходим на сайт microsoft и изучаем инструкцию для включения компонента.
8. Нужно проверить требования Hyper-V. Для этого в командной строке набираем systeminfo. Проверяем, чтобы отображались эти значения:
У меня же вместо это было сообщение:
На официальном сайте написано, что пока не будет стоять Yes-Yes-Yes-Yes система WHPX не будет работать. У меня же эмулятор запускается, при включенной низкоуровневой оболочке.
9. Далее в руководстве предлагается включить компонент hyper-v (он по умолчанию отключен):
В русском переводе наименования несколько отличаются:
Кстати, после отключения компонента “Платформа низкоуровневой оболочки Windows”, “Требования hyper-v” становятся Yes-Yes-Yes-Yes. Не понял этот момент. Если кто разбирается, напишите в комментариях.
10. Определяем, нужно ли нам всё это? Или легче было купить intel)
После этих настроек всё должно заработать:
Хочу отметить, используя технологию WHPX и процессор amd, запуск эмулятора занимает примерно столько же времени, сколько на процессоре intel. Учитывая, что остальное «железо» сравнимо по своим параметрам.
Комментарии (14)
OneeL
12.11.2018 16:50С какой-то версии в эмуляторе появились snapshots developer.android.com/studio/run/emulator#snapshots. С ними можно дополнительно ускорить запуск эмулятора, правда одновременно с этим замедляется его остановка (создается тот самый snapshot).
Интересно, насколько это ускорило бы запуск, без использования описанного в статье подхода.
Solexid
12.11.2018 23:04>Может называться IOMMU
У амд то что вы ищете называется SVM и оно у вас уже включено.FlamyXD
13.11.2018 12:49Не обязательно, на моем AMD Ryzen 2600 + MSI B450M Gaming Plus виртуализация по умолчанию отключена.
Я думаю это связано с тем, что некая софтина Ryzen Master не запускается при включенной SVM.
lexxcorp
13.11.2018 00:23Вот блин, пользовался эмулятором с амд процессором и даже не думал что может быстрее работать на интеле
lexxcorp
13.11.2018 00:25Вот блин, пользовался эмулятором с амд процессором, и даже не думал что на интеле будет быстрее работать.
HSerg
13.11.2018 00:29Лучше раскрыть аббревиатуру WHPX, а то Hyper-V только в середине статьи упоминается. И написать нулевым пунктом про необходимость Windows 10 Pro (для HAXM же хватает Windows 10 Home).
darksshvein
13.11.2018 11:38а не проще ли было линукс использовать, вместо того чтобы с шиндошс пердолиться?
petrovichtim
Спасибо за статью, узнать бы теперь как под линуксом всё это заставить работать?
AEP
Идем на www.android-x86.org и качаем iso-образ. Потом создаем виртуальную машину с помощью KVM. Даем виртуальной машине виртуальный IDE-диск. Устанавливаем на него Android. Готово.
Вот то же самое, но в виде команд для тех, кто не использует libvirt:
mkdir android
cd android
dd if=/dev/null of=hda.dsk bs=1G seek=4
qemu-system-x86_64 -m 2048 -enable-kvm -smp 4 -hda hda.dsk -cdrom /tmp/android-x86_64-8.1-rc2.iso -vga std
При желании, можно выставить правильное разрешение экрана и добавить интеграцию указателя мыши (полезно при наличии сенсорного экрана). Для этого запускаем терминал, делаем там su, а затем:
mkdir -p /data/system/devices/idc
echo 'touch.deviceType = touchScreen' > \
/data/system/devices/idc/Vendor_0627_Product_0001.idc
chown -R system:system /data/system/devices
mkdir /mnt/sda1
mount /dev/block/sda1 /mnt/sda1
sed -i '/SRC/s/$/ video=1920x1080/' /mnt/sda1/grub/menu.lst
umount /mnt/sda1
reboot
После этого KVM можно запускать так:
qemu-system-x86_64 -show-cursor -m 2048 -enable-kvm -smp 4 -hda hda.dsk -display sdl -vga std -device qemu-xhci -device usb-tablet
Или, если QEMU собран с поддержкой virglrenderer (т.е. не в Ubuntu), можно еще включить аппаратно ускоренный OpenGL:
qemu-system-x86_64 -show-cursor -m 2048 -enable-kvm -smp 4 -hda hda.dsk -display sdl,gl=on -vga virtio -device qemu-xhci -device usb-tablet
HSerg
В android-sdk всё необходимое уже есть.