Xamarin — mi ez, platformok és fejlesztés C#-ban

Szerző: IT Sectr Megjelenés: 2026-05-01 Olvasási idő: 9 perc

Xamarin — a Microsoft platformja mobilalkalmazások létrehozására C# nyelven, amelyet 2011-ben jelentettek be. A Microsoft Xamarin Documentation, 2024 szerint a Xamarin lehetővé teszi alkalmazások írását iOS, Android és Windows platformokra közös C# és .NET kódbázissal, a Mono Runtime segítségével natív kódra fordítva. 2024-től a Xamarin.Forms-t a .NET MAUI váltotta fel.

Főbb pontok

  • Xamarin — a Microsoft mobil platformja C# fejlesztéshez iOS, Android és Windows rendszereken
  • Két megközelítés: Xamarin.Forms (közös UI XAML-en keresztül) és Xamarin.Native (natív képernyők külön)
  • A Mono Runtime C#-t natív ARM kódra fordít iOS és Android rendszerekhez
  • XAML — deklaratív jelölőnyelv a felhasználói felület építéséhez
  • .NET MAUI — a Xamarin.Forms utódja, amelyet a Microsoft 2022-ben adott ki

Mi az a Xamarin

Xamarin — egy .NET-re és Mono-ra épülő platform, amely lehetővé teszi a C# használatát cross-platform mobilalkalmazások létrehozásához. A Xamarin céget 2011-ben alapították, és 2016-ban vásárolta fel a Microsoft 400 millió dollárért. A felvásárlás után a Xamarin a Visual Studio és Azure ökoszisztéma részévé vált.

A Microsoft általi felvásárlás előtt a Xamarin egy kereskedelmi termék volt Enterprise licenccel. A Microsoft ingyenessé tette a Visual Studio Community részeként, és megnyitotta a Mono Runtime és az SDK kötések forráskódját is. Ez a népszerűség növekedéséhez vezetett: 2020-ra a Xamarin-t a cross-platform projektek 15%-ában használták a SlashData jelentése szerint.

A Xamarin fő gondolata — a kód három rétegre osztása: közös üzleti logika (C#, .NET Standard), platformprojektek (iOS, Android) és opcionális közös UI a Xamarin.Forms-on keresztül. Ez a megközelítés lehetővé tette a kód akár 75%-ának újrafelhasználását, miközben megőrizte a natív hozzáférést az egyes platformok API-jaihoz.

A Xamarin története és fejlődése

A Xamarin 1.0 első verziója 2012-ben jelent meg csak iOS támogatással. 2013-ban került hozzáadásra az Android támogatás. A Xamarin.Forms — deklaratív UI keretrendszer — 2014-ben mutatkozott be az Evolve konferencián. A Xamarin 4.0 (2016) watchOS és tvOS támogatást adott hozzá. A Xamarin 5.0 (2019) CSS stílusokat és Material Design témát vezetett be.

A Xamarin.Forms 5.0 utolsó fő verziója 2021-ben jelent meg. A Microsoft bejelentette, hogy a Xamarin támogatási módba lép (életciklus vége — 2024. május 1.), és a .NET 6+ részét képező .NET MAUI (Multi-platform App UI) alkalmazásra való áttérést javasolta. A Xamarin.Forms 5.0 már nem kap új funkciókat, csak kritikus biztonsági javításokat.

Xamarin.Forms vs Xamarin.Native

Xamarin.Forms — egy UI keretrendszer, amely egységes elemekészleten keresztül absztrahálja a felületet. A XAML jelölőnyelv (ContentPage, StackLayout, Label, Button) renderelőkön keresztül képeződik le az egyes platformok natív vezérlőire. A Label iOS-en UILabel-lé, Androidon TextView-vé alakul. Ez a megközelítés akár 95% közös UI kódot biztosít.

Xamarin.Native (szintén Xamarin.iOS és Xamarin.Android) — egy közös UI nélküli megközelítés. A fejlesztő külön képernyőket hoz létre iOS (Interface Builder vagy Storyboard) és Android (AXML) rendszerekhez, egyetlen C# backendet használva. Ez teljes kontrollt ad az egyes platformok megjelenése felett, de a duplikált UI kód mennyiségét 50–60%-ra növeli.

A Microsoft Developer Survey 2023 szerint a Xamarin projektek 70%-a Xamarin.Forms-t, 20%-a Xamarin.Native-t közös szolgáltatásokkal, 10%-a hibrid megközelítést használt egyedi renderelőkkel platformoptimalizálásokhoz.

A Xamarin architektúrája

A Xamarin architektúrája két szintből áll. Az alsó szint — a Mono Runtime, amely a C# IL (Intermediate Language) kódot futtatja a platformon. A felső szint — Managed Callable Wrappers (MCW) iOS-hez és Android Bindings Androidhoz, amelyek hozzáférést biztosítanak a natív API-okhoz felügyelt C# kódból.

Mono Runtime és platform kötések

Mono — a .NET Framework nyílt forráskódú implementációja. Xamarin-ban a Mono Common Language Runtime (CLR) végrehajtási környezetként működik, betölti a C# szerelvényeket és gépi kódra fordítja őket. iOS-en a Mono Ahead-of-Time (AOT) módon fordít — ARM64 gépi kódra, mivel az Apple tiltja a JIT fordítást a felhasználói alkalmazásokban. Androidon a Mono JIT fordítást használ AOT profilozással.

iOS Bindings (Xamarin.iOS) — C# burkolók az Objective-C futási környezet felett. Minden UIKit osztály (UIView, UIViewController) egy felügyelt osztállyal van reprezentálva a Xamarin.iOS.dll szerelvényben. Az Objective-C szelektorok a MessageUI mechanizmuson keresztül hívódnak meg. Androidon a Xamarin.Android Android Callable Wrappers-t (ACW) használ — JNI hidat C# és Java/Kotlin között. A Kotlin könyvtárak az Android Bindings Library-n keresztül vannak becsomagolva.

XAML és C# a Xamarin-ban

XAML (eXtensible Application Markup Language) — deklaratív nyelv a UI leírásához. Xamarin.Forms-ban a XAML meghatározza a képernyő szerkezetét: oldalak (ContentPage), konténerek (StackLayout, Grid, FlexLayout) és elemek (Label, Entry, Button, ListView). A C# backend kód eseményeket (Clicked, PropertyChanged) kezel és adatkötést (Binding, Data Binding) irányít.

MVVM minta — ajánlott architektúra Xamarin.Forms-hoz. A Model adatokat tartalmaz, a ViewModel megvalósítja az INotifyPropertyChanged és parancsokat (ICommand), a View (XAML) a BindingContext-en keresztül kapcsolódik. Az ICommand megvalósítása RelayCommand vagy Prism DelegateCommand segítségével biztosítja a ViewModel tesztelését UI függőségek nélkül. A Prism.Forms könyvtár NavigationService-t, DialogService-t és modularitást biztosít.

Példa alkalmazásra Xamarin.Forms-ban

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 }
            };
        }
    }
}

A Xamarin előnyei és hátrányai

Egységes C# nyelv — a Xamarin fő előnye. A C# és .NET fejlesztők mobilalkalmazásokat hozhatnak létre anélkül, hogy megtanulnák a Swift, Kotlin vagy Objective-C nyelveket. Az üzleti logika, hálózati munka, adatbázisok (SQLite ORM-en keresztül), titkosítás és naplózás egyszer íródik és újrafelhasználható minden platformon. Ez egyszerűsíti a kód karbantartását és tesztelését.

Hozzáférés natív API-okhoz — a Xamarin 100%-os hozzáférést biztosít az iOS (Cocoa Touch) és Android (Android SDK) API-okhoz kötéseken keresztül. Amikor új iOS vagy Android verzió jelenik meg, a Microsoft 24–48 órán belül kiadja a frissített kötéseket. Hiányzó kötésekhez (egyedi Objective-C vagy Kotlin könyvtárak) manuálisan hozható létre Android Bindings Library vagy iOS Binding Library.

Integráció a Microsoft ökoszisztémával — a Xamarin támogatja a Visual Studio-t, Azure DevOps-t, App Center-t (CI/CD, tesztelés, monitorozás) és az Enterprise Mobility + Security-t (Intune, ADAL, MSAL). Az App Center Analytics és Crashes adatokat gyűjt az élő alkalmazásokból. A Visual Studio App Center automatizálja a buildelést, eszközön történő tesztelést és az alkalmazásboltokba történő publikálást.

Hátrányok — a Xamarin hátrányai közé tartozik az alkalmazás mérete: egy üres képernyős Xamarin.Forms APK 25–35 MB súlyú, szemben a natív Android alkalmazás 5–8 MB-jával. A fordítási idő is magasabb: egy közepes méretű projekt 2–5 perc alatt épül fel, szemben a natív Android Studio 30–60 másodpercével. A Mono Runtime 15–20 MB-ot ad a végső bináris fájlhoz.

A második hátrány — az új API-ok késleltetése. Az új iOS/Android funkciók azonnal megjelennek a natív fejlesztésben, de a Xamarin-ban — 1–2 hónappal a kötések kiadása után. Az iOS 17 SDK (2023) teljes mértékben támogatott volt a Xamarin által 3 héttel a megjelenés után. Sürgős projekteknél ez kritikus lehet. A .NET MAUI ezt a problémát a .NET 8-cal való közvetlen integrációval oldja meg.

SzempontXamarin.NET MAUI
PlatformokiOS, Android, WindowsiOS, Android, Windows, macOS, Tizen
Alap keretrendszerMono + .NET Standard.NET 6+ (egységes BCL)
UI keretrendszerXamarin.Forms.NET MAUI (utód)
Támogatási módÉletciklus vége 2024. május 1-tőlAktív Microsoft fejlesztés
Hot ReloadKorlátozottXAML Hot Reload + C# Reload

Áttérés a .NET MAUI-ra

.NET MAUI (Multi-platform App UI) — a Xamarin.Forms továbbfejlesztése, amelyet a Microsoft 2022-ben adott ki a .NET 6-tal együtt. A MAUI egyesíti az iOS, Android, Windows és macOS platformokat egyetlen projektben, anélkül hogy külön projektekre lenne szükség az egyes platformokhoz. A Xamarin.Forms-szal ellentétben a MAUI .NET 6+ BCL-t használ, nem Mono-t és .NET Standard-t.

A Microsoft migrációs eszközt biztosít — .NET Upgrade Assistant-t a Visual Studio-hoz. Ez elemzi a Xamarin.Forms projektet, lecseréli a névtereket (Xamarin.Forms.* -> Microsoft.Maui.*), frissíti a .csproj fájlokat (SDK-stílusú formátum) és egyetlen konfigurációba migrálja az Android és iOS beállításokat. A migráció után a projekt használhatja a .NET 8 összes új képességét: Native AOT, CodeQL biztonsághoz és jobb build teljesítményt.

Kulcsfontosságú változás — egységes projekt. Míg a Xamarin.Forms 3 külön projektet (iOS, Android, .NET Standard) igényelt, a .NET MAUI egyetlen projektet használ Platforms/iOS, Platforms/Android, Platforms/Windows és Platforms/MacCatalyst mappákkal. Az egyes platformok közös kódból fordulnak platform feltételes direktívákkal (#if ANDROID, #if IOS).

Meglévő kódbázisok esetén a .NET MAUI 90%-os visszafelé kompatibilitást biztosít a Xamarin.Forms-szal. Az API kompatibilitás kiterjed a ContentView, ContentPage, Shell, NavigationPage, DependencyService és MessagingCenter elemekre. A fő változások a Device.StartTimer-t (lecserélve IDispatcher-re), a Platform API-t (áthelyezve Microsoft.Maui.ApplicationModel-be) és az elavult renderelőket (lecserélve Handlers-re) érintették.

A migráció folyamata öt lépésből áll. Első — a Xamarin.Forms frissítése a legújabb 5.0 verzióra. Második — a .NET Standard 2.0 cseréje .NET 6 vagy 8 verzióra. Harmadik — az Upgrade Assistant futtatása a projekt automatikus konvertálásához. Negyedik — a platformkód javítása a Platforms mappákban. Ötödik — tesztelés, különösen az egyedi renderelők és platformszolgáltatások esetében.

Gyakran ismételt kérdések

Mi az a Xamarin?

Xamarin — a Microsoft mobil platformja C# fejlesztéshez iOS, Android és Windows rendszereken. A Mono Runtime-t használja a közös kód fordításához, és két megközelítést kínál: Xamarin.Forms (egységes UI XAML-en keresztül) és Xamarin.Native (a platform natív képernyői). 2024-től a Xamarin támogatási módban van.

Miben különbözik a Xamarin a Flutter-től?

Xamarin C#-t és .NET-et használ, natív vezérlőkön (UIKit, View) keresztül renderel, de kötéseken keresztül. A Flutter Dart-ot és saját renderelő motort (Impeller) használ, nem támaszkodva natív UI komponensekre. A Flutter egységes megjelenést biztosít minden platformon, a Xamarin — az egyes operációs rendszerek natív megjelenését. A Flutter-t a Google támogatja, és 46%-os részesedéssel rendelkezik szemben a Xamarin 15%-ával.

Érdemes-e új projektet kezdeni Xamarin-ban 2024-ben?

Nem. A Microsoft megszüntette a támogatást a Xamarin számára 2024. május 1-jén. Minden új projektet a .NET MAUI-n — az utódján kell indítani, amely beépül a .NET 8-ba és frissítéseket kap a .NET platformmal együtt. Meglévő Xamarin.Forms projektek esetén a migráció 12–18 hónapon belül javasolt.

Lassabb-e a Xamarin.Forms, mint a natív alkalmazás?

A különbség elenyésző a hétköznapi alkalmazásoknál. A Xamarin.Forms 5–10% renderelési többletterhelést ad a Managed-Wrapper-Native burkolók miatt. Problémák a nehéz listáknál (ListView vs RecyclerView) és animációknál (Xamarin.Forms eszközökkel platform API-k nélkül) merülnek fel. Ajánlott a CollectionView (lecserélte a ListView-t) és a natív animációk használata.

Használhatóak Kotlin könyvtárak a Xamarin-ban?

Igen, az Android Bindings Library segítségével. Ez a .NET projekt típus AAR vagy JAR archívumot csomagol be C# kötésekbe osztályok és metódusok automatikus generálásával. Kotlin könyvtárakhoz további kezelők szükségesek a korutinok és sealed class-ok számára, amelyek a Metadata.xml-en keresztül konfigurálhatók a Binding Library-ban.

Összefoglalás

  • Xamarin — Microsoft platform mobil fejlesztéshez C#-ban, Mono Runtime alapokon
  • Xamarin.Forms 90–95% közös kódot biztosít XAML jelöléssel, natív renderelőkkel
  • Xamarin.Native teljes kontrollt ad az egyes platformok UI-ja felett külön képernyők segítségével
  • Hátrányok: APK méret 25–35 MB, fordítási idő 2–5 perc, új API-ok késleltetése
  • .NET MAUI — a Xamarin.Forms utódja egységes projekttel, .NET 8-cal és 5 platform támogatással
  • Migráció a .NET MAUI-ra Upgrade Assistant segítségével 1–2 nap alatt elvégezhető közepes projekt esetén
  • Új projektekhez használja a .NET MAUI-t — a Xamarin életciklusa 2024 májusában véget ért

Kulcsrakész mobilalkalmazást fejlesztünk

Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.

Projekt megbeszélése

Olvassa el is