Vantagens e desvantagens do Xamarin

Olá Habr! Hoje, mostraremos o que os usuários gostam no Xamarin, nossa ferramenta de desenvolvimento de aplicativos para dispositivos móveis entre plataformas. Além disso, abordaremos as deficiências da plataforma. A propósito, abaixo do corte, você encontrará muitos códigos e exemplos ilustrativos, e não apenas texto com uma enumeração. Inscreva-se agora!



Este artigo foi preparado por nossos parceiros, pessoal da EGO.

O Xamarin é um kit de ferramentas útil para o desenvolvimento de aplicativos móveis de plataforma cruzada em C # usando .NET. Ele suporta iOS, Android e Windows Phone.

Para desenvolver um aplicativo baseado no Xamarin, você não precisa conhecer completamente os idiomas específicos de plataformas individuais. Além disso, ao trabalhar com qualquer plataforma, você terá acesso total aos recursos de seu SDK e mecanismos internos para criar interfaces de usuário.

Assim, o Xamarin permite criar aplicativos que não são diferentes dos correspondentes nativos, o que significa que eles são adequados para distribuição em lojas oficiais (por exemplo, Google Play e App Store).

Além disso, de acordo com os desenvolvedores do Xamarin, a solução pronta para uso não será significativamente inferior em termos de desempenho.

Considere os componentes do Xamarin.

  • O Xamarin.IOS é uma biblioteca de classes C # que fornece aos desenvolvedores acesso ao SDK do iOS.
  • Xamarin.Android é uma biblioteca de classes C # que fornece aos desenvolvedores acesso ao SDK do Android.
  • Compilador c #.
  • .NET Framework
  • Ferramentas IDE (integradas ao Visual Studio para Mac OS e Windows).

Este artigo detalha sete razões importantes para usar o Xamarin no desenvolvimento de plataforma cruzada.



Materiais adicionais: comparação do Xamarin e PhoneGap .

1. Fácil de aprender


Em que você deve prestar atenção primeiro ao escolher uma plataforma? Claro, a complexidade do seu desenvolvimento. É improvável que existam muitas pessoas que desejam dedicar algum tempo a dominar a sintaxe (por exemplo, para ter bastante confiança no Angular, é necessário estudar esta plataforma por pelo menos vários meses). Portanto, se a criação de código de alta qualidade exigir uma preparação extremamente séria, muitos iniciantes simplesmente não conseguem dominar completamente o ambiente de desenvolvimento. Mas é fácil começar a usar o Xamarin: você não precisa aprender o idioma do Xamarin ou algo assim.

using Xamarin.Forms; RootPage.Children.Add(new ContentPage { Content = new Label { Text = "Sketches in Forms", BackgroundColor = Color.Yellow, TextColor = Color.Blue, Font = Font.SystemFontOfSize(NamedSize.Large), VerticalOptions = LayoutOptions.CenterAndExpand, HorizontalOptions = LayoutOptions.CenterAndExpand, } }); 

Basta conhecer a linguagem C # com seu estilo imperativo de escrever programas, sinta-se à vontade para se sentir no ambiente .NET e aprender várias classes relacionadas a plataformas específicas.

 using System.Diagnostics; using Foundation; using UIKit; namespace NeonPlayerConcept.iOS { [Register("AppDelegate")] public class AppDelegate : UIApplicationDelegate { public override UIWindow Window { get; set; } public static void Main(string[] args) { UIApplication.Main(args, null, "AppDelegate"); } } } 

Fonte

Para criar um aplicativo completamente "nativo" para uma plataforma específica, você precisa ter conhecimento suficiente de Java (no caso do Android) ou Objective-C / Swift (para iOS). Em alguns casos, isso pode ser um obstáculo sério. Vamos ver como a mesma tarefa, que envolve a criação de uma sequência de atributos, é resolvida no Objective-C e no C #.

No Objetivo-C:

 CFStringRef stringKeys[] * { kCTFontAttributeName, kCTForegroundColorAttributeName }; CFTypeRef stringValues[] * { myListFontRef, COColorGetConstantColor(kCOColorWhite) }; attr = CFDictionaryCreate (kCGAllocatorDefault, (const void **) &stringKeys, (const void **) &stringValues, sizeof(stringKeys) / sizeof(stringKeys[0]), &kCFTypeDictionaryKeyCallbacks, &kCFTypeDictionaryValueCallbacks); astr = CFAttributedStringCreate(kCFAllocatorDefault, CFSTR(“Hello from ego team!”), attr); 

Em c #:

 var stringAttributes = new CFStringAttributes { Font = myFont, ForegroundColor = UIColor.White.CGColor }; var myString = new NSAttributedString (“Hello from EGO team!”, attrs); 

Se você não estiver usando os recursos de desenvolvimento de plataforma cruzada do Xamarin, para criar um projeto comercial com desempenho suficiente nas duas plataformas, pode ser necessário usar duas abordagens diferentes ao mesmo tempo. Isso significa que os custos quase dobraram.

2. Reduza os custos do projeto


Com base nas vantagens descritas acima, pode-se observar que o desenvolvimento de plataforma cruzada usando o Xamarin requer aproximadamente 1,5 vezes menos tempo (e dinheiro) do que a criação de um projeto especializado separado para cada plataforma.

Obviamente, alguns trechos de código (por exemplo, componentes de utilidade) serão os mesmos nas duas versões, e outros (em particular, a lógica comercial que não usa as funções especializadas do dispositivo do usuário) exigirão apenas pequenas alterações. No entanto, a situação geral é um pouco mais complicada. Alguns componentes do seu aplicativo inevitavelmente terão que ser gravados do zero para cada sistema operacional. Ao criar e implantar dois aplicativos para duas plataformas, quase sempre é necessário contratar duas equipes de desenvolvimento. Usar o Xamarin é muito mais simples:

Graças às APIs independentes da plataforma, aproximadamente 70% do código será gravado em um formato universal.

Neste exemplo, a classe MainPage usa a interface ITextToSpeech para selecionar a função desejada em uma plataforma específica:

 ITextToSpeech.cs: public interface ITextToSpeech { void Speak (string text); } TextToSpeech_Android.cs: [assembly: Dependency (typeof (TextToSpeech_Android))] namespace UsingDependencyService.Android { public class TextToSpeech_Android : Java.Lang.Object, ITextToSpeech { TextToSpeech speaker; string toSpeak; public TextToSpeech_Android () {} public void Speak (string text) { \\Android-specific code } } } TextToSpeech_iOS.cs: [assembly: Dependency (typeof (TextToSpeech_iOS))] namespace UsingDependencyService.iOS { public class TextToSpeech_iOS : ITextToSpeech { TextToSpeech speaker; string toSpeak; public TextToSpeech_Android () {} public void Speak (string text) { … \\iOS-specific code } } } MainPage.cs: public class MainPage : ContentPage { public MainPage [] { var speak = new Button { Text = “Hello, world!”, VerticalOptions = LayoutOptions.CenterAndExpand, HorizontalOptions = LayoutOptions.CenterAndExpand, }; speak.Clicked += (sender, e) => { DependencyService.Get<ITextToSpeech>().Speak("Hello from Xamarin Forms"); }; Content = speak; } } 

3. Capacidade de criar interfaces de usuário como "nativo"


Um dos principais motivos pelos quais os desenvolvedores evitam ferramentas de desenvolvimento de plataforma cruzada é que essas ferramentas não permitem o uso de toda a gama de recursos de ambientes específicos. Isso se refere principalmente ao design (Design plano no iOS, Design de material no Android) e aos recursos intelectuais dos dispositivos do usuário (acesso a contatos, câmera, dados de GPS etc.).

A solução final de plataforma cruzada não terá alto desempenho (essa desvantagem é inerente a quase todos os aplicativos criados usando ferramentas da web de plataforma cruzada) e não poderá tirar proveito de plataformas específicas (o que significa que alguns recursos originalmente planejados pelo criador do projeto podem não totalmente implementado).

No entanto, tudo é diferente ao usar as ferramentas Xamarin para o desenvolvimento de aplicativos "nativos" em várias plataformas. Nesse caso, você não encontrará os problemas acima. Não apenas as classes .NET padrão estão disponíveis para os desenvolvedores: elas podem se conectar facilmente às classes suportadas por uma plataforma móvel específica (elas estão contidas nas bibliotecas C # para Xamarin.Android e Xamarin.iOS, respectivamente). Isso significa que, ao usar o Xamarin para desenvolver aplicativos para iOS e Android, você terá à sua disposição toda a gama de recursos dessas plataformas. Você não precisa usar ferramentas de terceiros (e geralmente pagas).

4. Condições ideais para teste


Testar um produto que está sendo preparado para lançamento não é uma tarefa trivial, especialmente quando se trata da plataforma Android. Os formatos de tela dos dispositivos iOS dos usuários são claramente definidos e conhecidos com antecedência, mas os dispositivos Android são muito diferentes. Se o aplicativo não tiver sido testado em um dispositivo específico, sua interface poderá, em alguns casos, "dispersar". Os criadores do Xamarin propuseram uma solução para esse problema.

Em particular, o Test Cloud também está disponível para usuários da plataforma, o que permite emular mais de 2000 dispositivos. Esta decisão não é gratuita, mas os custos serão justificados.



Materiais adicionais: nove melhores ferramentas de teste de aplicativos móveis para iOS e Android .

5. Compatibilidade perfeita com dispositivos IoT


Se você deseja que seu aplicativo receba dados sobre a localização do usuário, giroscópio, acelerômetro ou outros sensores integrados, o Xamarin será uma ótima opção.

 private void Instance_Ranged(object sender, System.Collections.Generic.IEnumerable<IBeacon> e) { Try { var data = string.Empty; foreach (var beacon in e) { data = $@”region id: {beacon} } _labelContent.Text = data; LogStatus(@”Ranged”); } catch (Exception exception) { LogStatus(exception.ToString()); } } 

Esse ambiente de desenvolvimento é totalmente compatível com dispositivos de IoT (por exemplo, com o Estimote ) que permitem receber dados de localização, o que significa que você não precisa configurar a integração com soluções de terceiros (especialmente porque isso não será possível em princípio).

6. Documentação de qualidade e uma grande comunidade


Uma documentação bem organizada está disponível para o Xamarin com exemplos práticos, trechos de código e instruções passo a passo.

Obviamente, algumas perguntas não podem ser respondidas nela. Nesse caso, a comunidade online o ajudará. Existem duas comunidades oficiais do Xamarin: no site oficial da plataforma e no portal StackOverflow.

Se você ainda não conseguiu as informações necessárias (alguns desenvolvedores reclamam que os especialistas da comunidade não são muito ativos), entre em contato com o serviço de suporte técnico privado disponível para os titulares de licenças comerciais da Xamarin. Os especialistas responderão em algumas horas e oferecerão não apenas um conjunto de procedimentos padrão que raramente ajudam a solucionar completamente o problema, mas instruções detalhadas para solucionar seu problema específico.

7. Integração perfeita com Microsoft Windows


Quase toda empresa de TI possui uma infraestrutura desenvolvida de software usado na plataforma Windows.

Para todas as edições do Visual Studio (para Mac OS e Windows) desde a primavera de 2016, o Xamarin também é fornecido como parte da assinatura. Se você já estiver usando o Visual Studio para desenvolvimento, não precisará pagar mais.

Desvantagens do Xamarin


Tentamos conversar em detalhes sobre os pontos fortes do Xamarin e examinamos várias de suas vantagens óbvias. No entanto, gostaríamos de tornar essa revisão mais objetiva, por isso nos voltamos para os pontos fracos da solução. De fato, apenas uma desvantagem merece atenção: o tamanho dos aplicativos escritos usando o Xamarin geralmente excede ligeiramente o volume de contrapartes nativas. No entanto, a otimização nunca é supérflua.

Então, qual a eficácia do Xamarin?


O Xamarin tem várias vantagens e é excelente para projetos de larga escala para desenvolver aplicativos de plataforma cruzada que são complexos em termos de arquitetura, semelhantes às soluções nativas.

Source: https://habr.com/ru/post/pt415833/


All Articles