Xamarin — este platforma Microsoft pentru crearea de aplicații mobile în limbajul C#, anunțată în 2011. Potrivit Microsoft Xamarin Documentation, 2024, Xamarin permite scrierea de aplicații pentru iOS, Android și Windows cu o bază de cod comună în C# și .NET, folosind Mono Runtime pentru compilarea în cod nativ. Din 2024, Xamarin.Forms a fost înlocuit cu .NET MAUI.
Puncte principale
Xamarin — este o platformă bazată pe .NET și Mono care permite utilizarea C# pentru crearea de aplicații mobile cross-platform. Compania Xamarin a fost fondată în 2011 și achiziționată de Microsoft în 2016 pentru 400 de milioane de dolari. După achiziție, Xamarin a devenit parte a ecosistemului Visual Studio și Azure.
Înainte de achiziția de către Microsoft, Xamarin era un produs comercial cu licență Enterprise. Microsoft l-a făcut gratuit în cadrul Visual Studio Community și a deschis codul sursă al Mono Runtime și al bindingurilor SDK. Aceasta a dus la creșterea popularității: până în 2020, Xamarin era utilizat în 15% din proiectele cross-platform, conform raportului SlashData.
Ideea principală a Xamarin — împărțirea codului în trei straturi: logică de afaceri comună (C#, .NET Standard), proiecte platformă (iOS, Android) și UI comun opțional prin Xamarin.Forms. Această abordare permitea reutilizarea a până la 75% din cod, păstrând accesul nativ la API-ul fiecărei platforme.
Prima versiune Xamarin 1.0 a fost lansată în 2012 cu suport doar pentru iOS. În 2013 s-a adăugat suportul pentru Android. Xamarin.Forms — framework-ul UI declarativ — a fost prezentat în 2014 la conferința Evolve. Xamarin 4.0 (2016) a inclus suport pentru watchOS și tvOS. Xamarin 5.0 (2019) a introdus stiluri CSS și tema Material Design.
Ultima versiune majoră Xamarin.Forms 5.0 a fost lansată în 2021. Microsoft a anunțat că Xamarin trece în modul de suport (sfârșit de viață — 1 mai 2024) și a recomandat migrarea la .NET MAUI (Multi-platform App UI), care face parte din .NET 6+. Xamarin.Forms 5.0 nu mai primește funcții noi, ci doar remedieri critice de securitate.
Xamarin.Forms — este un framework UI care abstrage interfața printr-un set unitar de elemente. Markup-ul XAML (ContentPage, StackLayout, Label, Button) este mapat pe controalele native ale fiecărei platforme prin intermediul renderelor. Label este tradus în UILabel pe iOS și TextView pe Android. Această abordare asigură până la 95% cod UI comun.
Xamarin.Native (de asemenea Xamarin.iOS și Xamarin.Android) — este o abordare fără UI comun. Dezvoltatorul creează ecrane separate pentru iOS (Interface Builder sau Storyboard) și Android (AXML), folosind un singur backend C#. Aceasta oferă control total asupra aspectului fiecărei platforme, dar crește volumul de cod UI duplicat la 50–60%.
Conform Microsoft Developer Survey 2023, 70% din proiectele Xamarin foloseau Xamarin.Forms, 20% — Xamarin.Native cu servicii comune, 10% — abordare hibridă cu rendere personalizate pentru optimizări platformă.
Arhitectura Xamarin constă din două niveluri. Nivelul inferior — Mono Runtime, care execută C# IL (Intermediate Language) pe platformă. Nivelul superior — Managed Callable Wrappers (MCW) pentru iOS și Android Bindings pentru Android, care asigură accesul la API-urile native din codul gestionat C#.
Mono — este o implementare open-source a .NET Framework. În Xamarin, Mono funcționează ca mediu de execuție Common Language Runtime (CLR), încărcând ansamblurile C# și compilându-le în cod mașină. Pe iOS, Mono compilează Ahead-of-Time (AOT) — în cod mașină ARM64, deoarece Apple interzice compilarea JIT în aplicațiile utilizator. Pe Android, Mono utilizează compilarea JIT cu profilare AOT.
iOS Bindings (Xamarin.iOS) — sunt învelișuri C# peste runtime-ul Objective-C. Fiecare clasă UIKit (UIView, UIViewController) este reprezentată de o clasă gestionată în ansamblul Xamarin.iOS.dll. Selectorii Objective-C sunt apelați prin mecanismul MessageUI. Pe Android, Xamarin.Android utilizează Android Callable Wrappers (ACW) — puntea JNI între C# și Java/Kotlin. Bibliotecile Kotlin sunt învelite prin Android Bindings Library.
XAML (eXtensible Application Markup Language) — limbaj declarativ pentru descrierea UI. În Xamarin.Forms, XAML definește structura ecranului: pagini (ContentPage), containere (StackLayout, Grid, FlexLayout) și elemente (Label, Entry, Button, ListView). Codul backend în C# gestionează evenimentele (Clicked, PropertyChanged) și controlează legarea datelor (Binding, Data Binding).
Modelul MVVM — arhitectura recomandată pentru Xamarin.Forms. Modelul conține datele, ViewModel implementează INotifyPropertyChanged și comenzi (ICommand), View (XAML) se leagă prin BindingContext. Implementarea ICommand prin RelayCommand sau Prism DelegateCommand asigură testarea ViewModel fără dependențe UI. Biblioteca Prism.Forms oferă NavigationService, DialogService și modularitate.
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 }
};
}
}
}
Un singur limbaj C# — principalul avantaj al Xamarin. Dezvoltatorii C# și .NET pot crea aplicații mobile fără a învăța Swift, Kotlin sau Objective-C. Logica de afaceri, lucrul cu rețeaua, bazele de date (SQLite prin ORM), criptarea și logarea se scriu o singură dată și se reutilizează pe toate platformele. Acest lucru simplifică întreținerea și testarea codului.
Acces la API-uri native — Xamarin oferă acces 100% la API-urile iOS (Cocoa Touch) și Android (Android SDK) prin bindinguri. La lansarea unei noi versiuni iOS sau Android, Microsoft publică bindinguri actualizate în 24–48 de ore. Pentru bindingurile lipsă (biblioteci personalizate Objective-C sau Kotlin) se creează manual Android Bindings Library sau iOS Binding Library.
Integrare cu ecosistemul Microsoft — Xamarin suportă Visual Studio, Azure DevOps, App Center (CI/CD, testare, monitorizare) și Enterprise Mobility + Security (Intune, ADAL, MSAL). App Center Analytics și Crashes colectează date de la aplicațiile live. Visual Studio App Center automatizează construirea, testarea pe dispozitiv și publicarea în magazinele de aplicații.
Dezavantaje Xamarin includ dimensiunea aplicației — APK Xamarin.Forms cu ecran gol cântărește 25–35 MB față de 5–8 MB pentru o aplicație Android nativă. Timpul de compilare este de asemenea mai mare: un proiect de dimensiune medie se construiește în 2–5 minute față de 30–60 de secunde în Android Studio nativ. Mono Runtime adaugă 15–20 MB la fișierul binar final.
Al doilea dezavantaj — întârzierea noilor API-uri. Noile funcții iOS/Android apar imediat în dezvoltarea nativă, iar în Xamarin — la 1–2 luni după lansarea bindingurilor. iOS 17 SDK (2023) a fost complet suportat de Xamarin la 3 săptămâni după lansare. Pentru proiecte urgente, acest lucru poate fi critic. .NET MAUI rezolvă această problemă prin integrarea directă cu .NET 8.
| Criteriu | Xamarin | .NET MAUI |
|---|---|---|
| Platforme | iOS, Android, Windows | iOS, Android, Windows, macOS, Tizen |
| Framework de bază | Mono + .NET Standard | .NET 6+ (BCL unificat) |
| Framework UI | Xamarin.Forms | .NET MAUI (succesor) |
| Mod de suport | Sfârșit de viață de la 1 mai 2024 | Dezvoltare activă Microsoft |
| Hot Reload | Limitat | XAML Hot Reload + C# Reload |
.NET MAUI (Multi-platform App UI) — este evoluția Xamarin.Forms, lansată de Microsoft în 2022 împreună cu .NET 6. MAUI combină iOS, Android, Windows și macOS într-un singur proiect fără proiecte separate pentru fiecare platformă. Spre deosebire de Xamarin.Forms, MAUI utilizează .NET 6+ BCL, nu Mono și .NET Standard.
Microsoft oferă instrumentul de migrare — .NET Upgrade Assistant pentru Visual Studio. Acesta analizează proiectul Xamarin.Forms, înlocuiește spațiile de nume (Xamarin.Forms.* -> Microsoft.Maui.*), actualizează fișierele .csproj (format SDK-style) și migrează setările Android și iOS într-o configurație unică. După migrare, proiectul poate folosi toate noile capacități ale .NET 8: Native AOT, CodeQL pentru securitate și performanță îmbunătățită a compilării.
Schimbarea cheie — proiect unic. Dacă Xamarin.Forms necesita 3 proiecte separate (iOS, Android, .NET Standard), .NET MAUI utilizează un singur proiect cu folderele Platforms/iOS, Platforms/Android, Platforms/Windows și Platforms/MacCatalyst. Fiecare platformă este compilată din cod comun cu directive condiționale de platformă (#if ANDROID, #if IOS).
Pentru bazele de cod existente, .NET MAUI asigură compatibilitate inversă de 90% cu Xamarin.Forms. Compatibilitatea API acoperă ContentView, ContentPage, Shell, NavigationPage, DependencyService și MessagingCenter. Schimbările principale au afectat Device.StartTimer (înlocuit cu IDispatcher), Platform API (mutat în Microsoft.Maui.ApplicationModel) și renderele învechite (înlocuite cu Handlers).
Procesul de migrare include cinci pași. Primul — actualizarea Xamarin.Forms la ultima versiune 5.0. Al doilea — înlocuirea .NET Standard 2.0 cu .NET 6 sau 8. Al treilea — rularea Upgrade Assistant pentru conversia automată a proiectului. Al patrulea — corectarea codului de platformă în folderele Platforms. Al cincilea — testarea, în special a renderelor personalizate și a serviciilor de platformă.
Întrebări frecvente
Xamarin — este platforma mobilă Microsoft pentru dezvoltarea în C# pe iOS, Android și Windows. Utilizează Mono Runtime pentru compilarea codului comun și oferă două abordări: Xamarin.Forms (UI unificat prin XAML) și Xamarin.Native (ecrane native ale platformei). Din 2024, Xamarin este în modul de suport.
Xamarin utilizează C# și .NET, rederizând prin controale native (UIKit, View), dar prin bindinguri. Flutter utilizează Dart și propriul motor de randare (Impeller), fără a se baza pe componente UI native. Flutter asigură un aspect uniform pe toate platformele, Xamarin — aspectul nativ al fiecărui sistem de operare. Flutter este suportat de Google și are 46% față de 15% pentru Xamarin.
Nu. Microsoft a încetat suportul pentru Xamarin la 1 mai 2024. Toate proiectele noi ar trebui lansate pe .NET MAUI — succesorul său, care este încorporat în .NET 8 și va primi actualizări împreună cu platforma .NET. Pentru proiectele existente pe Xamarin.Forms se recomandă migrarea în termen de 12–18 luni.
Diferența este nesemnificativă pentru aplicațiile obișnuite. Xamarin.Forms adaugă 5–10% suprasarcină de randare datorită învelișurilor Managed-Wrapper-Native. Problemele apar în listele grele (ListView vs RecyclerView) și animații (prin mijloace Xamarin.Forms fără API-uri platformă). Se recomandă utilizarea CollectionView (a înlocuit ListView) și a animațiilor native.
Da, prin Android Bindings Library. Acest tip de proiect .NET învelește arhiva AAR sau JAR în bindinguri C# cu generare automată de clase și metode. Pentru bibliotecile Kotlin sunt necesare manipulatoare suplimentare pentru corutine și sealed class, care se configurează prin Metadata.xml în Binding Library.
Rezumat
Vom dezvolta o aplicație mobilă la cheie
IT Sectr creează aplicații iOS și Android pentru startup-uri și afaceri din 2017. Vă vom consilia și vă vom propune cea mai bună soluție.
Citiți și