Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Примечание.
Эта книга была опубликована весной 2016 года и с тех пор не обновлялась. Многое в этой книге остается ценным, но некоторые материалы устарели, а некоторые разделы перестали быть полностью верными или полными.
Одним из наиболее неприятных заданий в программировании является перенос базы кода с одной платформы на другую, особенно если при этом меняется язык программирования. При переносе кода есть искушение выполнить заодно и рефакторинг, но если придется параллельно поддерживать обе платформы, любые различия в базе кода заметно усложнят обслуживание в будущем.
Разработка кроссплатформенных мобильных приложений
Это достаточно типичная проблема при создании систем для мобильных платформ. В настоящее время существует две основные мобильные платформы: семейство iPhone и iPad корпорации Apple, работающие под управлением операционной системы iOS, а также операционная система Android на множестве разных телефонов и планшетов. Еще одна важная платформа — универсальная платформа Windows (UWP) корпорации Майкрософт, которая позволяет нацеливать одну программу на обе версии Windows 10.
Поставщик программного обеспечения, который хочет нацелиться на эти платформы, должен иметь дело с различными парадигмами пользовательского интерфейса, тремя различными средами разработки, тремя различными интерфейсами программирования и, возможно, тремя разными языками программирования: Objective-C для iPhone и 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.
