Xamarin — je platforma Microsoftu pro vytváření mobilních aplikací v jazyce C#, oznámená v roce 2011. Podle Microsoft Xamarin Documentation, 2024 umožňuje Xamarin psát aplikace pro iOS, Android a Windows se společnou kódovou základnou v C# a .NET, přičemž používá Mono Runtime pro kompilaci do nativního kódu. Od roku 2024 je Xamarin.Forms nahrazen .NET MAUI.
Hlavní body
Xamarin — je platforma založená na .NET a Mono, která umožňuje používat C# pro vytváření multiplatformních mobilních aplikací. Společnost Xamarin byla založena v roce 2011 a koupena Microsoftem v roce 2016 za 400 milionů dolarů. Po koupi se Xamarin stal součástí ekosystému Visual Studio a Azure.
Před koupí Microsoftem byl Xamarin komerčním produktem s licencí Enterprise. Microsoft jej zpřístupnil zdarma v rámci Visual Studio Community a také otevřel zdrojový kód Mono Runtime a SDK vazeb. To vedlo k růstu popularity: do roku 2020 byl Xamarin používán v 15% multiplatformních projektů podle zprávy SlashData.
Hlavní myšlenka Xamarin — rozdělení kódu do tří vrstev: společná obchodní logika (C#, .NET Standard), platformové projekty (iOS, Android) a volitelné společné UI přes Xamarin.Forms. Tento přístup umožňoval znovupoužití až 75% kódu při zachování nativního přístupu k API každé platformy.
První verze Xamarin 1.0 byla vydána v roce 2012 pouze s podporou iOS. V roce 2013 byla přidána podpora Android. Xamarin.Forms — deklarativní UI framework — byl představen v roce 2014 na konferenci Evolve. Xamarin 4.0 (2016) přidal podporu watchOS a tvOS. Xamarin 5.0 (2019) zavedl CSS styly a téma Material Design.
Poslední hlavní verze Xamarin.Forms 5.0 byla vydána v roce 2021. Microsoft oznámil, že Xamarin přechází do režimu podpory (konec životnosti — 1. května 2024) a doporučil migraci na .NET MAUI (Multi-platform App UI), který je součástí .NET 6+. Xamarin.Forms 5.0 již nedostává nové funkce, pouze kritické bezpečnostní opravy.
Xamarin.Forms — je UI framework, který abstrahuje rozhraní prostřednictvím jednotné sady prvků. Značky XAML (ContentPage, StackLayout, Label, Button) se mapují na nativní ovládací prvky každé platformy přes renderery. Label se překládá na UILabel v iOS a TextView v Android. Tento přístup poskytuje až 95% společného UI kódu.
Xamarin.Native (také Xamarin.iOS a Xamarin.Android) — je přístup bez společného UI. Vývojář vytváří samostatné obrazovky pro iOS (Interface Builder nebo Storyboard) a Android (AXML) s jedním C# backendem. To dává plnou kontrolu nad vzhledem každé platformy, ale zvyšuje objem duplicitního UI kódu na 50–60%.
Podle Microsoft Developer Survey 2023 používalo 70% projektů na Xamarin Xamarin.Forms, 20% — Xamarin.Native se společnými službami, 10% — hybridní přístup s vlastními renderery pro platformové optimalizace.
Architektura Xamarin se skládá ze dvou úrovní. Spodní úroveň — Mono Runtime, který spouští C# IL (Intermediate Language) na platformě. Horní úroveň — Managed Callable Wrappers (MCW) pro iOS a Android Bindings pro Android, které poskytují přístup k nativním API ze spravovaného kódu C#.
Mono — je open-source implementace .NET Framework. V Xamarin Mono funguje jako běhové prostředí Common Language Runtime (CLR), načítá sestavení C# a kompiluje je do strojového kódu. Na iOS Mono kompiluje Ahead-of-Time (AOT) — do strojového kódu ARM64, protože Apple zakazuje JIT kompilaci v uživatelských aplikacích. Na Android Mono používá JIT kompilaci s AOT profilováním.
iOS Bindings (Xamarin.iOS) — jsou C# obálky nad Objective-C runtime. Každá třída UIKit (UIView, UIViewController) je reprezentována spravovanou třídou v sestavení Xamarin.iOS.dll. Selektory Objective-C jsou volány mechanismem MessageUI. Na Android Xamarin.Android používá Android Callable Wrappers (ACW) — most JNI mezi C# a Java/Kotlin. Knihovny Kotlin jsou zabaleny přes Android Bindings Library.
XAML (eXtensible Application Markup Language) — deklarativní jazyk pro popis UI. V Xamarin.Forms XAML definuje strukturu obrazovky: stránky (ContentPage), kontejnery (StackLayout, Grid, FlexLayout) a prvky (Label, Entry, Button, ListView). Backendový kód v C# zpracovává události (Clicked, PropertyChanged) a spravuje datové vazby (Binding, Data Binding).
MVVM vzor — doporučená architektura pro Xamarin.Forms. Model obsahuje data, ViewModel implementuje INotifyPropertyChanged a příkazy (ICommand), View (XAML) se propojuje přes BindingContext. Implementace ICommand přes RelayCommand nebo Prism DelegateCommand zajišťuje testování ViewModel bez UI závislostí. Knihovna Prism.Forms poskytuje NavigationService, DialogService a modularitu.
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 }
};
}
}
}
Jednotný jazyk C# — hlavní výhoda Xamarin. Vývojáři C# a .NET mohou vytvářet mobilní aplikace bez učení Swift, Kotlin nebo Objective-C. Obchodní logika, práce se sítí, databáze (SQLite přes ORM), šifrování a logování se píší jednou a znovu používají na všech platformách. To zjednodušuje údržbu a testování kódu.
Přístup k nativním API — Xamarin poskytuje 100% přístup k API iOS (Cocoa Touch) a Android (Android SDK) přes vazby. Při vydání nové verze iOS nebo Android Microsoft zveřejňuje aktualizované vazby do 24–48 hodin. Pro chybějící vazby (vlastní knihovny Objective-C nebo Kotlin) se ručně vytváří Android Bindings Library nebo iOS Binding Library.
Integrace s ekosystémem Microsoft — Xamarin podporuje Visual Studio, Azure DevOps, App Center (CI/CD, testování, monitorování) a Enterprise Mobility + Security (Intune, ADAL, MSAL). App Center Analytics a Crashes sbírají data z živých aplikací. Visual Studio App Center automatizuje sestavení, testování na zařízení a publikování do obchodů s aplikacemi.
Nevýhody Xamarin zahrnují velikost aplikace — APK Xamarin.Forms s prázdnou obrazovkou váží 25–35 MB oproti 5–8 MB u nativní Android aplikace. Doba kompilace je také vyšší: projekt střední velikosti se sestaví za 2–5 minut oproti 30–60 sekundám v nativním Android Studio. Mono Runtime přidává 15–20 MB k výslednému binárnímu souboru.
Druhou nevýhodou je zpoždění nových API. Nové funkce iOS/Android se objevují okamžitě v nativním vývoji, ale v Xamarin — 1–2 měsíce po vydání vazeb. iOS 17 SDK (2023) byl plně podporován Xamarinem 3 týdny po vydání. Pro naléhavé projekty to může být kritické. .NET MAUI řeší tento problém přímou integrací s .NET 8.
| Kritérium | Xamarin | .NET MAUI |
|---|---|---|
| Platformy | iOS, Android, Windows | iOS, Android, Windows, macOS, Tizen |
| Základní framework | Mono + .NET Standard | .NET 6+ (jednotné BCL) |
| UI framework | Xamarin.Forms | .NET MAUI (nástupce) |
| Režim podpory | Konec životnosti od 1. května 2024 | Aktivní vývoj Microsoftu |
| Hot Reload | Omezený | XAML Hot Reload + C# Reload |
.NET MAUI (Multi-platform App UI) — je evoluce Xamarin.Forms, vydaná Microsoftem v roce 2022 spolu s .NET 6. MAUI spojuje iOS, Android, Windows a macOS do jednoho projektu bez samostatných projektů pro každou platformu. Na rozdíl od Xamarin.Forms používá MAUI .NET 6+ BCL, nikoli Mono a .NET Standard.
Microsoft poskytuje nástroj pro migraci — .NET Upgrade Assistant pro Visual Studio. Analyzuje projekt Xamarin.Forms, nahrazuje jmenné prostory (Xamarin.Forms.* -> Microsoft.Maui.*), aktualizuje soubory .csproj (formát SDK-style) a migruje nastavení Android a iOS do jedné konfigurace. Po migraci může projekt využívat všechny nové možnosti .NET 8: Native AOT, CodeQL pro bezpečnost a vylepšený výkon sestavení.
Klíčová změna — jeden projekt. Zatímco Xamarin.Forms vyžadoval 3 samostatné projekty (iOS, Android, .NET Standard), .NET MAUI používá jeden projekt se složkami Platforms/iOS, Platforms/Android, Platforms/Windows a Platforms/MacCatalyst. Každá platforma se kompiluje ze společného kódu s platformovými podmíněnými direktivami (#if ANDROID, #if IOS).
Pro existující kódové základny poskytuje .NET MAUI 90% zpětnou kompatibilitu s Xamarin.Forms. Kompatibilita API zahrnuje ContentView, ContentPage, Shell, NavigationPage, DependencyService a MessagingCenter. Hlavní změny se dotkly Device.StartTimer (nahrazen IDispatcher), Platform API (přesunuto do Microsoft.Maui.ApplicationModel) a zastaralých rendererů (nahrazeny Handlers).
Proces migrace zahrnuje pět kroků. První — aktualizace Xamarin.Forms na nejnovější verzi 5.0. Druhý — nahrazení .NET Standard 2.0 za .NET 6 nebo 8. Třetí — spuštění Upgrade Assistant pro automatickou konverzi projektu. Čtvrtý — oprava platformového kódu ve složkách Platforms. Pátý — testování, zejména vlastních rendererů a platformových služeb.
Často kladené otázky
Xamarin — je mobilní platforma Microsoftu pro vývoj v C# na iOS, Android a Windows. Používá Mono Runtime pro kompilaci společného kódu a nabízí dva přístupy: Xamarin.Forms (jednotné UI přes XAML) a Xamarin.Native (nativní obrazovky platformy). Od roku 2024 je Xamarin v režimu podpory.
Xamarin používá C# a .NET, renderuje přes nativní ovládací prvky (UIKit, View), ale přes vazby. Flutter používá Dart a vlastní renderovací engine (Impeller), nespoléhá se na nativní UI komponenty. Flutter poskytuje jednotný vzhled na všech platformách, Xamarin — nativní vzhled každého operačního systému. Flutter je podporován Googlem a má 46% oproti 15% u Xamarin.
Ne. Microsoft ukončil podporu Xamarin 1. května 2024. Všechny nové projekty by měly být spouštěny na .NET MAUI — jeho nástupci, který je vestavěn do .NET 8 a bude dostávat aktualizace spolu s platformou .NET. Pro stávající projekty na Xamarin.Forms se doporučuje migrace do 12–18 měsíců.
Rozdíl je zanedbatelný pro běžné aplikace. Xamarin.Forms přidává 5–10% režii renderování kvůli obálkám Managed-Wrapper-Native. Problémy vznikají u těžkých seznamů (ListView vs RecyclerView) a animací (prostředky Xamarin.Forms bez platformových API). Doporučuje se používat CollectionView (nahradil ListView) a nativní animace.
Ano, přes Android Bindings Library. Tento typ projektu .NET zabaluje archiv AAR nebo JAR do C# vazeb s automatickým generováním tříd a metod. Pro knihovny Kotlin jsou vyžadovány další obslužné rutiny pro korutiny a sealed class, které se konfigurují přes Metadata.xml v Binding Library.
Shrnutí
Vyvineme mobilní aplikaci na klíč
IT Sectr vytváří aplikace pro iOS a Android pro startupy a podniky od roku 2017. Poradíme vám a navrhneme nejlepší řešení.
Přečtěte si také