Xamarin — vad det är, plattformar och utveckling i C#

Författare: IT Sectr Publicerad: 2026-05-01 Lästid: 9 min

Xamarin — är Microsofts plattform för att skapa mobila applikationer i C#, som tillkännagavs 2011. Enligt Microsoft Xamarin Documentation, 2024 gör Xamarin det möjligt att skriva applikationer för iOS, Android och Windows med en gemensam kodbas i C# och .NET, med Mono Runtime för kompilering till nativekod. Sedan 2024 har Xamarin.Forms ersatts av .NET MAUI.

Huvudpunkter

  • Xamarin — Microsofts mobila plattform för utveckling i C# på iOS, Android och Windows
  • Två tillvägagångssätt: Xamarin.Forms (gemensamt UI via XAML) och Xamarin.Native (naturskilda skärmar separat)
  • Mono Runtime kompilerar C# till native ARM-kod för iOS och Android
  • XAML — deklarativt märkspråk för att bygga användargränssnittet
  • .NET MAUI — efterträdaren till Xamarin.Forms, utgiven av Microsoft 2022

Vad är Xamarin

Xamarin — är en plattform baserad på .NET och Mono som gör det möjligt att använda C# för att skapa plattformsoberoende mobila applikationer. Företaget Xamarin grundades 2011 och förvärvades av Microsoft 2016 för 400 miljoner dollar. Efter förvärvet blev Xamarin en del av ekosystemet Visual Studio och Azure.

Innan förvärvet av Microsoft var Xamarin en kommersiell produkt med Enterprise-licens. Microsoft gjorde det gratis inom Visual Studio Community och öppnade även källkoden för Mono Runtime och SDK-bindningar. Detta ledde till ökad popularitet: år 2020 användes Xamarin i 15% av plattformsoberoende projekt, enligt SlashData-rapporten.

Huvudidén med Xamarin — uppdelning av kod i tre lager: gemensam affärslogik (C#, .NET Standard), plattformsprojekt (iOS, Android) och valfritt gemensamt UI via Xamarin.Forms. Detta tillvägagångssätt möjliggjorde återanvändning av upp till 75% av koden samtidigt som man behöll nativeåtkomst till varje plattforms API.

Xamarins historia och utveckling

Den första versionen Xamarin 1.0 släpptes 2012 med endast iOS-stöd. 2013 lades Android-stöd till. Xamarin.Forms — det deklarativa UI-ramverket — presenterades 2014 på Evolve-konferensen. Xamarin 4.0 (2016) lade till stöd för watchOS och tvOS. Xamarin 5.0 (2019) introducerade CSS-stilar och Material Design-temat.

Den senaste huvudversionen Xamarin.Forms 5.0 släpptes 2021. Microsoft meddelade att Xamarin går över till supportläge (slut på livslängd — 1 maj 2024) och rekommenderade övergång till .NET MAUI (Multi-platform App UI), som är en del av .NET 6+. Xamarin.Forms 5.0 får inte längre nya funktioner, endast kritiska säkerhetsuppdateringar.

Xamarin.Forms vs Xamarin.Native

Xamarin.Forms — är ett UI-ramverk som abstraherar gränssnittet genom en enhetlig uppsättning element. XAML-markup (ContentPage, StackLayout, Label, Button) mappas till nativa kontroller på varje plattform via renderare. Label översätts till UILabel på iOS och TextView på Android. Detta tillvägagångssätt ger upp till 95% gemensam UI-kod.

Xamarin.Native (även Xamarin.iOS och Xamarin.Android) — är ett tillvägagångssätt utan gemensamt UI. Utvecklaren skapar separata skärmar för iOS (Interface Builder eller Storyboard) och Android (AXML) med en C#-backend. Detta ger full kontroll över varje plattforms utseende, men ökar mängden dubblerad UI-kod till 50–60%.

Enligt Microsoft Developer Survey 2023 använde 70% av Xamarin-projekten Xamarin.Forms, 20% — Xamarin.Native med gemensamma tjänster, 10% — hybridmetod med anpassade renderare för plattformsoptimeringar.

Xamarin arkitektur

Xamarin arkitektur består av två nivåer. Den nedre nivån — Mono Runtime, som exekverar C# IL (Intermediate Language) på plattformen. Den övre nivån — Managed Callable Wrappers (MCW) för iOS och Android Bindings för Android, som ger tillgång till nativa API:er från hanterad C#-kod.

Mono Runtime och plattformsbindningar

Mono — är en open-source-implementering av .NET Framework. I Xamarin fungerar Mono som Common Language Runtime (CLR)-exekveringsmiljö, laddar C#-assemblier och kompilerar dem till maskinkod. På iOS kompilerar Mono Ahead-of-Time (AOT) — till ARM64-maskinkod, eftersom Apple förbjuder JIT-kompilering i användarapplikationer. På Android använder Mono JIT-kompilering med AOT-profilering.

iOS Bindings (Xamarin.iOS) — är C#-omslag runt Objective-C-körtiden. Varje UIKit-klass (UIView, UIViewController) representeras av en hanterad klass i Xamarin.iOS.dll-assemblier. Objective-C-väljare anropas via MessageUI-mekanismen. På Android använder Xamarin.Android Android Callable Wrappers (ACW) — JNI-brygga mellan C# och Java/Kotlin. Kotlin-bibliotek omsluts via Android Bindings Library.

XAML och C# i Xamarin

XAML (eXtensible Application Markup Language) — deklarativt språk för att beskriva UI. I Xamarin.Forms definierar XAML skärmstrukturen: sidor (ContentPage), behållare (StackLayout, Grid, FlexLayout) och element (Label, Entry, Button, ListView). Backend-kod i C# hanterar händelser (Clicked, PropertyChanged) och styr databindning (Binding, Data Binding).

MVVM-mönster — rekommenderad arkitektur för Xamarin.Forms. Model innehåller data, ViewModel implementerar INotifyPropertyChanged och kommandon (ICommand), View (XAML) kopplas via BindingContext. Implementering av ICommand via RelayCommand eller Prism DelegateCommand säkerställer testning av ViewModel utan UI-beroenden. Prism.Forms-biblioteket tillhandahåller NavigationService, DialogService och modularitet.

Exempel på applikation i 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 }
            };
        }
    }
}

Fördelar och nackdelar med Xamarin

Enhetligt språk C# — den främsta fördelen med Xamarin. C#- och .NET-utvecklare kan skapa mobila applikationer utan att lära sig Swift, Kotlin eller Objective-C. Affärslogik, nätverksarbete, databaser (SQLite via ORM), kryptering och loggning skrivs en gång och återanvänds på alla plattformar. Detta förenklar kodunderhåll och testning.

Åtkomst till nativa API:er — Xamarin ger 100% åtkomst till iOS (Cocoa Touch) och Android (Android SDK) API:er via bindningar. När en ny version av iOS eller Android släpps publicerar Microsoft uppdaterade bindningar inom 24–48 timmar. För saknade bindningar (anpassade Objective-C- eller Kotlin-bibliotek) skapas Android Bindings Library eller iOS Binding Library manuellt.

Integration med Microsoft-ekosystemet — Xamarin stöder Visual Studio, Azure DevOps, App Center (CI/CD, testning, övervakning) och Enterprise Mobility + Security (Intune, ADAL, MSAL). App Center Analytics och Crashes samlar in data från live-applikationer. Visual Studio App Center automatiserar byggning, testning på enhet och publicering till appbutiker.

Nackdelar med Xamarin inkluderar applikationsstorlek — en Xamarin.Forms APK med tom skärm väger 25–35 MB jämfört med 5–8 MB för en native Android-app. Kompileringstiden är också högre: ett medelstort projekt byggs på 2–5 minuter jämfört med 30–60 sekunder i native Android Studio. Mono Runtime lägger till 15–20 MB till den slutliga binärfilen.

Den andra nackdelen är fördröjning av nya API:er. Nya iOS/Android-funktioner dyker upp omedelbart i nativeutveckling, men i Xamarin — 1–2 månader efter att bindningar släppts. iOS 17 SDK (2023) stöddes fullt av Xamarin 3 veckor efter lanseringen. För brådskande projekt kan detta vara kritiskt. .NET MAUI löser detta problem genom direkt integration med .NET 8.

KriteriumXamarin.NET MAUI
PlattformariOS, Android, WindowsiOS, Android, Windows, macOS, Tizen
Grundläggande ramverkMono + .NET Standard.NET 6+ (enhetlig BCL)
UI-ramverkXamarin.Forms.NET MAUI (efterträdare)
SupportlägeSlut på livslängd från 1 maj 2024Aktiv utveckling av Microsoft
Hot ReloadBegränsadXAML Hot Reload + C# Reload

Övergång till .NET MAUI

.NET MAUI (Multi-platform App UI) — är en evolution av Xamarin.Forms, utgiven av Microsoft 2022 tillsammans med .NET 6. MAUI kombinerar iOS, Android, Windows och macOS i ett enda projekt utan separata projekt för varje plattform. Till skillnad från Xamarin.Forms använder MAUI .NET 6+ BCL, inte Mono och .NET Standard.

Microsoft tillhandahåller migreringsverktyg — .NET Upgrade Assistant för Visual Studio. Det analyserar Xamarin.Forms-projektet, ersätter namnrymder (Xamarin.Forms.* -> Microsoft.Maui.*), uppdaterar .csproj-filer (SDK-stilsformat) och migrerar Android- och iOS-inställningar till en enda konfiguration. Efter migrering kan projektet använda alla nya funktioner i .NET 8: Native AOT, CodeQL för säkerhet och förbättrad byggprestanda.

Nyckelförändring — enda projekt. Om Xamarin.Forms krävde 3 separata projekt (iOS, Android, .NET Standard) använder .NET MAUI ett enda projekt med mapparna Platforms/iOS, Platforms/Android, Platforms/Windows och Platforms/MacCatalyst. Varje plattform kompileras från gemensam kod med plattforms villkorliga direktiv (#if ANDROID, #if IOS).

För befintliga kodbaser ger .NET MAUI 90% bakåtkompatibilitet med Xamarin.Forms. API-kompatibilitet omfattar ContentView, ContentPage, Shell, NavigationPage, DependencyService och MessagingCenter. Huvudförändringarna påverkade Device.StartTimer (ersatt av IDispatcher), Platform API (flyttat till Microsoft.Maui.ApplicationModel) och föråldrade renderare (ersatta av Handlers).

Migreringsprocessen omfattar fem steg. Första — uppdatering av Xamarin.Forms till senaste version 5.0. Andra — ersättning av .NET Standard 2.0 med .NET 6 eller 8. Tredje — körning av Upgrade Assistant för automatisk konvertering av projektet. Fjärde — korrigering av plattformskod i Platforms-mapparna. Femte — testning, särskilt anpassade renderare och plattformstjänster.

Vanliga frågor

Vad är Xamarin?

Xamarin — är Microsofts mobila plattform för utveckling i C# på iOS, Android och Windows. Den använder Mono Runtime för kompilering av gemensam kod och erbjuder två tillvägagångssätt: Xamarin.Forms (enhetligt UI via XAML) och Xamarin.Native (plattformens naturskilda skärmar). Sedan 2024 är Xamarin i supportläge.

Hur skiljer sig Xamarin från Flutter?

Xamarin använder C# och .NET, renderar via nativa kontroller (UIKit, View), men via bindningar. Flutter använder Dart och sin egen renderingsmotor (Impeller) utan att förlita sig på nativa UI-komponenter. Flutter ger ett enhetligt utseende på alla plattformar, Xamarin — naturskilt utseende för varje operativsystem. Flutter stöds av Google och har 46% jämfört med 15% för Xamarin.

Är det värt att starta ett nytt projekt på Xamarin 2024?

Nej. Microsoft avslutade stödet för Xamarin den 1 maj 2024. Alla nya projekt bör startas på .NET MAUI — dess efterträdare, som är inbyggd i .NET 8 och kommer att få uppdateringar tillsammans med .NET-plattformen. För befintliga Xamarin.Forms-projekt rekommenderas migrering inom 12–18 månader.

Är Xamarin.Forms långsammare än en native-app?

Skillnaden är försumbar för vanliga applikationer. Xamarin.Forms lägger till 5–10% renderingsomkostnader på grund av Managed-Wrapper-Native-omslag. Problem uppstår i tunga listor (ListView vs RecyclerView) och animationer (med Xamarin.Forms-medel utan plattforms-API:er). Rekommenderad användning är CollectionView (ersatte ListView) och nativa animationer.

Kan Kotlin-bibliotek användas i Xamarin?

Ja, via Android Bindings Library. Denna typ av .NET-projekt omsluter AAR- eller JAR-arkiv i C#-bindningar med automatisk generering av klasser och metoder. För Kotlin-bibliotek krävs ytterligare hanterare för korutiner och sealed class, som konfigureras via Metadata.xml i Binding Library.

Sammanfattning

  • Xamarin — Microsofts plattform för mobil utveckling i C#, baserad på Mono Runtime
  • Xamarin.Forms ger 90–95% gemensam kod via XAML-markup med nativa renderare
  • Xamarin.Native ger full kontroll över varje plattforms UI genom separata skärmar
  • Nackdelar: APK-storlek 25–35 MB, kompileringstid 2–5 minuter, fördröjning av nya API:er
  • .NET MAUI — efterträdare till Xamarin.Forms med ett projekt, .NET 8 och stöd för 5 plattformar
  • Migrering till .NET MAUI via Upgrade Assistant på 1–2 dagar för ett medelstort projekt
  • För nya projekt använd .NET MAUI — Xamarin nådde slutet av livslängden i maj 2024

Vi utvecklar en mobil applikation nyckelfärdigt

IT Sectr skapar iOS- och Android-applikationer för startups och företag sedan 2017. Vi ger dig råd och föreslår den bästa lösningen.

Diskutera projektet

Läs också