Xamarin и кросс-платформенная разработка
Xamarin.Forms представляет платформу, которая нацелена на создание кроссплатформенных приложений под Android, iOS и Windows 10. Зачем использовать именно данную платформу, какие преимущества она несет? Есть определенные статистические данные, что значительная часть мобильных приложений создается более чем для одной платформы, например, для Android и iOS. Однако неизбежно разработчики сталкиваются со следующими трудностями:
- различие в подходах построение графического интерфейса так или иначе влияет на разработку. Разработчики вынуждены подстраивать приложение под требования к интерфейсу на конкретной платформе
- разные API — различие в программных интерфейсах и реализациях тех или иных функциональностей также требует от программиста учет этих специфических особенностей
- разные платформы для разработки. Например, чтобы создавать приложения для iOS нам необходима соответствующая среда — Mac OS X и ряд специальных инструментов, типа XCode. А в качестве языка программирования выбирается Objective-C или Swift. Для Androidа мы можем использовать самый разный набор сред — Android Studio, Eclipse и т.д. Но здесь для подавляющего большинства приложений применяется Java или Kotlin. А для создания приложений под Windows используется Visual Studio, а в качестве языков — C#, F#, VB.NET, C++
Такой диапазон платформ, средств разработки и языков программирования не может положительно сказываться на сроках создания приложений, и, в конечном счете, на денежных средствах, выделяемых на разработку. Было бы очень эффективно иметь один инструмент, который позволял легко и просто создавать приложения сразу для всех платформ. И именно таким инструментом и является платформа Xamarin (произносится как «зэмарин»).
Xamarin позволяет создавать одну единcтвенную логику приложения с применением C# и .NET сразу для всех трех платформ — Android, iOS, UWP.
Преимущества использования Xamarin.Forms:
- В процессе разработки создается единый код для всех платформ
- Xamarin предоставляет прямой доступ к нативным API каждой платформы
- При создании приложений мы можем использовать платформу .NET и язык программирования C# (а также F#), который является достаточно производительным, и в тоже время ясным и простым для освоения и применения
- Xamarin Forms поддерживает несколько платформ. Основные платформы: Android, iOS, UWP, Tizen. Дополнительные платформы, которые развиваются сообществом: MacOS, WPF, GTK#.
5 января 2021 года вышла последняя версия данной платформы — Xamarin Forms 5.0 и собственно она и будет рассматриваться в данном руководстве.
Как работает Xamarin
Работу Xamarin графически можно представить следующим образом:
Xamarin работает поверх фреймворка Mono, который предоставляет opensource-реализацию .NET Framework. Mono может работать поверх разных платформ — Linix, MacOS и т.д.
На уровне каждой отдельной платформы Xamarin полагается на ряд субплатформ. В частности:
- Xamarin.Android — библиотеки для создания приложений на ОС Android
- Xamarin.iOS — библиотеки для создания приложений для iOS
Эти субплатформы играют большую роль — через них приложения могут напрявлять запросы к прикладным интерфейсам на устройствах под управлением ОС Android или iOS. Вкратце это выглядит следующим образом.
С помощью Xamarin.Android код C# с использованием Xamarin компилируется в Intermediate Language (IL), который затем при запуске приложения компилируется в нативную сборку. Xamarin-приложения запускаются в среде выполнения Mono. Напрямую код не может обращаться к API Android. Для этого надо обратиться к функциональность пространств имен Android.* и Java.*, которые прдоставляются виртуальной машиной Android Runtime (ART). Специальная прослойка Managed Callable Wrappers (MCW) позволяет транслировать вызова managed-кода в нативные вызовы и обращаться к функциональности пространств имен Android.* и Java.*
И наоборот, когда Android Runtime (ART) обращается к приложению с кодом Xamarin, то все вызовы проходят через обертку Android Callable Wrappers (ACW) .
Приложения Xamarin.iOS в отличие от Xamarin.Android, который использует JIT-компиляцию, применяют AOT-компиляцию (Ahead-of-Time) кода C# в нативный ARM-код. Xamarin использует промежуточный слой Selectors (селекторы) для трансляции вызовов кода Objective-C в код на C# и слой Registrars (регистраторы) для трансляции кода C# в Objective-C. В итоге слои Selectors и Registrars в целом представляют премежуточный слой, который на иллюстрации выше обозначен как «bindings» и который собственно позволяет взаимодействовать коду Objective-C с кодом C#.
В итоге благодаря этим платформам мы можем создавать отдельно приложения для Android, отдельно для iOS, но наиболее важной особенностью Xamarin является возможность создавать кроссплатформенные приложения — то есть одна логика для всех платформ. Данная возможность представлена технологией Xamarin.Forms и которая работает как бы уровнем выше Xamarin.Android и Xamarin.iOS. То есть с помощью Xamarin.Forms мы один раз можем определить визуальный интерфейс, один раз к нему привязать какую-то логику на C#, и все это будет работать на Android, iOS и Windows. Затем Xamarin.Forms с помощью рендереров (renderer) — специальных объектов для связи контроллов на XAML/C# с нативными контроллами транслируют визуальные компоненты Xamarin.Forms в графический интерфейс, специфичный для каждой платформы.
Установка Xamarin
Для разработки кроссплатформенных приложений на Xamarin нам нужна среда разработки. Для Windows такой средой является Visual Studio. То есть, если нашей ОС является Windows, то нам вначале надо установить Visual Studio 2019. При этом можно использовать в том числе и бесплатный выпуск Visual Studio 2019 Community.
При установке Visual Studio 2019 в программе для установщика обязательно надо выбрать пункт «Разработка мобильных приложений на .NET»:
После инсталляции мы сможем в меню Help -> About Microsoft Visual Studio увидеть отметку о Xamarin:
Если целевой операционной системой является Mac OS X, то в этом случе нам надо установить Visual Studio for Mac.
Кроме того, для разработки на Mac OS X требуется установить XCode, который доступен в AppStore.
Build the future of apps with Xamarin.
Xamarin SDK is now fully available under the MIT license.
Xamarin brings open source .NET to mobile development, enabling every developer to build truly native apps for any device in C# and F#. We’re excited for your contributions in continuing our mission to make it fast, easy, and fun to build great mobile apps.
Xamarin.iOS
& Xamarin.Mac
Native mobile apps for iOS, watchOS, tvOS, and OS X with .NET
Xamarin.Android
Native mobile apps for Android, Android Wear, and Android TV with .NET
Xamarin.Forms
Native UIs for iOS, Android, and Windows from a single, shared codebase
We’re building a truly open source community around Xamarin.
We want it to be as easy as possible for developers to invest time in building great software in C#. Being part of an open source project means more than just writing code — there are many ways you can contribute.
Get source to our most popular external libraries and components.
Accelerate mobile development with open source bindings for native libraries including the Facebook SDK and Google Play Services, and cross-platform plugins for common mobile functionality like media, messaging, and GPS.
Get started with Xamarin
Xamarin provides several different paths for learning to build native mobile apps for iOS, Android, and Windows in C#. From on-demand video training to deep-dive eBooks, we have you covered to help make learning mobile development easy.
Documentation
The Xamarin Developer Center is packed full of resources to help you get started with mobile development, including documentation on configuring your development environment, iOS, Android, Xamarin.Forms, and more. There is also lots of code available for you to dig into, including recipes, samples, and prebuilt applications.
Video training
Xamarin University provides live, interactive mobile development training lead by Xamarin experts. Visual Studio Dev Essentials program offers five introductory mobile development classes on demand from Xamarin University, completely for free. Hands-on learners may also enjoy our self-guided learning. Developers interested in cross-platform mobile development with Xamarin.Forms may also be interested in our free Introduction to Xamarin.Forms video course available from edX.
Building Xamarin from source
You can compile your own Xamarin SDK libraries and tools by following the instructions in the readme for any individual project.
- Building Xamarin SDK for Mac and iOS from source
- Building Xamarin SDK for Android from source
- Building Xamarin.Forms from source
Instructions for building individual open source Xamarin Component and Plugin projects can typically be found in the project’s README file.
- © Microsoft Corporation.
При подготовке материала использовались источники:
https://metanit.com/sharp/xamarin/1.1.php
https://xamarin.github.io/?ref=w3use