Xamarin 2.0: кросс-мобильная разработка в Visual Studio

4 март, 2013 - 13:35Игорь Дериев

По мере того как создание мобильных приложений становится все более заманчивым и выгодным делом, независимые разработчики должны тяготеть к кроссплатформенным инструментам. Однако уповать на последние от Apple, Google, Microsoft и пр. не приходится и поэтому нишу пытаются заполнить сторонние коллективы.

Напомним, что компания Xamarin является «осколком» Novell, получившим все права на Mono, а также производные разработки MonoTouch (iOS) и Mono for Android. Главная идея всех этих продуктов, и, соответственно, самой компании, состоит в том, чтобы использовать для создания мобильных приложений язык С#, и, таким образом, предоставить профессиональным .NET-программистам возможность задействовать свой предыдущий опыт, а также сделать мобильный код относительно переносимым (конечно, всегда будет присутствовать какая-то платформенно-зависимая часть). Нельзя сказать, что Xamarin хватает звезды с неба, но 12 тыс. проданных лицензий и сообщество из почти 250 тыс. разработчиков о чем-то да говорят. При этом компания продолжает энергично развивать свою продукцию и не гнушается достаточно любопытных экспериментов, об одном из которых КО когда-то писало.

Нынешнее обновление — Xamarin 2.0 — является одной из важнейших вех, так как впервые представлена максимально интегрированная платформа разработки, что отражено буквально во всем, начиная с названия ее составных частей: MonoTouch превратился в Xamarin.iOS, а Mono for Android — в Xamarin.Android (еще есть Xamarin.Mac). Платформа включает как общие библиотеки для реализации базовой функциональности, так и платформенно-зависимые «обертки» для стандартных API соответствующих мобильных ОС. К первым относятся не только библиотеки Mono, но и «самописные» вроде Xamarin.Mobile для работы с GPS, камерой, контактами. К последним — прежде всего, средства построения пользовательского интерфейса, которые, по-видимому, сделать универсальными невозможно в принципе. Даже из этого краткого описания четко виден прицел на упрощение кросс-платформенной разработки.

Xamarin 2.0: кросс-мобильная разработка в Visual Studio

Стандартной средой разработки для Xamarin 2.0 является Xamarin Studio, прежде называвшаяся MonoDevelop. Версия для Mac OS X поддерживает разработку как для iOS, так и для Android; для Windows — только для Android. Пользовательские интерфейсы для Android создаются в оригинальном визуальном дизайнере, для iOS — в Xcode Interface Builder из iOS SDK, который интегрируются в общую среду.

Многие разработчики были вполне довольны MonoDevelop, соответственно, доработанная Xamarin Studio их и подавно устроит, тем более, что проект «полировался» довольно долго. Однако есть и категория тех, кто предпочел бы использовать Visual Studio — из разных соображений, в том числе и ради перспективы охватить разом и платформу Windows Phone. Вот как раз для последних есть особая новость: теперь с Visual Studio интегрируется не только Xamarin.Android (что было и для Mono for Android), но и Xamarin.iOS.

Разработка для iOS в Visual Studio — вовсе не блажь, а, если верить Xamarin, пожелание по крайней мере трех четвертей заказчиков компании. Интеграция Xamarin.iOS достаточно полная в том смысле, что в Visual Studio появляются соответствующие типы проектов, отладчиков и других необходимых сущностей; можно использовать все стандартные возможности среды, начиная с IntelliSense; популярные плагины и даже коллективную разработку с помощью TFS. Однако же одного этого мало, поскольку iOS SDK существует только для Mac OS X и именно в этой среде необходимо выполнять окончательную компиляцию и подписывать готовые программы.

Xamarin нашла выход из ситуации в виде удаленного подключения к Маку по сети и автоматического задействования соответствующих служб Apple. Но и это не решает всех проблем, поскольку а) исходя из лицензионных соображений несколько разработчиков не могут использовать один Мак, б) эмулятор iOS-устройств не поддерживает удаленного управления и может использоваться только локально. Соответственно, наиболее реальная модель работы заключается в запуске Visual Studio в виртуальной машине, исполняемой в среде Мака. Пожалуй, не слишком элегантно, но сложности носят объективный характер (в лице Apple).

Наконец, еще одно интересное новшество Xamarin 2.0 — магазин программных компонентов. Повторное использование готового кода — давнишняя идея-фикс программной индустрии — является нормой в настольной разработке, но, похоже, пока не слишком востребовано в мобильной. В случае Xamarin это, впрочем, достаточно закономерный ход, именно в контексте переноса .NET-опыта. Какое-то количество компонентов в магазине предоставлено самой Xamarin, но и сторонние разработчики уже также начали предлагать собственные.

Таким образом, по совокупности своих возможностей Xamarin 2.0 — абсолютно уникальное явление. Разработка для двух самых популярных сегодня мобильных платформ отличается сильно, а любой вменяемый разработчик несомненно предпочтет полноценно охватить обе, если это возможно сравнительно малой кровью. Единственный «стандартный» вариант создания переносимых приложений — HTML и JavaScript, которые пока еще годятся далеко не для всех применений, да и требуют отдельных инструментов и навыков. И Xamarin 2.0 представляет единственную альтернативу, причем основанную на развитых, хорошо себя зарекомендовавших технологиях, начиная с языка C#. Отсюда, впрочем, и достаточно высокие цены:

Xamarin 2.0: кросс-мобильная разработка в Visual Studio

Для первого знакомства имеется максимально простая бесплатная редакция, но, к примеру, интеграция с Visual Studio доступна только начиная с рекомендованной редакции Business — $999 за поддержку каждой платформы. Ясно, что такой выбор может сделать только профессиональный разработчик, четко видящий его необходимость и перспективы. Тем не менее, если судить по первым отзывам, то Xamarin 2.0 была встречена сообществом вполне тепло, даже несмотря на все оговорки и несовершенство.