Сводка Главы 1. Как применить Xamarin.Forms?

Примечание.

Эта книга была опубликована весной 2016 года и с тех пор не обновлялась. Многое в этой книге остается ценным, но некоторые материалы устарели, а некоторые разделы перестали быть полностью верными или полными.

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

Разработка кроссплатформенных мобильных приложений

Это достаточно типичная проблема при создании систем для мобильных платформ. В настоящее время существует две основные мобильные платформы: семейство iPhone и iPad корпорации Apple, работающие под управлением операционной системы iOS, а также операционная система Android на множестве разных телефонов и планшетов. Еще одна важная платформа — универсальная платформа Windows (UWP) корпорации Майкрософт, которая позволяет нацеливать одну программу на обе версии Windows 10.

Поставщик программного обеспечения, который хочет нацелиться на эти платформы, должен иметь дело с различными парадигмами пользовательского интерфейса, тремя разными средами разработки, тремя различными интерфейсами программирования и, возможно, тремя разными языками программирования: Objective-C для i Телефон и iPad, Java для Android и C# для Windows.

Решение на основе C# и .NET

Несмотря на то что Objective-C, Java и C# основаны на одном языке программирования C, их развитие шло по очень разным путям. Из них C# является самым новым, и его развитие учитывало ряд очень полезных возможностей. Более того, C# тесно связан со всей инфраструктурой программирования .NET, что обеспечивает поддержку таких возможностей, как математические операции, отладка, отражение, коллекции, глобализация, файловый ввод-вывод, сетевые подключения, безопасность, потоки, веб-службы, обработка данных, чтение и запись файлов XML и JSON.

В настоящее время Xamarin предоставляет средства для нацеливания на собственные интерфейсы Mac, iOS и Android с использованием C# и .NET. Эти средства Xamarin.Mac, Xamarin.iOS и Xamarin.Android в совокупности называются платформой Xamarin. Это библиотеки и привязки, которые выражают собственные API этих платформ в формате идиом .NET.

Разработчики могут использовать платформу Xamarin для создания приложений C# для ОС Mac, iOS и (или) Android. Но при нацеливании сразу на несколько платформ имеет смысл повторно использовать некоторую часть кода. Чтобы использовать такой подход, программа разделятся на две части: зависимый от платформы код (обычно сюда относится пользовательский интерфейс) и независимый от платформы код (который обычно работает только с базовой платформой .NET). Этот независимый от платформы код можно разместить в переносимой библиотеке классов (PCL) или в общем проекте, который часто обозначают как SAP (проект общих ресурсов).

Примечание.

Переносимые библиотеки классов заменены библиотеками .NET Standard. Все примеры кода в этой книге преобразованы для использования библиотек .NET Standard.

Знакомство с Xamarin.Forms

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

  • устройства iPhone, iPad и iPod Touch под управлением iOS;
  • телефоны и планшеты Android под управлением Android;
  • универсальная платформа Windows для работы в ОС Windows 10.

Примечание.

Xamarin.Forms теперь не поддерживает Windows 8.1, Windows Phone 8.1 и Windows 10 Mobile, при этом приложения Xamarin.Forms выполняются в Windows 10 для настольных компьютеров. В режиме предварительной версии предоставляется поддержка платформ Mac, WPF, GTK# и Tizen.

Основная часть программы Xamarin.Forms размещается в библиотеке или проекте SAP. Для каждой из платформ создается небольшое приложение-заглушка, которое обращается к совместно используемому коду.

Интерфейсы API Xamarin.Forms сопоставляются с собственными элементами управления каждой из платформ, поэтому каждая платформа сохраняет привычные свойства и внешний вид:

Три снимка экрана с визуальными элементами, совместно используемыми тремя платформами

На следующих снимках экрана представлены (слева направо) устройство iPhone и телефон Android:

На каждом экране страница содержит Xamarin.FormsLabel текст для отображения текста, а также для инициации действий, ButtonSwitch а также для выбора значения включено и выключения, а также Slider для указания значения в непрерывном диапазоне. Все четыре элемента наследуются от StackLayout на ContentPage.

К этой странице также присоединена панель инструментов Xamarin.Forms с несколькими объектами ToolbarItem. Они отображаются как значки в верхней части экрана на iOS и Android или в нижней части экрана на Windows 10 Mobile.

Xamarin.Forms также поддерживает язык XAML, разработанный корпорацией Майкрософт для нескольких платформ приложений. Все представленные выше визуальные элементы программы определяются в коде XAML, как показано в примере PlatformVisuals.

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

Можно утверждать, что платформа Xamarin.Forms хорошо подходит для бизнес-приложений, для создания прототипов и быстрой проверки экспериментов, но она не идеальна для приложений с поддержкой векторной графики или сложным сенсорным взаимодействием.

Среда разработки

Среда разработки зависит от того, на какие платформы вы хотите нацеливаться и какие компьютеры намерены использовать.

Если вы хотите нацеливаться на iOS, вам потребуется компьютер Mac с установленными Xcode и платформой Xamarin. Поддержка Android также требует установки Java и необходимых пакетов SDK. Выполнив эти условия, вы сможете создавать программу для iOS и Android с помощью Visual Studio для Mac.

Установка Visual Studio на компьютере PC позволит создать программу для платформ iOS, Android и всех версий Windows. Однако для нацеливания на iOS из Visual Studio по-прежнему нужен компьютер Mac с установленными Xcode и платформой Xamarin.

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

Установка

Перед созданием и компиляцией приложения Xamarin.Forms желательно создать и скомпилировать отдельные приложения для iOS, Android и (или) UWP (в зависимости от среды разработки и платформ, на которые вы нацеливаетесь).

Сведения о том, как это сделать, представлены на веб-сайтах Xamarin и корпорации Майкрософт.

После успешного создания и запуска проектов для отдельных платформ не должно возникать никаких проблем с созданием и выполнением приложения Xamarin.Forms.