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.

До придбання 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 (Multi-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. Селектори 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 року. Ми проконсультуємо вас і запропонуємо найкраще рішення.

Обговорити проект

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