¿Qué debo construir, aplicaciones nativas o Xamarin.Forms?

Definir pls nativos.

Xamarin.Forms es nativo. Ídem.
Xamarin. La tecnología es nativa. Ídem.

Obtiene el mismo código ejecutable, a veces incluso mejor optimizado. Cuando Android no tenía ART (pre KitKat), la máquina virtual mono era mejor en muchos casos que la máquina virtual Dalvik.

En general, Xamarin tiene:

  • enfoque tradicional / estándar
    • el usuario escribe la aplicación en C # en lugar de Java (Objective-C / Swift)
      Todo lo demás es lo mismo
    • + algunos beneficios
      • C # / F #
        LINQ, async / await, Attributes (el desarrollador de c # no necesita editar AndroidManifest.xml – OK rara vez)
      • uso compartido de código: Business / Domain Logic está escrito en C # o F # y se puede compartir horizontalmente a través de plataformas móviles o incluso de escritorio y verticalmente en el cliente y / o servidor (ASP.net)
  • Xamarin.Forms
    delgada capa de abstracción sobre diferentes plataformas que expone solo clases, métodos y propiedades comunes para todas las plataformas
    • mapeo (parte de él)
      observe las diferencias en solo 2 muestras, así que obtenga la imagen …
      – mayúsculas para espacios de nombres (paquetes java)
      – sin espacios de nombres para el objetivo-c
      • Xamarin.Forms.Button
        Android.Widget.Button (android.widget.Button)
        UIButton (iOS)
        Windows.UI.Xaml.Controls.Button (UWP)
        System.Windows.Controls.Button (Windows Phone y otros)
        NSButton (AppKit)
      • Xamarin.Forms.Entry
        Android.Widget.EditText (android.widget.EditText)
        UITextField (iOS)
        Windows.UI.Xaml.Controls.TextBox (UWP)
        System.Windows.Controls.TextBox (Windows Phone y otros)
        NSTextField (AppKit)

Verifique el código de Xamarin.Forms en github para ver cómo se representa Button, Entry u otra cosa en cada plataforma (busque renderizadores de cutstom) …

Entonces, cuando usar:

  • Enfoque estándar / tradicional de Xamarin (Xamarin.Android y Xamarin.iOS)
    • Aplicaciones intensivas de IU
    • uso de API específicas de la plataforma (hardware, utilidades, etc.)
  • Xamarin.Forms
    • para aplicaciones simples
      • aplicaciones de entrada de datos empresariales, sin UI sofisticada
      • creación de prototipos (creo tramas XF para cutomers, para que tengan idea de la navegación)
        si se aplica correctamente en capas (arquitectura), es posible cambiar a Estándar / Tradicional con cierto esfuerzo.
    • no para aplicaciones complejas (intensivas en IU)
      • posible, pero el esfuerzo aumenta drásticamente !! Se necesita conocimiento de la plataforma. Aquí es donde los desarrolladores de c # / f # que vienen de Windows golpean la pared (generalmente). ¡Los desarrolladores de Java (Objective-C / Swift) podrían tener ventaja aquí!

Trabajo en varias aplicaciones similares (salud y deportes / fitness) y uso Xamarin.Forms.

Razonamiento / Argumentos:

  • alcance de la plataforma (cobertura)
  • no necesito una interfaz de usuario sofisticada: necesito funcionalidad (soy desarrollador)
  • ahorro de costos para implementar múltiples aplicaciones de clientes móviles / de escritorio y del lado del servidor en ASP.net core

Le recomiendo que use Xamarin.iOS y Xamarin.Android. Construye una aplicación nativa utilizando controles nativos y se ve / huele / sabe a una aplicación nativa porque lo es.

Xamarin.Forms es un tipo diferente de herramienta de desarrollo de aplicaciones diseñada para un escenario diferente.

¡Buena suerte!

Si está buscando construir una aplicación móvil en múltiples plataformas como Android, iOS, Windows.

Te sugiero que vayas con el desarrollo de aplicaciones móviles xamarin . Hay varios beneficios que puede aprovechar al usar xamarin.

Las principales ventajas son rentables, dos entornos de desarrollo integrados diferentes, reutilización de código, acceso nativo a API y mucho más.

Nunca entendí por qué la gente usaría esas cosas. Es como tener piernas pero usar una silla de ruedas para moverse.

Si conoces Java, escribe una aplicación para Android

Luego, pasa un tiempo y escribe la aplicación Swift. Swift es fácil de aprender si conoces Java.

Si tiene mucha lógica empresarial, hágalo en módulos nativos (c / c ++) y comparta entre plataformas.

De acuerdo con la descripción de sus aplicaciones, puede estar contento con Xamarin.Forms.

Sin embargo, también podría ser el caso de que no lo haga, si no desea hacer sus apuestas, vaya con Xamarin.iOS y Xamarin.Android.

Mi sugerencia es crear una aplicación de Android usando Java a través de Android Studio.

Parece que eres bastante nuevo en el desarrollo móvil y, en mi opinión, creo que sería mucho más fácil construir una aplicación de Android usando Android Studio usando Java, ya que parece que conoces Java mejor que C #. Además de eso, hay muchos más recursos / tutoriales para las personas que desarrollan aplicaciones de Android utilizando Java en lugar de Xamarin.

Si solo quieres probar la idea y su reacción en el mercado, Xamarin estaría bien. Pero si quieres crear una gran aplicación, Native sería la mejor para ti.