Сводка Главы 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
текст для отображения текста, а также для инициации действий, Button
Switch
а также для выбора значения включено и выключения, а также 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.