![](https://habrastorage.org/webt/ut/mp/jm/utmpjmemwv778zvgfeyfo7t0leu.png)
Вопрос, о котором хотелось бы сегодня поговорить, мне кажется, я слышу ежедневно, по несколько раз на дню. Точно не помню, но, мне кажется, что этот вопрос был первым, с которым я столкнулся на данной должности. Звучит он обычно так: «Как мне установить эмулятор Android на ваш сервер?». Серьёзно, когда я только начинал работать, я даже представить не мог, насколько часто я буду отвечать на данный вопрос.
Другие статьи серии «Будни техпода»
Не сомневаюсь, что многие читатели нашего блога знают, что такое «эмулятор» и представляют, как он работает, но для тех, кто сталкивается с этим понятием впервые, постараюсь коротко объяснить. Эмулятор — это программа, которая копирует поведение и функции какой-то другой системы, отличной от той, на которой запускается данный эмулятор, с целью запуска на нём приложений, которые не предназначены для работы на системе, которой вы изначально пользуетесь. Например, у вас на телефоне используется Android, но в вас проснулось чувство ностальгии и вам захотелось запустить игры, в которые вы когда-то давно играли на сеге или денди. Или, например, вам хочется запустить программу, которая есть только на Android, но при этом у вас телефон с IOS, но есть ПК с Windows. Тут вам и помогут эмуляторы.
Мы будем говорить именно про эмуляцию Android на устройстве под управлением ОС Windows (Windows Server) и с виртуализацией Hyper-V. На сегодняшний день существует множество различных готовых решений (Bluestack, Nox, Emu и др.), но, к сожалению, большинство из них не поддерживают работу с Hyper-V, а те, что запускаются — не работают достаточно стабильно и сильно перегружены лишним функционалом, чтобы их можно было полноценно использовать на средних конфигурациях VDS серверов. Поэтому в качестве решения данного вопроса, мы самостоятельно развернём чистый Android на виртуальной машине Hyper-V внутри VDS сервера.
▍ Создание сервера
Сначала нам требуется сам VDS сервер с включённой на нём вложенной виртуализацией. Если вы заказываете сервер у нас, то включить её вы можете через нашу техническую поддержку, написав обращение через нашу форму обратной связи в разделе «Поддержка».
![](https://habrastorage.org/webt/-h/9e/wh/-h9ewhqnn5vvcn3lr20_oubayvy.png)
В качестве операционной системы на сервере мы будем использовать Windows Server 2016: Конфигурация:
- ОС — Windows Server 2016
- CPU — Intel Xeon, 4x2.2ГГц
- RAM — 4Гб
- Disk — 20 Гб, HDD
▍ Настройка ролей на сервере для установки Android
Приступим к настройке. Нам необходимо добавить несколько дополнительных ролей (Hyper-V и Удалённый доступ). Hyper-V для возможности развернуть виртуальную машину на сервере, а «Удалённый доступ» для того, чтобы была возможность развернуть сеть, благодаря которой наш Android будет получать доступ в интернет. Открываем «Диспетчер серверов» — «Управление» — «Добавить роли и компоненты».
![](https://habrastorage.org/getpro/habr/post_images/8f4/d1f/11d/8f4d1f11d13704de7919cf64b73c66e0.png)
По умолчанию — у нас открывается окно на этапе «Перед началом работы». Жмём «Далее» и переходим к этапу «Тип установки». На данном этапе выбираем опцию «Установка ролей или компонентов» и переходим к следующему этапу.
![](https://habrastorage.org/getpro/habr/post_images/b12/731/99b/b1273199b09c219353112f0552032340.png)
На этапе «Выбор сервера» выбираем пункт «Выберите сервер из пула серверов» и переходим далее.
![](https://habrastorage.org/getpro/habr/post_images/69a/9b5/cf3/69a9b5cf3b7868beb0e2fff198923ac0.png)
На этапе «Роли сервера» нам необходимо добавить выбрать две роли: «Hyper-V» и «Удалённый доступ».
![](https://habrastorage.org/getpro/habr/post_images/9d4/783/c21/9d4783c214d887eaa1b2150a61690c12.png)
![](https://habrastorage.org/getpro/habr/post_images/319/041/d92/319041d926700d5246c35201118756b5.png)
Далее переходим к этапу — «Службы ролей». На промежуточных этапах оставляем настройки без изменений и нажимаем просто «Далее». На этапе «Службы ролей» нас интересует служба «Маршрутизация». Включаем данную роль и идём далее.
![](https://habrastorage.org/getpro/habr/post_images/b86/4b7/5c7/b864b75c75d2ec9b901a751da1c431b0.png)
До этапа «Подтверждение» оставляем все настройки без изменения и жмём кнопку
«Установить».
![](https://habrastorage.org/getpro/habr/post_images/476/572/737/47657273787d2e54c57a68fcd7fa7176.png)
Дожидаемся окончания установки компонентов и обязательно перезагружаем сервер.
▍ Создаём дополнительный сетевой адаптер и скачиваем образ Android
Теперь нам необходимо подготовить сетевой адаптер «NAT» для подключения его к виртуальной машине. Открываем «PowerShell» и поочерёдно выполняем следующие команды:
New-VMSwitch -name LocalSwitch -SwitchType Internal
New-NetNat -Name LocalNat -InternalIPInterfaceAddressPrefix «192.168.0.0/24»
Get-NetAdapter «vEthernet (LocalSwitch)» | New-NetIPAddress -IPAddress 192.168.0.254 -AddressFamily IPv4 -PrefixLength 24
Готово. Адаптер создан, и при создании виртуальной машины, у нас будет возможность выбрать его — в качестве основного сетевого источника. Дальше скачиваем сам образ Android, который мы будем устанавливать на сервер. В нашем случае — мы выбрали версию Android x86 64-bit (9.0-r2-k49). Скачать его можно по ссылке.Вывод команд:
▍ Создание виртуальной машины для установки Android
Предварительную подготовку завершили. Теперь мы можем приступить к настройке самой виртуальной машины для Android. Сначала нам нужно открыть «Диспетчер Hyper-V», через который мы будем производить все требуемые манипуляции по настройке, а в дальнейшем и управлять своей виртуальной машиной. Нажимаем комбинацию клавиш «Win + R» на клавиатуре, и в открывшемся окне «Выполнить» вводим
virtmgmt.msc
.Перед нами открывается окно «Диспетчера Hyper-V». В левом столбце выбираем нашу виртуальную машину, и в окне «Действия» переходим в меню «Создать» - «Виртуальная машина».
![](https://habrastorage.org/getpro/habr/post_images/09b/6a1/c97/09b6a1c9709b3dabdbc5f91f49eecbc8.png)
В открывшемся окне переходим на этап «Укажите имя и местонахождение». Здесь нам надо задать имя для нашей виртуальной машины. Я решил указать просто «Android», но вы можете выбрать любое другое имя, оно ни на что влиять не будет.
![](https://habrastorage.org/getpro/habr/post_images/c6f/423/0e9/c6f4230e9da8c185a17318da858b8019.png)
Далее указываем поколение виртуальной машины. Под нашу версию ОС подойдёт «Поколение 1».
![](https://habrastorage.org/getpro/habr/post_images/bee/e54/144/beee541440ade49074a74cca97f4624b.png)
На следующем этапе мы указываем объём оперативной памяти, которая будет выделяться сервером под виртуальную машину. Данное значение индивидуально, и в первую очередь зависит от конфигурации вашего сервера. В нашем случае — мы используем сервер с объёмом оперативной памяти в 4 ГБ и поэтому без каких-либо проблем можем выделить 2 ГБ под виртуальную машину.
![](https://habrastorage.org/getpro/habr/post_images/a6d/9a7/c5c/a6d9a7c5cc2061b774860f7f320040d0.png)
Далее, выбираем сетевой адаптер, который будет использоваться для доступа в интернет с виртуальной машины. Здесь нам необходимо выбрать адаптер «LocalSwitch», который мы недавно создали через PowerShell.
![](https://habrastorage.org/getpro/habr/post_images/c3e/e75/65b/c3ee7565b3b14247b94beedfaeb383e0.png)
Дальше указываем объём виртуального жёсткого диска, который будет использоваться на виртуальной машине, а также его расположение на нашем сервере. Объём диска указывается также индивидуально, в зависимости от объёма жёсткого диска вашего сервера. Мы указали 15 ГБ.
![](https://habrastorage.org/getpro/habr/post_images/bb8/a0e/cb2/bb8a0ecb286eac37b1cb2faf36bbbce4.png)
Потом выбираем образ, из которого будет произведена установка Android. Выбираем пункт «Установить операционную систему с загрузочного компакт — или DVD-диска, жмём «Обзор» и находим скачанный нами образ Android.
![](https://habrastorage.org/getpro/habr/post_images/a4a/ab4/4cd/a4aab44cd95ca84097762b58c0ef9863.png)
Переходим к последнему шагу создания виртуальной машины. На данном этапе проверяем параметры машины, выбранные нами на предыдущих шагах, и жмём «Готово».
![](https://habrastorage.org/getpro/habr/post_images/8c9/d6f/683/8c9d6f6838c33f969662420e923c0cd5.png)
▍ Установка Android на виртуальную машину
Виртуальная машина создана. Теперь нам надо установить на неё и настроить саму операционную систему Android. Выбираем созданную нами виртуальную машину с помощью «ПКМ» и в открывшемся окне жмём «Подключить».
![](https://habrastorage.org/getpro/habr/post_images/141/872/5e5/1418725e58cd244be89ef7a0273c5e72.png)
У нас открывается окно с нашей виртуальной машиной. В левом верхнем углу жмём кнопку, отвечающую за включение.
![](https://habrastorage.org/getpro/habr/post_images/bc8/4ae/71d/bc84ae71d3e48fb5200cf1601eb7f934.png)
Дальше выбираем, запустить образ с Android сразу или произвести его установку на виртуальную машину. Выбираем 3-й пункт «Installation — Install Android-x86 to harddisk» и переходим к установке.
![](https://habrastorage.org/getpro/habr/post_images/0f1/bbb/f34/0f1bbbf349aee6087d5c88e79c3de90d.png)
Теперь создаём раздел, на который будет произведена установка. Выбираем пункт «Create/Modify partitions» и жмём «OK».
![](https://habrastorage.org/getpro/habr/post_images/e6e/abe/c16/e6eabec1666e8575ecb2c212ed7c71b9.png)
На этапе с предложением использовать таблицу разделов GPT выбираем «NO». Её мы настроем позже, в момент установки самого образа.
![](https://habrastorage.org/getpro/habr/post_images/7c2/640/f4e/7c2640f4edc33e5fafa32b87d837b10d.png)
Приступаем к созданию нового раздела. В нижнем меню выбираем пункт «New».
![](https://habrastorage.org/getpro/habr/post_images/3cc/29c/348/3cc29c348d9f24ec6a0ef3e74a2c4540.png)
Далее выбираем пункт «Primary».
![](https://habrastorage.org/getpro/habr/post_images/217/a35/c1c/217a35c1cbd4c01e83492aa448b00f0e.png)
Указываем объём нового раздела (по умолчанию указан максимально доступный объём, поэтому это поле можно оставить без изменений). Жмём «Enter».
![](https://habrastorage.org/getpro/habr/post_images/ea2/2d0/b2a/ea22d0b2aca29a390ec449df0f265a16.png)
Далее поочерёдно выбираем пункт «Bootable», а затем пункт «Write».
![](https://habrastorage.org/getpro/habr/post_images/0bf/8cb/5fc/0bf8cb5fc68485ada2c759a89553babe.png)
На вопрос: уверены ли мы, что хотим записать таблицу разделов на созданный диск? — Вводим «yes» и жмём «Enter».
![](https://habrastorage.org/getpro/habr/post_images/c30/8a0/918/c308a09182252a83558eec70fe16026c.png)
Раздел диска для установки ОС создан. Выбираем пункт «Quit» и возвращаемся к этапу с выбором раздела.
![](https://habrastorage.org/getpro/habr/post_images/6a3/739/db2/6a3739db24697db4651f18edc69101e8.png)
Как мы можем видеть, у нас успешно создался раздел «sda1», на который мы и будем устанавливать систему Android. Выбираем его и жмём «OK».
![](https://habrastorage.org/getpro/habr/post_images/9af/58a/887/9af58a88700a4a33c8b3ab415b48f6e6.png)
Потом надо отформатировать созданный раздел и изменить тип файловой системы. Выбираем пункт «ext4» и жмём «OK».
![](https://habrastorage.org/getpro/habr/post_images/6a0/7a2/96d/6a07a296d22a3c539bae3a6689139840.png)
Начинается процесс установки операционной системы на виртуальную машину. Сам процесс установки может занять некоторое время, а процент загрузки может оставаться на одном значении (в нашем случае, это заняло около 15 минут). На протяжении всей установки будут появляться окна с подтверждениями (в том числе с использованием GPT, от которого мы ранее отказались). Везде выбираем «YES». По окончании установки выбираем пункт «Reboot» и перезагружаем виртуальную машину.
▍ Запускаем Android
Основная работа по настройке виртуальной машины проделана. Теперь можем загрузить систему и начать настраивать машину изнутри. Подключаемся к виртуальной машине и в открывшемся окне переходим в раздел «Advanced options».
![](https://habrastorage.org/getpro/habr/post_images/137/27e/17f/13727e17f2dd8491e23069d34dd75522.png)
В данном разделе выбираем пункт «Boot from local drive».
![](https://habrastorage.org/getpro/habr/post_images/5b7/b1b/b71/5b7b1bb71d59d3da5af974d2bd732f65.png)
Далее выбираем способ запуска системы. Нам требуется выбрать пункт «Android-x86 9.0-r2» (название может незначительно отличаться, в зависимости от версии Android).
![](https://habrastorage.org/getpro/habr/post_images/db5/eb9/203/db5eb9203f2e69a0d671e7ca49615b09.png)
Далее нас встречает начальное окно настройки Android. Здесь выбираем язык системы и жмём кнопку «Начать».
![](https://habrastorage.org/getpro/habr/post_images/809/3b7/d08/8093b7d08418b6a24a7aa1bf668b811a.png)
На этапе «Подключения к Wifi» пока что жмём «Пропустить». К этой настройке мы вернёмся позже.
![](https://habrastorage.org/getpro/habr/post_images/588/220/05c/58822005c1a9c7887e86323eec762511.png)
Производим оставшиеся настройки (Дата, Время, часовой пояс и тд) и переходим на рабочий стол Android. Интерфейс рабочего стола может отличаться, в зависимости от версии Android.
![](https://habrastorage.org/getpro/habr/post_images/e65/d84/af5/e65d84af55ad4a3615d75a169ebde414.png)
Теперь подключаем нашу ВМ к интернету. К сожалению, по какой-то причине Android не прописывает автоматически IP адрес, Шлюз и DNS, и поэтому их надо указать вручную (если кто-то из читателей в курсе, как решить эту проблему, буду рад почитать об этом в комментариях). Переходим в «Настройки» — «Сеть и Интернет» — «WiFi» и выбираем сеть «VirtWifi» (Если иконки «Настройки» нет на рабочем столе, потяните мышкой по экрану снизу вверх, и у вас откроется меню со всеми программами).
![](https://habrastorage.org/getpro/habr/post_images/d35/41a/e2a/d3541ae2af7fa6b35e416d98fae08bb8.png)
В окне «Сведения о сети», в правом верхнем углу нажимаем на карандаш и переходим к настройкам сети.
![](https://habrastorage.org/getpro/habr/post_images/244/e26/151/244e26151a102f0b0e32b751f99e7215.png)
В открывшемся окне настроек необходимо перейти в раздел «Расширенные настройки», и вручную указать IP-адрес: 192.168.0.2, Шлюз: 192.168.0.254, Длину префикса сети: 24, DNS: 1 8.8.8.8 и DNS 2: 8.8.4.4. Вводим данные и сохраняем.
![](https://habrastorage.org/getpro/habr/post_images/8e9/f13/aa4/8e9f13aa4fbeb6efb65c0e39823f1b7b.png)
Готово. Все настройки завершены, и теперь мы можем выходить с виртуальной машины в интернет, а также скачивать приложения с Google Play. Запускаем, вводим данные от своей учётной записи и попадаем в магазин.
![](https://habrastorage.org/getpro/habr/post_images/5ec/2a9/b0a/5ec2a9b0ad0d93c1c8e1dddaab003d90.png)
▍ Пара слов в заключение
С первого взгляда может показаться, что вся процедура слишком замудрённая и проще воспользоваться готовым решением, но результат стоит потраченных усилий. Я протестировал наиболее популярные версии эмуляторов, отдавая предпочтение Nox и Bluestack (бета-версия с поддержкой Hyper-V). Как ни странно, Bluestack запускаться на Windows Server 2016 не захотел, а производительность Nox сильно разочаровала.
Всё же, они больше подходят под десктопные решения, где используется физическое и более производительное железо. Android же на Hyper-V, напротив, даже удивил. Хоть производительность не идеальная (так как это запуск виртуальной машины на другой виртуальной машине), но пользоваться им вполне реально.
Я протестировал ряд популярных приложений, а также парочку простеньких 2D игр и в целом остался доволен. А какие решения используете вы?
Telegram-канал с розыгрышами призов, новостями IT и постами о ретроиграх 🕹️
![](https://habrastorage.org/webt/_p/_h/lv/_p_hlvd2tv0cv9tny8tdytzfhje.png)