¿Cuáles son los inconvenientes de desarrollar sus aplicaciones móviles en Xamarin?

Un proyecto multiplataforma típico, dividido en proyectos separados para cada plataforma y un proyecto para una biblioteca compartida. La biblioteca compartida puede contener código independiente de la plataforma y una interfaz de usuario simple en XAML. Esta es una separación bastante conveniente que nos permite estructurar fácilmente el código. Una ventaja definitiva.

Marcos

El kit de herramientas básico contiene C # y el marco .NET. Un lenguaje práctico de alto nivel es otra ventaja.

.NET framework + Xamarin.Forms es un conjunto de marcos disponibles para una biblioteca compartida. Esto es básicamente un kit para modelar los datos de la aplicación. No hay características específicas de la plataforma, como el acceso al sistema de archivos y la cámara. Por un lado, esto aumenta el volumen del código, por otro lado, permite una mejor estructuración del código.

Existen marcos específicos de plataforma como Xamarin.iOS y Xamarin.Droid, así como la interfaz de usuario de C # para todos los marcos de plataformas nativas (por ejemplo, Core Data para iOS y Android.Support.v4 para Android). La mayoría de las tareas, esto permite evitar el uso de bibliotecas de terceros y utilizar las capacidades de la plataforma estándar sin envoltorios adicionales. Una gran virtud gorda.

Obviamente, la necesidad de usar Xamarin (Mono) y los marcos .NET aumenta el tamaño de la aplicación en 10 MB, sin embargo, esto es más una recompensa por las características multiplataforma que un inconveniente sustancial.

La interfaz de usuario

Puede crear interfaces de usuario en Xamarin. Hay dos enfoques para hacer eso:

Xamarin.Forms

Xamarin.Forms como una “descripción” multiplataforma de la interfaz de usuario que con la ayuda de renders especiales se transforma en los elementos nativos correspondientes. (Xamarin.Forms.ListView → UITableView). Debido a esto, la IU será visualmente diferente para ambas plataformas (ya que el botón nativo de iOS es diferente de un botón nativo de Android).

El comportamiento de cada elemento de una plataforma se puede editar a través de un renderizador. La interfaz de usuario se describe en XAML en el código. Hay un visualizador estándar integrado en Xamarin IDE que usa un simulador de dispositivo. El uso de esta funcionalidad puede facilitar y acelerar significativamente el proceso de creación de UI, pero también restringe la arquitectura de la aplicación. Requiere tener en cuenta el estado de la aplicación cuando la ejecuta un visualizador. Esta solución es ideal para las aplicaciones con una interfaz de usuario simple o prototipos que no son molestados por la interfaz de usuario.

IU de plataforma nativa

El uso de la IU nativa de cada plataforma es una opción para aplicaciones de diseño pesado. Xamarin admite las interfaces C # de todos los marcos nativos de la plataforma, incluidos xib y storyboard para iOS y diseño para Android. Por lo tanto, el trabajo de los elementos de la interfaz de usuario no es diferente de la experiencia similar en XCode y Android Studio.

Bibliotecas Xamarin

Las bibliotecas de Xamarin se distribuyen a través de NuGet. Una vez más, la mayoría de las tareas de su aplicación pueden ser realizadas por alguna biblioteca, que hay en gran número. Ya sea de desarrolladores externos o de Xamarin, las bibliotecas están ahí. Xamarin Studio tiene incorporado un administrador de paquetes NuGet, que permite encontrar e instalar rápidamente el paquete apropiado, así como cargar una biblioteca personal en un entorno compartido.

Bibliotecas iOS y Android

Si la funcionalidad que necesita no se puede encontrar completamente en las bibliotecas de Xamarin, puede conectar las bibliotecas adicionales de iOS (.a) y Android (.so, .jar). Sin embargo, este es un procedimiento más complejo:

La biblioteca С / Objective-C / Swift para iOS

  1. Cree un proyecto en XCode , ensamble una biblioteca (no olvide verificar las dependencias).

1.1 Cree un archivo FAT para todas las plataformas utilizadas.

1.2 Agregue el Proyecto de enlaces de biblioteca de iOS a Xamarin.

1.3 Agregue el archivo de biblioteca .a recibido al proyecto.

1.4 Especifique los indicadores correctos en los atributos del archivo .a.

1.5 Crear la IU mediante P / Invoke.

Es probable que esto te deje con una multitud de llamadas [DllImport ()]. Puede solucionarlo con la ayuda de la utilidad Objective Sharpie, ya que puede procesar los archivos de encabezado de la biblioteca y crear una descripción de biblioteca de IU bastante precisa. Sin embargo, el resultado aún debe probarse manualmente.

2. Utilice CocoaPods para bibliotecas y dependencias simples. Realmente simplifica el paso 1 al descargar la biblioteca, ensamblarla y crear la interfaz de usuario a través de un solo comando en la Terminal. Sin embargo, las bibliotecas complejas con dependencias de otros pods no se pueden manejar tan fácilmente; así que le aconsejo que utilice el enfoque del paso 1.

Para Android

3. Configure las bibliotecas C para Android siguiendo el mismo procedimiento complejo que para iOS en el paso 1.

4. Agregue la biblioteca .jar / .aar para Android. Es bastante simple aquí:

4.1 Agregar una biblioteca directamente al proyecto de la aplicación de Android.

4.2 Especifique las bibliotecas ABI compatibles correctas.

Xamarin analizará la interfaz de usuario Java de la biblioteca y creará su equivalente en C #. Esta es definitivamente la forma más fácil de cuatro.

Conclusión

Xamarin es una gran herramienta para la creación de prototipos, la creación de un MVP y aplicaciones con la interfaz de usuario diseñada a partir de los elementos estándar. En ese caso, puede alcanzar una reutilización de código del 80 al 90% entre las plataformas.

Otra área de implementación es la clase de aplicaciones con lógica comercial pesada. Al utilizar el enfoque nativo para construir la interfaz de usuario, puede implementar el diseño de cualquier complejidad. El puntaje porcentual de reutilización depende completamente del tamaño del modelo y la lógica empresarial de la aplicación.

No creo que tenga sentido usar Xamarin para crear aplicaciones con un modelo simple y una lógica de negocios, así como aplicaciones que se adentren en los gráficos (juegos) o muestren requisitos de alto rendimiento.

Puede encontrar el proyecto de muestra que utilicé en este artículo en GitHub.

Mi equipo ha estado desarrollando con Xamarin durante un año. Inconvenientes: realmente no hay tantos.

  1. Es un software que otras personas escribieron que estás usando. Ocasionalmente tiene errores menores que, cuando se arreglan, pueden causar cambios importantes en su código. Al igual que cualquier otro software que esté escribiendo, cuando actualice sus bibliotecas, ejecute todas sus pruebas de unidad y aceptación, luego pruebe la regresión del resto.
  2. Nuevo precio confuso. Sospecho que incluso sus vendedores están confundidos en este momento. “” ¿Es gratis? “, No si está desarrollando comercialmente.” ¿Qué pasa si tengo Visual Studio Professional? “, Puede usar SÓLO Visual Studio para el desarrollo, lo que es un asco para escribir pruebas de IU dirigidas a iOS.” ¿Qué pasa si ¿Tengo una licencia de MSDN? ”: Puede usar Visual Studio y Xamarin Studio, que cubre todos los casos de uso de desarrollo y desarrollo de pruebas de IU.
  3. Los desarrolladores justos de xCode / Objective-C Apple-fan-boy no te toman en serio. Lo cual es divertido porque Xamarin usa las mismas API y desarrolla aplicaciones nativas de la misma manera que xCode y Objective-C / Swift.

Al principio, buscaba razones por las cuales el uso de Xamarin para el desarrollo de aplicaciones era inferior al desarrollo “nativo”. No fue hasta que supe que el desarrollo de Xamarin es un desarrollo nativo que comencé a ver a Xamarin por lo que es, creando aplicaciones para múltiples plataformas con lógica de negocios compartida usando .NET y sus patrones seguros y mantenibles de tipo seguro para los cuales pude encontrar fácilmente desarrolladores .

En tus puntos:

1. Sí, pero obtienes una IU nativa en cada plataforma, no una “mejor suposición” que no se siente como ninguna de ellas.

2. Es una comunidad bastante grande y está creciendo rápidamente.

3. Sí, también WP8, Windows (.NET framework), Mac (MonoMac), Web (ASP.NET/MVC, etc.). En cualquier lugar donde se encuentre .NET Framework.

y

1. Sí, lleva tiempo, pero generalmente alrededor de 1 mes desde la primera versión beta. Entonces, por ejemplo, MonoTouch 5.99.x ha estado fuera durante 2 meses, que es la versión compatible con iOS6. Espero que MonoTouch 6.0 salga dentro de los 2-3 días posteriores al lanzamiento de iOS6, ¡que es HOY!

Aparte de eso, sí, tienes razón. DEBE hacer la interfaz de usuario para cada plataforma por separado, pero obtiene una aplicación nativa en cada plataforma, no una combinación de mínimo común denominador. Es más trabajo que una escritura una vez que se ejecuta en cualquier lugar, pero también es mucho menos trabajo que escribir una versión ObjC (iOS), Java (Android) Y .NET (WP7 / 8) por separado. Todas las cosas no visuales se pueden compartir.

> Las API relativamente nuevas de la plataforma tardarán un tiempo en filtrarse a Mono.

No puedo decir 100% con certeza en Android, pero ciertamente en iOS han tenido soporte desde el primer día para nuevas versiones de iOS y sus nuevas API desde (creo) iOS 5.0.

En sus otros puntos, agregaría:

1. Tener que construir una IU nativa no es tanto un inconveniente, ya que de todos modos tendrías que hacerlo con el desarrollo nativo. Además, eche un vistazo a Xamarin 3.0 Forms: nueva API que proporciona desarrollo de interfaz de usuario multiplataforma y escritura única en Android, iOS y WP8, lanzado ayer. No va a resolver todo de una sola vez, pero sin duda será una herramienta de productividad útil, especialmente para aplicaciones empresariales.

2. Es cierto que la comunidad Xamarin no es tan grande, pero la comunidad .net / C # es masiva. Y puedes beneficiarte de ambos.

Algunos desarrolladores consideran el remedio universal de Xamarin en términos de desarrollo multiplataforma, y ​​su colaboración con Microsoft ha fortalecido su convicción. ¿Es realmente un gran avance para el futuro?

Definitivamente, sería una estupidez subestimar las oportunidades de desarrollo móvil que ha abierto Xamarin. Sigue siendo una buena forma de crear una aplicación nativa flexible y eficiente, adecuada para múltiples plataformas , de modo que consuma menos tiempo y dinero.

Pero preferiría no olvidarse de las dificultades y limitaciones que impone Xamarin. Hay algunos aspectos que pueden causar problemas en términos de desarrollo: inexactitud de código , mala gestión de la interfaz de usuario , las aplicaciones son voluminosas y ocupan mucho espacio de almacenamiento .

Obviamente, puede hacer la vista gorda ante estas fallas, pero prevenido está prearmado.

Aunque el desarrollo de aplicaciones con Xamarin ahorra tiempo y recursos, existen algunas desventajas inherentes. Cuando se utiliza Xamarin, existe una gran sobrecarga de software operativo. Esto se debe a la vinculación de códigos y referencias entre marcos .NET y los sistemas operativos de destino. Esto aumenta los tiempos de descarga y arranque de una aplicación. La frase “escribir una vez ejecutada en cualquier lugar” no se aplica exactamente a Xamarin. La mayoría del código se puede sindicar en múltiples plataformas, pero el desarrollo central de la interfaz de usuario no es portátil. Esto significa que parte de la codificación debe realizarse para cada plataforma y, desafortunadamente, el desarrollo de la interfaz de usuario puede llevar mucho tiempo. Además, hay un soporte limitado para la codificación fuera de Xamarin. El código desarrollado en Xamarin no se transferirá y no se puede reutilizar para aplicaciones nativas o HTML5 para iOS o Android.
Al llevar a buen término una idea de aplicación móvil, la primera decisión es si se debe desarrollar de forma nativa o multiplataforma. Si la aplicación móvil no es intrínsecamente compleja y / o no se lanzará a múltiples plataformas, el desarrollo nativo puede ser la opción correcta. Si la aplicación se lanzará en múltiples plataformas y el tiempo y los recursos son esenciales, entonces desarrollar una aplicación usando Xamarin tiene algunos beneficios definitivos. Ponerse en contacto con un especialista profesional en desarrollo de software para tabletas y dispositivos móviles ayudará a que la decisión sea más fácil. Pueden sugerir los estándares aplicables y las prácticas eficientes necesarias para desarrollar una aplicación móvil para cualquier dispositivo. Esto depende del uso previsto, el público y la funcionalidad necesarios para su negocio, en lugar de simplemente sugerir el uso de las herramientas de codificación más recientes disponibles.
Historia completa en: http://www.simpalm.com/blogs

A pesar de que Xamarin ahora es ampliamente utilizado por los desarrolladores, todavía reciben muchas consultas de los clientes sobre “Native vs Web”. vs. multiplataforma “. En el pasado, Xamarin era considerado un pequeño vendedor, pero ahora con la adquisición de Microsoft, ese problema se ha resuelto para siempre.

pero aún tiene algunos inconvenientes al desarrollar sus aplicaciones móviles en Xamarin:

  • Xamarin no es barato

Es cierto que Xamarin puede hacer maravillas, pero no es una propuesta económica. Tienen un flujo de excelentes productos e incluso desarrolladores dedicados a Xamarin, por lo que hay una cobertura del 100% para las API nativas, y esto no es barato.

  • También hay otra cosa que no puede hacer con Xamarin: no puede usarlo como herramienta para portar aplicaciones.

Tiene aplicaciones existentes ejecutándose en varias plataformas, no puede tomarlas y portarlas a otras plataformas usando Xamarin. Esto es posible solo cuando hay nuevas aplicaciones iOS y Android.

También me gusta compartir el artículo “por qué Xamarin sigue siendo la primera opción para desarrollar aplicaciones”.

Por qué Xamarin se está convirtiendo en la primera opción para crear aplicaciones móviles empresariales

http://www.software-developer-india.com

Los inconvenientes en comparación con un marco de aplicación híbrido como digamos Phone gap serían:

  1. Las bibliotecas y el núcleo siguen siendo los mismos, sin embargo, debe crear la interfaz de usuario para cualquier plataforma a la que se dirija por separado
  2. La falta de una gran comunidad en comparación con otros marcos
  3. Puede orientar solo un máximo de tres plataformas en el mejor de los casos: teléfono iOs, Android y Win 7 (la brecha telefónica se dirige a 7)

El inconveniente en comparación con una aplicación nativa sería:

  1. Las API relativamente nuevas de la plataforma tardarán un tiempo en filtrarse a Mono. Este es un factor de tiempo. Todas las API estarán disponibles para usted después de un tiempo. (Mono admite casi la integración completa de iOS 5 por cierto).

En lugar de preguntar si hay algún inconveniente, la pregunta correcta sería por qué elegir Xamarin para construir su aplicación en primer lugar. Todos los marcos que no son nativos y se dirigen a más de una plataforma tendrán ciertos inconvenientes. En comparación con otros, Xamarin MonoDroid y MonoTouch tienen menos problemas y ofrecen el entorno familiar .Net / C #. Cumple con lo prometido.

Algunas de las limitaciones más interesantes de Xamarin Mobile Apps Development son las siguientes …

  1. Soporte limitado de Dynamic Language’s
  2. Soporte limitado Java Generation
  3. Constructores desaparecidos
  4. Clases genéricas de C #
  5. Soporte parcial de genéricos de Java

Como usted preguntó inconvenientes sobre el desarrollo,

Fue un poco difícil de enumerar porque Xamarin es la mejor herramienta para el desarrollo de aplicaciones multiplataforma.

Aquí hay algunas cosas a tener en cuenta antes de ir a Xamain …

1. Uso compartido de código limitado fuera

2.Los gastos generales de la aplicación

3. Ecosistema y comunidad

4. Las herramientas fueron más costosas para los derechos de desarrollador.


Krify Innovations (Reino Unido) Ltd. | India

Sitio web: https://www.krify.co

Krify es una empresa multinacional especializada en la creación de las últimas aplicaciones móviles, aplicaciones web desde 2005, ubicada en el Reino Unido y la nación asiática. Krify colaboró ​​con clientes de toda Europa, región geográfica y EE. UU., Para diseñar aplicaciones móviles innovadoras compatibles con iPhone, teléfono Android, iPad, teléfono Blackberry, Windows, etc. Sus clientes potenciales son en su mayoría internacionales en comparación con empresas alternativas. abarca una participación de mercado justificable en la creación de aplicaciones móviles y web competitivas, además de extender los servicios basados ​​principalmente en las necesidades a sus clientes, incluso en las plataformas portátiles y más avanzadas.

Antigua pregunta, pero algunos datos nuevos.

He estado usando xamarin por siempre. Funciona muy bien Solo tengo una queja al respecto.

El único inconveniente que he encontrado es el uso de nugget para actualizaciones fuera de banda. Por ejemplo, he aprendido que debe instalar un paquete de nugget para las bibliotecas de soporte de Android, y eliminará los otros. Sin embargo, si no toma esa biblioteca como la primera actualización de nugget, se rompe todo tipo de cosas. Esa es la única cosa que he encontrado que es un inconveniente. Es realmente nebuloso, pero me ha hecho la vida imposible en el pasado.

Todo lo demás parece funcionar para mí.

¡Buena suerte!

PD. No he visto el problema de la pepita por un tiempo. Supongo que a través de actualizaciones de herramientas, esto se ha resuelto.

Dado que las aplicaciones en Android requieren generar tipos de proxy Java durante el proceso de compilación, no es posible generar todo el código en tiempo de ejecución.
Las limitaciones incluyen
Soporte dinámico dinámico limitado, etc.
Para obtener más información, puede consultar:

http://developer.xamarin.com/gui

Aunque el desarrollo de aplicaciones con Xamarin ahorra tiempo y recursos, existen algunas desventajas inherentes. Cuando se utiliza Xamarin, existe una gran sobrecarga de software operativo. Esto se debe a la vinculación de códigos y referencias entre marcos .NET y los sistemas operativos de destino. Esto aumenta los tiempos de descarga y arranque de una aplicación. La frase “escribir una vez ejecutada en cualquier lugar” no se aplica exactamente a Xamarin. La mayoría del código se puede sindicar en múltiples plataformas, pero el desarrollo central de la interfaz de usuario no es portátil. Esto significa que parte de la codificación debe realizarse para cada plataforma y, desafortunadamente, el desarrollo de la interfaz de usuario puede llevar mucho tiempo. Además, hay un soporte limitado para la codificación fuera de Xamarin. El código desarrollado en Xamarin no se transferirá y no se puede reutilizar para aplicaciones nativas o HTML5 para iOS o Android.

Para las plataformas de desarrollo, las sutilezas son muy importantes. No se trata solo de los problemas resueltos sino de los problemas creados. Del mismo modo, no se trata solo de los beneficios para un equipo, sino también de los beneficios de otros que trabajan e se integran con ese equipo. Debemos considerar el tamaño del ecosistema y las comunidades de apoyo y cómo se ve afectada la productividad de los diseñadores y los miembros del equipo de control de calidad. Todos estos factores combinados con la productividad inmediata del desarrollador determinan el tiempo de comercialización, la calidad y la experiencia del usuario.

Soporte de lenguaje dinámico limitado

Soporte limitado de generación Java

Constructores desaparecidos
Clases genéricas de C #

Soporte parcial de genéricos de Java

Uso compartido limitado del código de la interfaz de usuario en iOS y Android

Soluciones de software maestro | Xamarin iOS Framework

Por lo que he experimentado hasta ahora con Xamarin, el único problema son los errores menores. A veces puede encontrar algunos problemas menores que no estarían en sus respectivos nativos, pero eso no es una preocupación importante para la mayoría de los desarrolladores de Xamarin, ya que la comunidad está trabajando muy duro y en constante crecimiento, lo que ayuda a reducirlo a un ritmo mucho mayor.

Pocos problemas importantes: –

  1. Para el desarrollo de iOS, aún necesita una computadora Mac. Entonces, la compilación se realiza en las máquinas de destino.
  2. Solo es bueno para la empresa: Xamarin es una buena herramienta para desarrollar para aplicaciones empresariales, pero no para aplicaciones de consumo. Hay ajustes de interfaz de usuario limitados disponibles. Entonces, es difícil hacer ui / ux personalizado que las aplicaciones de consumo necesitan.

En realidad, no trabajé con Xamarin Android o iOS, pero tengo experiencia con los formularios de Xamarin, que es una verdadera solución multiplataforma. Los problemas que sentí con los formularios de Xamarin son,

1) Muy pocos Widgets están disponibles con formularios Xamarin. Por ejemplo, no hay un botón de opción disponible (la plataforma iOS no tiene uno, pero Android y Windows sí). Si desea crear uno, aún puede hacerlo con un renderizador personalizado.

2) Las compilaciones de iOS y Windows son iguales a las nativas. Pero las compilaciones de Android siguen siendo lentas. Si haces alguna animación, puedes sentir la lentitud en Android.

3) Compatibilidad con paquetes Nuget: algunos de los paquetes Nuget funcionarán bien con WPF o con la aplicación de consola, pero fallarán con los formularios xamarin (ejemplo Microsoft CSOM 2013 nuget)

4) Al ser un usuario de Mac, en algún momento encontraré problemas extraños con xamarin studio, pero si reinicio, funcionará bien.

Feliz codificación

No hay desventaja de Xamarin. Es solo una plataforma para que los desarrolladores de C # desarrollen aplicaciones de Android e iOS sin cambiar su idioma (C # a Java)

Pero si desea elegir el idioma nativo, debe elegir Android Studio.

El principal inconveniente de desarrollar aplicaciones móviles en Xamarin es que:

1. no podrá controlar completamente el código que se ejecutará en el dispositivo.

2. Las aplicaciones son demasiado pesadas y requieren más espacio.

3.Habilidades de IU limitadas.

4. Poco caro.

Mi nombre es Anuj y estoy haciendo codificación de xamarin en los últimos 3 años. No encontré ni inconvenientes en el desarrollo de aplicaciones xamarin. Sí, pero podemos decir que la salida final es lenta.
más puedes preguntar aquí o solicitar contratar:
https://goo.gl/WsxRfz

More Interesting

Desarrollo de aplicaciones de Android: quiero crear una aplicación de Android como Instagram, y soy nuevo en programación. ¿Qué debo aprender? ¿Qué marcos debo usar u otra cosa?

¿Cuál es el alcance del desarrollo de aplicaciones multiplataforma en Nigeria y otros países africanos?

¿Cuáles son las ventajas / desventajas de usar Open Plug Flash Builder o Airplay SDK?

¿Qué es el curso de prueba de aplicaciones móviles? ¿Qué se puede aprender de él?

¿Cuáles son algunos K-drama con una trama increíble y una gran química? ¿Cuál es su lista de los 10 principales desde 2010 hasta la fecha?

Cómo contratar a las principales compañías de desarrollo móvil en India para una aplicación empresarial con backend

¿Qué formato debo elegir para la monetización de una aplicación móvil? recompensado, video, intersticiales, nativo o banners?

¿Cuáles son las herramientas de rendimiento disponibles para las pruebas de aplicaciones móviles?

Cómo decidir qué empresa de desarrollo de aplicaciones móviles me servirá mejor

Cómo organizar su flujo de trabajo al desarrollar aplicaciones móviles

¿Cuánto debo cobrar por una aplicación móvil?

¿Cuál es una buena alternativa a PhoneGap?

¿Cuál es la lista de verificación para los servicios de prueba de aplicaciones móviles?

¿Dónde puedo encontrar ayuda asequible pero buena para completar proyectos de desarrollo de aplicaciones móviles?

¿Qué plataforma móvil es mejor para un proyecto de desarrollo de aplicaciones de viaje?