Xamarin — шта је то, платформе и развој у C#

Аутор: IT Sectr Објављено: 2026-05-01 Време читања: 9 мин

Xamarin — је Мицрософт платформа за креирање мобилних апликација у језику 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 прелази у режим подршке (крај животног века — 1. мај 2024. године) и препоручио миграцију на .NET MAUI (Multi-platform App UI), који је део .NET 6+. Xamarin.Forms 5.0 више не добија нове функције, само критичне безбедносне исправке.

Xamarin.Forms против 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. Модел садржи податке, 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% приступ iOS (Cocoa Touch) и Android (Android SDK) API-јима кроз везивања. При изласку нове верзије 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 MB наспрам 5–8 MB код изворне Android апликације. Време компилације је такође веће: пројекат средње величине се изграђује 2–5 минута наспрам 30–60 секунди у изворном Android Studio. Mono Runtime додаје 15–20 MB финалној бинарној датотеци.

Други недостатак — кашњење нових 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 (наследник)
Режим подршкеКрај животног века од 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 MB, време компилације 2–5 минута, кашњење нових API-ја
  • .NET MAUI — наследник Xamarin.Forms-а са јединственим пројектом, .NET 8 и подршком за 5 платформи
  • Миграција на .NET MAUI се врши кроз Upgrade Assistant за 1–2 дана за средњи пројекат
  • За нове пројекте користите .NET MAUI — Xamarin је достигао крај животног века у мају 2024. године

Развићемо мобилну апликацију под кључ

IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.

Разговарајте о пројекту

Прочитајте такође