Часть 1 – Мобильная платформа Xamarin

Мобильная платформа Xamarin состоит из ряда элементов, которые позволяют разрабатывать приложения для Android и iOS:

  • Язык C# – Позволяет использовать знакомый синтаксис и сложные функции, такие как Generics, Linq и Parallel Task Library.
  • Фреймворк Mono .NET – Обеспечивает кроссплатформенную реализацию широких возможностей Microsoft .NET
  • Компилятор – В зависимости от платформы, производит нативное приложение (например, iOS.) или интегрированное приложение .NET времени выполнения (например, Android.). Компилятор также выполняет множество оптимизаций для мобильного развертывания, таких как удаление неиспользованного кода.
  • Инструменты среды разработки – Xamarin Studio и плагин Xamarin для Visual Studio позволяют создавать, строить и развертывать проекты Xamarin.

Кроме того, поскольку C # основной язык платформы .NET, проекты могут быть структурированы, чтобы совместно использовать код, который также может быть развернут на Windows Phone.

Движок

Хотя Xamarin и позволяет писать в C #  один и тот же код для разных мобильных платформ, фактическая реализация в каждой системе очень отличается.

Компиляция

Исходник C# совершает свой путь в нативное приложение совершенно по-разному на каждой платформе:

  • iOS – C# ahead-of-time (АОТ) компилируется в язык ARM.ассемблера. В .NET framework включено удаление неиспользуемых классов во время компоновки для уменьшения размера приложения. Apple не позволяет генерацию кода во время выполнения на iOS, поэтому некоторые языковые особенности не доступны (см. Ограничения Xamarin.iOS).
  • Android – C# компилируется в IL и упакован с MonoVM + JIT’ing. Неиспользуемые классы удаляются при линковке. Приложение работает совместно с Java/ART (Android runtime) и взаимодействует с нативными типами через JNI (см. Ограничения Xamarin.Android).
  • Windows Phone – C# компилируется в IL и исполняется встроенной средой и не требует инструментов Xamarin. Проектирование приложения Windows Phone, следуя руководствам Xamarin позволяет проще использовать код повторно на iOS и Android.

Документация компоновщика для Xamarin.iOS и Xamarin.Android предоставляет дополнительные сведения об этой части процесса предварительной компиляции.

Доступность SDK платформ

Xamarin делает функции, предоставляемые конкретной платформой SDK легкодоступными, со знакомым C# синтаксисом:

  • iOS – Xamarin.iOS предоставляет фреймворки CocoaTouch SDK от Apple как пространства имен, на которые можно ссылаться из C#. Например UIKit фреймворк, который содержит все элементы управления пользовательского интерфейса могут быть включены простым объявлением using MonoTouch.UIKit;
  • Android – Xamarin.Android предоставляет Android SDK от Google в качестве пространств имен, так что вы можете ссылаться на какую-либо часть поддерживаемого SDK с помощью оператора, например,  using Android.Views; для доступа к элементам управления пользовательского интерфейса.
  • Windows Phone – Windows Phone не является частью платформы Xamarin. При создании приложений для Windows Phone в C#, SDK неявно доступен в приложении, включая элементы управления Silverlight / XAML для пользовательского интерфейса.

Прозрачная интеграция для разработчиков

Красота мобильной платформы Xamarin проявляется в том, что несмотря на различия движков Xamarin.iOS и Xamarin.Android (в сочетании с Microsoft Windows Phone SDK) предлагается прозрачное взаимодействие для написания кода C#, который может быть повторно использован для всех трех мобильных платформ.

Бизнес-логика, использование баз данных, доступ к сети и другие общие функции можно написать один раз и повторно использовать на каждой платформе, обеспечивая основу для конкретной платформы пользовательских интерфейсов, которые выглядят и выполнятся как родные приложения.

Возможности интегрированной среды разработки (IDE)

Разрабатывать в Xamarin можно в Xamarin Studio или Visual Studio. Выбор IDE будет определяться целевыми платформами.

Требования к разработке для каждой платформы, рассматриваются ниже более подробно.

ОС разработки
Mac OS X Windows
IDE Xamarin Studio Xamarin Studio Visual Studio
iOS

+

+

Android

+

+

+

Windows Phone

+

iOS

Разработка приложений для  iOS требует Mac компьютер, работающий под управлением Mac OS X. Также можно использовать Visual Studio для создания и развертывания приложений iOS с Xamarin в iOS плагине Visual Studio. Однако Mac по-прежнему необходим для построения и лицензирования.

В Xcode должен быть установлен компилятор и симулятор для тестирования. Для тестирования на реальном устройстве и представления приложений для распространения, вы должны присоединиться к компании Apple Developer Program ($99 долларов США в год). Каждый раз, когда вы передаете или обновляете приложение, оно должно быть рассмотрено и утверждено Apple, прежде чем оно становится доступным для загрузки пользователями.

Код написаный в Xamarin Studio или Visual Studio и экраны могут быть построены программно или отредактированы  iOS-конструкторе Xamarin в любой IDE.

Обратитесь к Руководству по установке Xamarin.iOS за подробными инструкциями по установке и настройке.

Android

Разработка Android-приложения требует установленных Java и Android SDK. Они обеспечивают компилятор, эмулятор и другие инструменты, необходимые для создания, развертывания и тестирования. Java, Android SDK от Google и инструменты Xamarin все это может быть установлено и будет работать на следующих конфигурациях:

  • Mac OS X Yosemite (10.10+) с Xamarin Studio IDE
  • Windows 7 и выше с Xamarin Studio IDE
  • Windows 7 и выше Visual Studio 2012, 2013, или 2015

Xamarin обеспечивает единый инсталлятор, который настроит систему с помощью инструментов Java, Android и Xamarin (в том числе визуальный конструктор для макетов экрана). Обратитесь к Руководству по установке Xamarin.Android  за подробными инструкциями.

Вы можете создавать и тестировать приложения на реальном устройстве без какой-либо лицензии от Google, однако при распространении своих приложений через магазин (например, Google Play, Amazon или Barnes & Noble) потребуется оплата регистрационный взноса. Google Play будет опубликовать приложение мгновенно, в то время как другие магазины имеют процесс утверждения, как у Apple.

Windows Phone

Приложения для Windows Phone строятся в Visual Studio 2010 — 2013 от Microsoft. Они не используют Xamarin напрямую. Тем не менее, C # код может быть разделен между Windows Phone, Android и iOS с помощью инструментов Xamarin в. Посетите Dev Center от Microsoft, чтобы узнать об инструментах, необходимых для разработки Windows Phone.

Создание пользовательского интерфейса (UI)

Ключевым преимуществом использования Xamarin является то, что пользовательский интерфейс приложения использует собственные элементы управления на каждой мобильной платформе, создавая приложения, которые неотличимы от приложения, написанного на Objective-C или Java (для iOS и Android соответственно).

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

Создание элементов управления программными средствами

Каждая платформа позволяет добавлять элементы управления пользовательского интерфейса управления на экран с помощью кода. Это может быть очень много времени, как это может быть трудно визуализировать законченный дизайн когда пиксель-кодирования координаты для контроля позиций и размеров. Это может занимать очень много времени, поскольку трудно визуализировать готовый дизайн, когда жестко-кодированы координаты пикселей для позиций и размеров элементов управления.

Программное создание элементов управления имеет преимущества, особенно на iOS для создания представления, изменения размеров или что бы сделать различные размеры экрана для iPhone и iPad.

Визуальный конструктор

Каждая платформа имеет разные методы для визуализации слоёв экранов:

  • iOS – iOS дизайнер Xamarin Studio и Visual Studio упрощает создание представлений с помощью drag-and-drop функциональность и свойства полей. Вместе эти представления составляют раскадровки и могут быть доступны в файле .STORYBOARD, который включается в проект.
  • Android – Xamarin обеспечивает Android drag-and-drop дизайнер пользовательского интерфейса для обеих Xamarin Studio and Visual Studio.  При использовании инструментов Xamarin, Android макеты экрана сохраняются в виде файлов .AXML.
  • Windows Phone – Microsoft предоставляет drag-and-drop дизайнер пользовательского интерфейса в Visual Studio и Blend. Макеты экрана сохраняются в виде файлов . XAML.

Эти скриншоты показывают визуальные конструкторы экрана имеющиеся на каждой платформе:

мобильная платформа

Во всех случаях, на элементы, которые создаются визуально,  можно ссылаться в коде.

Рекомендации по пользовательскому интерфейсу

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

Некоторые метафоры интерфейса работают на разных платформах (например, все три платформы используют подобный элемент скроллинг-лист), но для того, чтобы UI вашего приложения правильно «ощущалось»,  следует,  когда это необходимо,  использовать платформоспецифичные  элементы пользовательского интерфейса. Например, метафоры платформоспецифичных элементов UI включают в себя:

  • iOS – Иерархическая навигация с программной кнопки возврата, вкладки в нижней части экрана
  • Android –Аппаратная / системно-программная кнопка возврата, меню действий, вкладки в верхней части экрана.
  • Windows Phone – Аппаратная кнопка возврата, «панорама», «живые плитки».

Рекомендуется  прочитать руководства по принципам дизайна, касаемо целевых платформ:

Библиотеки и повторное использование кода

Xamarin платформа позволяет повторное использование существующего кода C# во всех платформах, а также интеграции библиотек, изначально написанных для каждой из мобильных платформ.

Ресурсы и библиотеки C#

Поскольку продукты Xamarin используют C # и .NET, существует очень много ресурсов (как с открытым исходным кодом и внутренних проектов), которые могут быть повторно использованы в Xamarin.iOS или Xamarin.Android проектах. Часто источник может быть  просто добавлен в решение Xamarin и он будет сразу же работать. Если используется не поддерживаемая  функция .NET, могут потребоваться некоторые хитрости.

Примеры исходного кода C#, который может использоваться в Xamarin.iOS или Xamarin.Android: SQLite-NET, NewtonSoft.JSON и SharpZipLib.

Objective-C Bindings + Binding Projects

Xamarin предоставляет инструмент под названием btouch, который помогает создавать привязки на библиотеки Objective-C, которые будут использоваться в проектах Xamarin.iOS. Обратитесь к документации Binding Objective-C Types для подробной информации о том, как это делается.
Примеры библиотек Objective-C, которые могут быть использованы в Xamarin.iOS: RedLaser сканирование штрих-кодов, Google Analytics и интеграции PayPal. Привязки с открытым исходным кодом Xamarin.iOS доступны на github.

.jar Bindings + Binding Projects

Xamarin поддерживает использование существующих библиотек Java в Xamarin.Android. Обратитесь к документации Binding a Java Library для деталей о том, как использовать файл .JAR из Xamarin.Android.

Привязки с открытым исходным кодом Xamarin.Android доступны на github.

C с помощью PInvoke

Технология «Платформа Invoke» (PInvoke) позволяет управляемому коду (C#) вызывать методы нативных библиотек, а также поддерживает обратный вызова  в управляемый код.

Например, SQLite-NET библиотека использует такие объявления:

Это связывает нативную реализацию SQLite C-языка в iOS и Android. Разработчики, знакомые с существующим C API могут создать набор классов C# для сопоставления нативного API и использовать существующий код платформы. Существует документация для линковки нативных библиотек в Xamarin.iOS, аналогичные принципы применимы к Xamarin.Android.

C++ с помощью CppSharp

Miguel de Icaza объясняет принципы CXXI (сейчас он называется CppSharp) в своем блоге. для связывания с библиотекой C++ непосредственно является создание оболочки C и привязка через P/Invoke.

Оригинал статьи

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *