Xamarin — o que é, plataformas e desenvolvimento em C#

Autor: IT Sectr Publicado: 2026-05-01 Tempo de leitura: 9 min

Xamarin é uma plataforma da Microsoft para criar aplicações móveis em C#, anunciada em 2011. De acordo com Microsoft Xamarin Documentation, 2024, o Xamarin permite escrever aplicações para iOS, Android e Windows com uma base de código compartilhada em C# e .NET, usando o Mono Runtime para compilar em código nativo. Desde 2024, o Xamarin.Forms foi substituído pelo .NET MAUI.

Principais Pontos

  • Xamarin — plataforma móvel da Microsoft para desenvolvimento em C# para iOS, Android e Windows
  • Duas abordagens: Xamarin.Forms (UI compartilhada via XAML) e Xamarin.Native (telas nativas separadas)
  • Mono Runtime compila C# em código ARM nativo para iOS e Android
  • XAML — uma linguagem de marcação declarativa para construir interfaces de usuário
  • .NET MAUI — o sucessor do Xamarin.Forms, lançado pela Microsoft em 2022

O que é Xamarin

Xamarin é uma plataforma baseada em .NET e Mono que permite usar C# para criar aplicações móveis multiplataforma. A empresa Xamarin foi fundada em 2011 e adquirida pela Microsoft em 2016 por US$ 400 milhões. Após a aquisição, o Xamarin tornou-se parte do ecossistema Visual Studio e Azure.

Antes da aquisição, o Xamarin era um produto comercial com licença Enterprise. A Microsoft o tornou gratuito como parte do Visual Studio Community e também abriu o código-fonte do Mono Runtime e dos bindings do SDK. Isso levou a um aumento de popularidade: em 2020, o Xamarin era usado em 15% dos projetos multiplataforma, de acordo com um relatório da SlashData.

A ideia principal do Xamarin é dividir o código em três camadas: lógica de negócios compartilhada (C#, .NET Standard), projetos específicos de plataforma (iOS, Android) e uma UI compartilhada opcional via Xamarin.Forms. Essa abordagem permitia reutilizar até 75% do código mantendo o acesso nativo às APIs de cada plataforma.

História e evolução do Xamarin

A primeira versão Xamarin 1.0 foi lançada em 2012 com suporte apenas para iOS. O suporte para Android foi adicionado em 2013. O Xamarin.Forms — um framework de UI declarativo — foi apresentado em 2014 na conferência Evolve. O Xamarin 4.0 (2016) incluiu suporte para watchOS e tvOS. O Xamarin 5.0 (2019) introduziu estilos CSS e temas do Material Design.

A última versão principal Xamarin.Forms 5.0 foi lançada em 2021. A Microsoft anunciou que o Xamarin estava entrando em modo de suporte (fim de vida útil — 1º de maio de 2024) e recomendou a migração para o .NET MAUI (Multi-platform App UI), que faz parte do .NET 6+. O Xamarin.Forms 5.0 não recebe mais novos recursos, apenas correções críticas de segurança.

Xamarin.Forms vs Xamarin.Native

Xamarin.Forms é um framework de UI que abstrai a interface através de um conjunto unificado de componentes. A marcação XAML (ContentPage, StackLayout, Label, Button) é mapeada para controles nativos em cada plataforma através de renderizadores. O Label é traduzido para UILabel no iOS e TextView no Android. Essa abordagem fornece até 95% de código UI compartilhado.

Xamarin.Native (também Xamarin.iOS e Xamarin.Android) é uma abordagem sem UI compartilhada. O desenvolvedor cria telas separadas para iOS (Interface Builder ou Storyboard) e Android (AXML), usando um único backend em C#. Isso dá controle total sobre a aparência de cada plataforma, mas aumenta a duplicação de código UI para 50–60%.

De acordo com a Pesquisa de Desenvolvedores Microsoft 2023, 70% dos projetos Xamarin usavam Xamarin.Forms, 20% usavam Xamarin.Native com serviços compartilhados e 10% usavam uma abordagem híbrida com renderizadores personalizados para otimizações específicas de plataforma.

Arquitetura do Xamarin

A arquitetura do Xamarin consiste em dois níveis. O nível inferior é o Mono Runtime, que executa C# IL (Intermediate Language) na plataforma. O nível superior consiste em Managed Callable Wrappers (MCW) para iOS e Android Bindings para Android, que fornecem acesso às APIs nativas a partir do código gerenciado em C#.

Mono Runtime e bindings de plataforma

Mono é uma implementação de código aberto do .NET Framework. No Xamarin, o Mono opera como o Common Language Runtime (CLR), carregando assemblies C# e compilando-os em código de máquina. No iOS, o Mono compila Ahead-of-Time (AOT) — em código de máquina ARM64, pois a Apple proíbe a compilação JIT em aplicativos de usuário. No Android, o Mono usa compilação JIT com perfilamento AOT.

iOS Bindings (Xamarin.iOS) são wrappers C# sobre o runtime Objective-C. Cada classe UIKit (UIView, UIViewController) é representada por uma classe gerenciada no assembly Xamarin.iOS.dll. Os Selectors do Objective-C são invocados através do mecanismo MessageUI. No Android, o Xamarin.Android usa Android Callable Wrappers (ACW) — uma ponte JNI entre C# e Java/Kotlin. Bibliotecas Kotlin são encapsuladas via Android Bindings Library.

XAML e C# no Xamarin

XAML (eXtensible Application Markup Language) é uma linguagem declarativa para descrever a UI. No Xamarin.Forms, o XAML define a estrutura da tela: páginas (ContentPage), contêineres (StackLayout, Grid, FlexLayout) e elementos (Label, Entry, Button, ListView). O code-behind em C# trata eventos (Clicked, PropertyChanged) e gerencia a vinculação de dados (Binding, Data Binding).

Padrão MVVM é a arquitetura recomendada para Xamarin.Forms. O Model contém dados, a ViewModel implementa INotifyPropertyChanged e comandos (ICommand), e a View (XAML) faz a ligação através do BindingContext. A implementação de ICommand via RelayCommand ou Prism DelegateCommand permite testar a ViewModel sem dependências de UI. A biblioteca Prism.Forms fornece NavigationService, DialogService e modularidade.

Exemplo de aplicação 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 }
            };
        }
    }
}

Vantagens e desvantagens do Xamarin

Linguagem C# unificada — a principal vantagem do Xamarin. Desenvolvedores C# e .NET podem criar aplicações móveis sem aprender Swift, Kotlin ou Objective-C. A lógica de negócios, redes, bancos de dados (SQLite via ORM), criptografia e registro são escritos uma vez e reutilizados em todas as plataformas. Isso simplifica a manutenção e o teste do código.

Acesso a APIs nativas — o Xamarin fornece 100% de acesso às APIs iOS (Cocoa Touch) e Android (Android SDK) através de bindings. Quando uma nova versão do iOS ou Android é lançada, a Microsoft publica bindings atualizados em 24–48 horas. Para bindings ausentes (bibliotecas Objective-C ou Kotlin personalizadas), cria-se manualmente uma Android Bindings Library ou iOS Binding Library.

Integração com o ecossistema Microsoft — o Xamarin suporta Visual Studio, Azure DevOps, App Center (CI/CD, testes, monitoramento) e Enterprise Mobility + Security (Intune, ADAL, MSAL). O App Center Analytics e Crashes coletam dados de aplicações ao vivo. O Visual Studio App Center automatiza a compilação, testes em dispositivos e publicação em lojas de aplicativos.

Desvantagens do Xamarin incluem o tamanho da aplicação — um APK do Xamarin.Forms com tela vazia pesa 25–35 MB contra 5–8 MB de um aplicativo Android nativo. O tempo de compilação também é maior: um projeto de médio porte compila em 2–5 minutos versus 30–60 segundos no Android Studio nativo. O Mono Runtime adiciona 15–20 MB ao binário final.

A segunda desvantagem é o atraso de novas APIs. Novos recursos do iOS/Android aparecem imediatamente no desenvolvimento nativo, enquanto no Xamarin chegam 1–2 meses após o lançamento dos bindings. O iOS 17 SDK (2023) foi totalmente suportado pelo Xamarin 3 semanas após o lançamento. Para projetos urgentes, isso pode ser crítico. O .NET MAUI resolve esse problema através da integração direta com o .NET 8.

CritérioXamarin.NET MAUI
PlataformasiOS, Android, WindowsiOS, Android, Windows, macOS, Tizen
Framework baseMono + .NET Standard.NET 6+ (BCL unificado)
Framework UIXamarin.Forms.NET MAUI (sucessor)
Status de suporteFim de vida útil desde 1º de maio de 2024Desenvolvimento ativo da Microsoft
Hot ReloadLimitadoXAML Hot Reload + C# Reload

Migração para .NET MAUI

.NET MAUI (Multi-platform App UI) é a evolução do Xamarin.Forms, lançada pela Microsoft em 2022 junto com o .NET 6. O MAUI unifica iOS, Android, Windows e macOS em um único projeto sem projetos separados para cada plataforma. Ao contrário do Xamarin.Forms, o MAUI usa .NET 6+ BCL em vez de Mono e .NET Standard.

A Microsoft fornece uma ferramenta de migração — o .NET Upgrade Assistant para Visual Studio. Ela analisa o projeto Xamarin.Forms, substitui namespaces (Xamarin.Forms.* -> Microsoft.Maui.*), atualiza arquivos .csproj (formato estilo SDK) e migra as configurações do Android e iOS para uma configuração unificada. Após a migração, o projeto pode aproveitar todos os novos recursos do .NET 8: Native AOT, CodeQL para segurança e desempenho de compilação melhorado.

A mudança chave é um projeto único. Enquanto o Xamarin.Forms exigia 3 projetos separados (iOS, Android, .NET Standard), o .NET MAUI usa um único projeto com as pastas Platforms/iOS, Platforms/Android, Platforms/Windows e Platforms/MacCatalyst. Cada plataforma compila a partir de código compartilhado com diretivas condicionais específicas de plataforma (#if ANDROID, #if IOS).

Para bases de código existentes, o .NET MAUI mantém 90% de compatibilidade retroativa com o Xamarin.Forms. A compatibilidade de API cobre ContentView, ContentPage, Shell, NavigationPage, DependencyService e MessagingCenter. As principais mudanças afetaram Device.StartTimer (substituído por IDispatcher), Platform API (movido para Microsoft.Maui.ApplicationModel) e renderizadores obsoletos (substituídos por Handlers).

O processo de migração inclui cinco etapas. Primeiro — atualizar o Xamarin.Forms para a versão mais recente 5.0. Segundo — substituir .NET Standard 2.0 por .NET 6 ou 8. Terceiro — executar o Upgrade Assistant para conversão automática do projeto. Quarto — corrigir o código específico de plataforma nas pastas Platforms. Quinto — testar, especialmente renderizadores personalizados e serviços de plataforma.

Perguntas Frequentes

O que é Xamarin?

Xamarin é uma plataforma móvel da Microsoft para desenvolvimento em C# para iOS, Android e Windows. Ele usa o Mono Runtime para compilação de código compartilhado e oferece duas abordagens: Xamarin.Forms (UI unificada via XAML) e Xamarin.Native (telas nativas da plataforma). Desde 2024, o Xamarin está em modo de suporte.

Como o Xamarin difere do Flutter?

Xamarin usa C# e .NET, renderizando através de controles nativos (UIKit, View) via bindings. O Flutter usa Dart e seu próprio motor de renderização (Impeller), sem depender de componentes UI nativos. O Flutter fornece uma aparência consistente em todas as plataformas, enquanto o Xamarin oferece a aparência nativa de cada SO. O Flutter é apoiado pelo Google e tem 46% contra 15% do Xamarin.

Devo começar um novo projeto em Xamarin em 2024?

Não. A Microsoft descontinuou o suporte ao Xamarin em 1º de maio de 2024. Todos os novos projetos devem ser iniciados no .NET MAUI — seu sucessor, que está integrado ao .NET 8 e receberá atualizações junto com a plataforma .NET. Para projetos existentes em Xamarin.Forms, recomenda-se a migração dentro de 12–18 meses.

O Xamarin.Forms é mais lento que aplicativos nativos?

A diferença é insignificante para aplicativos normais. O Xamarin.Forms adiciona 5–10% de sobrecarga de renderização devido às camadas Managed-Wrapper-Native. Problemas surgem com listas pesadas (ListView vs RecyclerView) e animações (usando Xamarin.Forms sem APIs de plataforma). Recomenda-se usar CollectionView (substituiu ListView) e animações nativas.

Posso usar bibliotecas Kotlin no Xamarin?

Sim, através da Android Bindings Library. Este tipo de projeto .NET encapsula arquivos AAR ou JAR em bindings C# com geração automática de classes e métodos. Bibliotecas Kotlin exigem manipuladores adicionais para corrotinas e classes seladas, configurados através do Metadata.xml na Binding Library.

Resumo

  • Xamarin — plataforma da Microsoft para desenvolvimento móvel em C#, construída sobre o Mono Runtime
  • Xamarin.Forms fornece 90–95% de código compartilhado através de marcação XAML com renderizadores nativos
  • Xamarin.Native dá controle total sobre a UI de cada plataforma ao custo de telas separadas
  • Desvantagens: tamanho do APK 25–35 MB, tempo de compilação 2–5 minutos, atraso de novas APIs
  • .NET MAUI — o sucessor do Xamarin.Forms com projeto único, .NET 8 e suporte a 5 plataformas
  • A migração para .NET MAUI é feita via Upgrade Assistant em 1–2 dias para um projeto médio
  • Para novos projetos, use .NET MAUI — o Xamarin chegou ao fim de vida útil em maio de 2024

Vamos desenvolver um aplicativo móvel chave na mão

A IT Sectr cria aplicativos para iOS e Android para startups e empresas desde 2017. Nós vamos aconselhá-lo e propor a melhor solução.

Discutir o projeto

Leia também