Введение
Несколько месяцев назад, прочитав на Хабре статьи про кросплатформенную разработку с помощью Mono и Xamarin, вдохновился написанием собственных приложений на платформы Android, iOS и Windows Phone. Через некоторое время, найдя работу в компании, которая как раз и занимается разработкой приложений с помощью Xamarin, стал гордым обладателем iMac и понял, что хорошо бы кроме девайса с Android’ом на борту (да, у меня прекрасно уживается продукция Apple и Google, хотя предпочтение я отдаю первым) иметь на iMac эмулятор Android (так как держать весь зоопарк устройств для своих проектов не представляется возможным).
Проблемы
Честно говоря, писать код в Xamarin это боль, особенно когда существует Visual Studio и ReSharper. Это и стало одной из причин установки на iMac Parallels Desktop с Windows 8.1 на борту (первой была возможность разрабатывать под Windows Phone). Это решило проблему со средой разработки, но оставило проблему с эмулятором Android. Поиск в интернетах дал знание о такой классный штуке как Genimotion. Тут была только одна загвоздка — Parallels Desktop не очень уживался с ним в паре. Уже подумав, что придется таки медленно приобретать весь зоопарк Android'а, приметил у Parallels Desktop возможность устанавливать с помощью их инструментария Android на виртуальную машину, которая прекрасно работала в паре с Windows опять же на виртуалке. Оставалось только найти способ связать одно с другим. О поисках и применении найденного я и расскажу.
Решение
Итак, для успеха нам потребуются:
- Устройство из семейства Mac’ов
- Parallels Desktop с установленными Android и Windows
- Visual Studio
- Xamarin (на Windows)
Как я уже упоминал, это можно сделать с помощью стандартных средств, но если по какой-то причине стандартный параллелсовский андроид вас не устраивает (например, я так и на нашел способ поворота экрана, зато на андроиде, установленном самостоятельно, это делается легко) есть возможность установить любой понравившийся образ. Я перепробовал несколько источников, но отсюда установка успешна в 100% случаев.
Итак, скачиваем любой образ по нраву, у меня android-x86-4.4-RC1.iso, открываем Parallels Desktop. Если это первый запуск, то выбираем сразу «Установить Windows или другую ОС с DVD или образа», если нет, тогда жмем на «+» -> Создать, а затем выбираем установку с образа и жмем «Продолжить». В открывшемся окне выбираем образ и перетаскиваем его внутрь.
Parallels Desktop нас тут же извещает о том, что определить ОС на этом образе является для него невыполнимой задачей, однако, не стоит переживать по этому поводу, смело жмем «Продолжить». В выпадающем меню выбираем Другие версии Linux -> Другая версия Linux, жмем OK.
Далее можно ввести имя и расположение виртуальной машины. Настоятельно рекомендую выбрать пункт «Настроить параметры до начала установки». У меня настроено следующим образом:
После настройки нажимаем «Продолжить», запускается установка нашего Android’а. Далее следуем по пунктам: Installation — Install Android-x86 to harddisk -> Create/Modify partitions -> New -> Primary -> Bootable -> Write -> yes -> Quit -> sda1 Linux -> ext3 -> Yes -> Yes -> Yes -> Reboot.
Вот и все, у вас Android на Parallels Desktop!
Первым делом, запускаем Parallels Desktop
Открывается список доступных виртуальных машин — его пока оставляем открытым. Теперь переходим Parallels Desktop -> Настройки
И открываем вкладку Дополнительно, а на ней Сеть: Изменить настройки
Сюда нам чуть позже необходимо будет добавить IP нашего Android’a, на который будем деплоить проект с Visual Studio.
Возвращаемся к списку виртуальных машин, нажимаем правой кнопкой мышки на Android и переходим в настройки этой виртуалки:
Здесь нас будет интересовать вкладка «Оборудование» пункт «Сеть». В типе подключения нужно выбрать в списке мостовых сетей ту, к которой подключен сам Mac:
Закрываем настройки виртуальной машины с Android’ом и запускаем ее. Теперь уже переходим в настройки самого Android’а -> О планшетном ПК -> Общая информация и проматываем список, пока не найдем IP нашего Andorid’a:
Возвращаемся к настройкам Parallels Desktop (Настройки -> Дополнительно -> Сеть: Изменить настройки), нажимаем на «+» под списком правил переадресации портов, где вводим информацию следующим образом (конечно же меняя IP адрес на адрес своего Android’a)
Нажимаем ОК и видим наш IP в списке:
Настройка Android’a на этом завершена, теперь нужно подготовить Windows, а именно adb сервер. Поэтому запускаем виртуалку с WIndows на борту.
Как только Windows запущена, переходим в C:Users*username*AppDataLocalAndroidandroid-sdkplatform-tools и запускаем консоль из этой папки (на всякий случай для тех кто не знает — щелчок правой кнопкой мыши -> open command window here)
Прописываем в консоле:
add kill-server
adb connect *IP адрес вашего Android’a*
Выглядеть должно следующим образом:
Теперь запускаем Visual Studio, в которой создаем новый Android Application проект:
Список устройств должен выглядеть следующим образом (может подгрузиться не сразу):
Выбираем первый в списке и запускаем проект. Собственно результат:
Теперь можно писать код в Visual Studio в паре с ReSharper и получать от процесса удовольствие.
Заключение
Хоть все и получилось, но у такого подхода есть свои плюсы и минусы. С минусов и начну:
- Каждый раз при старте Windows приходится прописывать команды adb серверу;
- Мне пока удалось поставить на виртуалку только планшетные варианты Android’a без возможности изменения размера экрана и смены ориентации виртуальной машины (ориентацией экрана меняется сочетанием Ctrl + F9/F10/F11/F12 правда в Android’е, установленного с www.android-x86.org/download).
Плюсы:
- Действительно быстрая работа Android’а (даже быстрее, чем на моем девайсе);
- Возможность сравнить приложение на трех платформах одновременно, без необходимости перезапуска Windows для подключения/отключения Hyper-V;
- Использование Visual Studio в качестве среды разработки.
На этом все, надеюсь вам пригодится это руководство. Спасибо, что прочитали!
Автор: Pocheshire