Xamarin — что это, платформы и разработка на C#

Автор: IT Sectr Опубликовано: 2026-05-01 Время чтения: 9 мин

Xamarin — это платформа Microsoft для создания мобильных приложений на языке C#, анонсированная в 2011 году. По данным Microsoft Xamarin Documentation, 2024, Xamarin позволяет писать приложения под iOS, Android и Windows с общей кодовой базой на C# и .NET, используя Mono Runtime для компиляции в нативный код. С 2024 года Xamarin.Forms заменён на .NET MAUI.

Главное

  • Xamarin — мобильная платформа Microsoft для разработки на C# под iOS, Android и Windows
  • Два подхода: Xamarin.Forms (общий UI через XAML) и Xamarin.Native (нативные экраны отдельно)
  • Mono Runtime компилирует C# в нативный код ARM для iOS и Android
  • XAML — декларативный язык разметки для построения пользовательского интерфейса
  • .NET MAUI — преемник Xamarin.Forms, выпущенный Microsoft в 2022 году

Что такое Xamarin

Xamarin — это платформа, основанная на .NET и Mono, которая позволяет использовать C# для создания кроссплатформенных мобильных приложений. Компания Xamarin была основана в 2011 году и приобретена Microsoft в 2016 году за $400 млн. После покупки Xamarin стал частью экосистемы Visual Studio и Azure.

До приобретения Microsoft Xamarin был коммерческим продуктом с лицензией Enterprise. Microsoft сделала его бесплатным в составе Visual Studio Community, а также открыла исходный код Mono Runtime и SDK-биндингов. Это привело к росту популярности: к 2020 году Xamarin использовался в 15% кросс-платформенных проектов, согласно отчету SlashData.

Основная идея Xamarin — разделение кода на три слоя: общая бизнес-логика (C#, .NET Standard), платформенные проекты (iOS, Android) и опциональный общий UI через Xamarin.Forms. Такой подход позволял переиспользовать до 75% кода при сохранении нативного доступа к API каждой платформы.

История и развитие Xamarin

Первая версия Xamarin 1.0 вышла в 2012 году с поддержкой iOS только. В 2013 году добавилась поддержка Android. Xamarin.Forms — декларативный UI-фреймворк — был представлен в 2014 году на конференции Evolve. Xamarin 4.0 (2016) включил поддержку watchOS и tvOS. Xamarin 5.0 (2019) ввел CSS-стили и тему оформления Material Design.

Последняя мажорная версия Xamarin.Forms 5.0 вышла в 2021 году. Microsoft объявила, что Xamarin переходит в режим поддержки (end of life — 1 мая 2024 года), и рекомендовала мигрировать на .NET MAUI (Mult-platform App UI), который входит в состав .NET 6+. Xamarin.Forms 5.0 больше не получает новых функций, только критические исправления безопасности.

Xamarin.Forms vs Xamarin.Native

Xamarin.Forms — это UI-фреймворк, который абстрагирует интерфейс через единый набор элементов. XAML-разметка (ContentPage, StackLayout, Label, Button) маппится на нативные контролы каждой платформы через рендереры. Label транслируется в UILabel на iOS и TextView на Android. Этот подход обеспечивает до 95% общего UI-кода.

Xamarin.Native (также Xamarin.iOS и Xamarin.Android) — это подход без общего UI. Разработчик создаёт отдельные экраны для iOS (Interface Builder или Storyboard) и Android (AXML), используя один C#-бэкенд. Это даёт полный контроль над внешним видом каждой платформы, но увеличивает объём дублирования кода UI до 50–60%.

По данным Microsoft Developer Survey 2023, 70% проектов на Xamarin использовали Xamarin.Forms, 20% — Xamarin.Native с общими сервисами, 10% — гибридный подход с кастомными рендерерами для платформенных оптимизаций.

Архитектура Xamarin

Архитектура Xamarin состоит из двух уровней. Нижний уровень — Mono Runtime, который исполняет C# IL (Intermediate Language) на платформе. Верхний уровень — Managed Callable Wrappers (MCW) для iOS и Android Bindings для Android, которые обеспечивают доступ к нативным API из управляемого кода C#.

Mono Runtime и платформенные биндинги

Mono — это реализация .NET Framework с открытым исходным кодом. В Xamarin Mono работает как среда выполнения Common Language Runtime (CLR), загружая сборки C# и компилируя их в машинный код. На iOS Mono компилируется Ahead-of-Time (AOT) — в машинный код ARM64, так как Apple запрещает JIT-компиляцию в пользовательских приложениях. На Android Mono использует JIT-компиляцию с AOT-профилированием.

iOS Bindings (Xamarin.iOS) — это C#-обёртки над Objective-C рантаймом. Каждый UIKit-класс (UIView, UIViewController) представлен управляемым классом в сборке Xamarin.iOS.dll. Selector'ы Objective-C вызываются через MessageUI-механизм. На Android Xamarin.Android использует Android Callable Wrappers (ACW) — JNI-мост между C# и Java/Kotlin. Kotlin-библиотеки оборачиваются через Android Bindings Library.

XAML и C# в Xamarin

XAML (eXtensible Application Markup Language) — декларативный язык для описания UI. В Xamarin.Forms XAML определяет структуру экрана: страницы (ContentPage), контейнеры (StackLayout, Grid, FlexLayout) и элементы (Label, Entry, Button, ListView). Код-бэкенд на C# обрабатывает события (Clicked, PropertyChanged) и управляет привязкой данных (Binding, Data Binding).

MVVM-паттерн — рекомендуемая архитектура для Xamarin.Forms. Модель (Model) содержит данные, ViewModel реализует INotifyPropertyChanged и команды (ICommand), View (XAML) связывается через BindingContext. Реализация ICommand через RelayCommand или Prism DelegateCommand обеспечивает тестирование ViewModel без UI-зависимостей. Библиотека Prism.Forms предоставляет NavigationService, DialogService и модульность.

Пример приложения на Xamarin.Forms

csharp
using Xamarin.Forms;

namespace XamarinApp
{
    public partial class MainPage : ContentPage
    {
        public MainPage()
        {
            InitializeComponent();
            
            var label = new Label
            {
                Text = "Hello, Xamarin!",
                FontSize = 24,
                VerticalOptions = LayoutOptions.Center,
                HorizontalOptions = LayoutOptions.Center
            };
            
            Content = new StackLayout
            {
                Children = { label }
            };
        }
    }
}

Преимущества и недостатки Xamarin

Единый язык C# — главное преимущество Xamarin. Разработчики C# и .NET могут создавать мобильные приложения без изучения Swift, Kotlin или Objective-C. Бизнес-логика, работа с сетью, базы данных (SQLite через ORM), шифрование и логирование пишутся один раз и переиспользуются на всех платформах. Это упрощает поддержку и тестирование кода.

Доступ к нативным API — Xamarin предоставляет 100% доступ к API iOS (Cocoa Touch) и Android (Android SDK) через биндинги. При выходе новой версии iOS или Android Microsoft выпускает обновлённые биндинги в течение 24–48 часов. Для отсутствующих биндингов (кастомные Objective-C или Kotlin библиотеки) создают Android Bindings Library или iOS Binding Library вручную.

Интеграция с экосистемой Microsoft — Xamarin поддерживает Visual Studio, Azure DevOps, App Center (CI/CD, тестирование, мониторинг) и Enterprise Mobility + Security (Intune, ADAL, MSAL). App Center Analytics и Crashes собирают данные с живых приложений. Visual Studio App Center автоматизирует сборку, тестирование на устройстве и публикацию в магазины приложений.

Недостатки Xamarin включают размер приложения — APK Xamarin.Forms с пустым экраном весит 25–35 МБ против 5–8 МБ у нативного Android-приложения. Время компиляции также выше: проект среднего размера собирается 2–5 минут против 30–60 секунд в нативной Android Studio. Mono Runtime добавляет 15–20 МБ к финальному бинарнику.

Второй недостаток — задержка новых API. Новые iOS/Android фичи появляются в нативной разработке сразу, а в Xamarin — через 1–2 месяца после выхода биндингов. iOS 17 SDK (2023) был полностью поддержан Xamarin через 3 недели после релиза. Для срочных проектов это может быть критичным. .NET MAUI решает эту проблему за счёт прямой интеграции с .NET 8.

КритерийXamarin.NET MAUI
ПлатформыiOS, Android, WindowsiOS, Android, Windows, macOS, Tizen
Базовый фреймворкMono + .NET Standard.NET 6+ (единый BCL)
UI-фреймворкXamarin.Forms.NET MAUI (преемник)
Режим поддержкиEnd of Life с 1 мая 2024Активная разработка Microsoft
Hot ReloadОграниченXAML Hot Reload + C# Reload

Переход на .NET MAUI

.NET MAUI (Multi-platform App UI) — это эволюция Xamarin.Forms, выпущенная Microsoft в 2022 году вместе с .NET 6. MAUI объединяет iOS, Android, Windows и macOS в единый проект без раздельных проектов для каждой платформы. В отличие от Xamarin.Forms, MAUI использует .NET 6+ BCL, а не Mono и .NET Standard.

Microsoft предоставляет инструмент миграции — .NET Upgrade Assistant для Visual Studio. Он анализирует Xamarin.Forms проект, заменяет пространства имён (Xamarin.Forms.* -> Microsoft.Maui.*), обновляет файлы .csproj (формат SDK-style) и мигрирует настройки Android и iOS в единую конфигурацию. После миграции проект может использовать все новые возможности .NET 8: Native AOT, CodeQL для безопасности и улучшенную производительность сборки.

Ключевое изменение — единый проект. Если Xamarin.Forms требовал 3 отдельных проекта (iOS, Android, .NET Standard), .NET MAUI использует один проект с папками Platforms/iOS, Platforms/Android, Platforms/Windows и Platforms/MacCatalyst. Каждая платформа компилируется из общего кода с платформенными условными директивами (#if ANDROID, #if IOS).

Для существующих кодовых баз .NET MAUI поддерживает обратную совместимость на 90% с Xamarin.Forms. API-совместимость охватывает ContentView, ContentPage, Shell, NavigationPage, DependencyService и MessagingCenter. Основные изменения затронули Device.StartTimer (заменён на IDispatcher), Platform API (вынесено в Microsoft.Maui.ApplicationModel) и устаревшие рендереры (заменены на Handlers).

Процесс миграции включает пять шагов. Первый — обновление Xamarin.Forms до последней версии 5.0. Второй — замена .NET Standard 2.0 на .NET 6 или 8. Третий — запуск Upgrade Assistant для автоматической конвертации проекта. Четвёртый — исправление платформенного кода в папках Platforms. Пятый — тестирование, особенно кастомных рендереров и платформенных сервисов.

Часто задаваемые вопросы

Что такое Xamarin?

Xamarin — это мобильная платформа Microsoft для разработки на C# под iOS, Android и Windows. Она использует Mono Runtime для компиляции общего кода и предоставляет два подхода: Xamarin.Forms (единый UI через XAML) и Xamarin.Native (нативные экраны платформы). С 2024 года Xamarin находится в режиме поддержки.

Чем Xamarin отличается от Flutter?

Xamarin использует C# и .NET, рендерит через нативные контролы (UIKit, View), но через биндинги. Flutter использует Dart и собственный движок рендеринга (Impeller), не полагаясь на нативные UI-компоненты. Flutter обеспечивает единый внешний вид на всех платформах, Xamarin — нативный вид каждой ОС. Flutter поддерживается Google и имеет 46% против 15% у Xamarin.

Стоит ли начинать новый проект на Xamarin в 2024 году?

Нет. Microsoft прекратила поддержку Xamarin 1 мая 2024 года. Все новые проекты следует запускать на .NET MAUI — его преемнике, который встроен в .NET 8 и будет получать обновления вместе с платформой .NET. Для существующих проектов на Xamarin.Forms рекомендуется мигрировать в течение 12–18 месяцев.

Xamarin.Forms медленнее нативного приложения?

Разница незначительна для обычных приложений. Xamarin.Forms добавляет 5–10% накладных расходов на рендеринг за счёт оберток Managed-Wrapper-Native. Проблемы возникают в тяжёлых списках (ListView против RecyclerView) и анимациях (средствами Xamarin.Forms без платформенных API). Рекомендуется использовать CollectionView (заменил ListView) и нативные анимации.

Можно ли использовать Kotlin-библиотеки в Xamarin?

Да, через Android Bindings Library. Этот тип проекта .NET оборачивает AAR или JAR-архив в C#-биндинги с автоматической генерацией классов и методов. Для Kotlin-библиотек требуются дополнительные обработчики для корутин и sealed class, которые настраиваются через Metadata.xml в Binding Library.

Итоги

  • Xamarin — платформа Microsoft для мобильной разработки на C#, основанная на Mono Runtime
  • Xamarin.Forms обеспечивает 90–95% общего кода через XAML-разметку с нативными рендерерами
  • Xamarin.Native даёт полный контроль над UI каждой платформы за счёт раздельных экранов
  • Недостатки: размер APK 25–35 МБ, время компиляции 2–5 минут, задержка новых API
  • .NET MAUI — преемник Xamarin.Forms с единым проектом, .NET 8 и поддержкой 5 платформ
  • Миграция на .NET MAUI выполняется через Upgrade Assistant за 1–2 дня для среднего проекта
  • Для новых проектов используйте .NET MAUI — Xamarin достиг End of Life в мае 2024 года

Мы разработаем мобильное приложение под ключ

IT Sectr создаёт приложения для iOS и Android для стартапов и бизнеса с 2017 года. Мы проконсультируем вас и предложим наилучшее решение.

Обсудить проект

Читайте также