Xamarin: comparación con el SDK nativo y los marcos basados en JS
Por lo tanto, una de las principales características de la codificación utilizando el SDK nativo proporcionado por Android
e iOS
es el hecho de que obtiene no sólo un mejor rendimiento, sino también la apariencia de cada plataforma: por ejemplo, en iOS
, una pestaña de navegación Bar se encuentra en la parte inferior de la pantalla, mientras que en Android
se encuentra en la parte superior (sí sé que también puede ser superior e inferior, pero usted consigue mi punto), o también el muelle de navegación de muelle es un estilo de navegación Android Mientras que (por lo que sé) no hay nada similar en iOS sdk nativo. Mi punto de ser, se puede sentir la diferencia de las plataformas por sus directrices de diseño que es una buena cosa, ya que hace que su aplicación se vea profesional.
Así que teniendo en cuenta esto, en términos de rendimiento y mantener la sensación de su aplicación, el uso de marcos basados en JS como Titanium o PhoneGap no hará una elección sabia.
- Desarrollo de iOS y Android en Windows
- ¿Es posible crear una biblioteca compartida multiplataforma con MonoDroid y MonoTouch que pueden ser utilizados por desarrolladores que no sean Mono?
- Interceptar mensaje SMS entrante y modificarlo
- Desarrollar una aplicación C # para Windows Mobile, Android y iPhone
- Desarrollo de la aplicación C # móvil para ejecutarse en múltiples plataformas
Luego viene Xamarin
. Como he leído aquí: Xamarin ¿cómo es conseguir la apariencia nativa y sentir? Parece que es un envoltorio de C#
para el SDK nativo, que por lo que yo entiendo, no debe afectar el rendimiento. Pero ¿dónde está la apariencia? Dado que los diseños XML no son totalmente lo que da a Android
aplicaciones de Android
o iOS
su sensación, sino también la navegación (que proviene de las clases del controlador), ¿cómo trata Xamarin con éstos? Se dice en su sitio web que se puede compartir código entre la plataforma, pero eso también significa que tengo que compartir el sistema de navegación y similares?
Por último, en aras de "no escribir código para cada plataforma" , ¿vale la pena no usar SDK nativo e ir con Xamarin
(realmente no tengo un problema escribiendo código tanto para iOS como para Android), o es este objetivo marco Para los desarrolladores de C#
para que no tengan que aprender Objective-C o Android.
Cualquier explicación adicional sería impresionante, y gracias de antemano.
- Comunicación entre 2 aplicaciones en el mismo dispositivo iOS / Android con Xamarin
- ¿Debo usar MonoDroid o Android?
- SQLite.SQLiteException lanzado en Xamarin.Android al intentar crear una tabla
- Uso de FusedLocationApi con Xamarin 3
- Problema al instalar el paquete NuGet Xamarin
- Mono para iOS / Android ¿Abierto o cerrado? ¿Pago o gratis?
- Visual Studio 2015 no instala Android SDK para Xamarin
- ¿Cuál es la contraparte de iOS 'QLPreviewController o UIDocumentInteractionController en Android?
Construí una gran aplicación en el último año (2013) con diferentes componentes: principalmente una API (ASP.NET Web API => C #), un sitio web (ASP.NET MVC => C # + AngularJS) y una aplicación para Android (Xamarin.Android => C #) e iOS (Xamarin.iOS => C #). La decisión de utilizar Xamarin tenía sus ventajas y sus desventajas, pero en general estoy más que feliz con él.
Como se puede ver en mi lista anterior, casi todo se hizo con C # (bueno, el sitio web está escrito principalmente en JavaScript ;-)). Es un lenguaje maduro maravilloso con características realmente agradables (como LINQ). En mi escenario se hace claro: no tuve que aprender y perfeccionar cuatro lenguajes (Swift / Objective-C, Java, C #, JavaScript) sino solo dos: C # y JavaScript.
Eso viene especialmente en juego con respecto al aspecto de compartir código: nuestras aplicaciones cliente no son realmente clientes ligeros debido a alguna funcionalidad sin conexión que requiere mucha lógica de sincronización, por lo que la parte de interfaz de usuario de las dos aplicaciones es sólo un lado de la medalla. Como resultó, realmente podría usar el 90% de ese código de no interfaz en iOS y Android. Este es un beneficio increíblemente enorme, ya que no se trata sólo de algunas originalidades lingüísticas de Swift / Objective-C o Java, sino también de los diferentes marcos que está utilizando en iOS y Android. Para utilizar .NET Framework / Mono como base de todas las aplicaciones de Xamarin, puede abstraer cosas como el acceso a los datos o la comunicación en red desde el sistema operativo subyacente.
En términos de velocidad e interfaz de usuario, no tiene ninguna desventaja, ya que está utilizando las API nativas 1: 1. Lo que esté disponible en iOS o Android también está disponible a través de Xamarin. Y cada vez que Apple, por ejemplo, envía una nueva versión de iOS, Xamarin enviará la actualización para que dentro de unos días, por lo que no tiene que esperar para poder utilizar las nuevas características introducidas por Apple.
Xamarin utiliza una técnica llamada Ahead of Time Compilación en iOS, por lo que todo lo que escribe en C # se compila en el material nativo de iOS antes de que se despliegue en su dispositivo. Esto significa que no hay diferencia en lo que se ejecuta entre una aplicación "nativa" de Objectice-C y una aplicación de Xamarin (excepto algunas pequeñas sobrecargas que no son dignas de mención de mis experiencias).
En Android Just in Time, la compilación se utiliza como cualquier otra aplicación "nativa" de Android, también.
Eso significa que tienes todas las mismas API y posibilidades que tendrías de otro modo, si quisieras ir con Objective-C o Java. Usted incluso utiliza los mismos objetos para construir su UI con exactamente los mismos tipos y nombres (a veces ligeramente optimizado;)). Así que si desea una barra de pestañas de navegación para su aplicación – se utiliza un UITabBarController para eso. Vea iOS contra Xamarin .
Después de varios años en mi camino con Xamarin sólo una desventaja:
Posibles fugas de memoria. Sus muestras enteras hacia fuera allí son un manojo de crap con respecto a los fundamentos esenciales de prevenir fugas de la memoria. Si está trabajando con "recursos caros" como archivos multimedia dentro de su aplicación, debe tener cuidado desde el primer día. Tuve que deshacerse de todos los problemas cuando una aplicación de mina ya había sido el crecimiento de hasta 35 diálogos diferentes (complejos). Eso me llevó casi dos meses o, en otras palabras, miles de dólares. Proporcionan algo de documentación al respecto, pero la herramienta es pobre en este extremo. Y es probable que aparezcan errores y muy difíciles de encontrar ( ejemplo ).
Pero en general fue una de mis mejores decisiones para ir con Xamarin.
He estado codificando con Xamarin por un tiempo ahora. Ha sido genial hasta ahora. Cualquier problema que he tenido me di cuenta porque c # es mi idioma nativo. El sitio de Xamarin tiene muchos ejemplos y referencias de API para muchas características en todas las plataformas.
-
Rendimiento: obtiene rendimiento nativo al usar Xamarin. No se hicieron preguntas. Lo he estado usando para crear las características de grabación de audio, video y foto para una nueva aplicación en la que estoy trabajando. Xamarin procesa el código c # en código de byte nativo para todas las plataformas. Así es como se logra.
-
Mira: el aspecto de tu aplicación será nativo. Usted literalmente tiene que usar el formato xml de Android para hacer su interfaz de usuario y el mismo Goes for IOS. Seguirás diseñando tus elementos de la misma manera que lo hiciste en cada plataforma. Todo lo que hace Xamarin es vincular una vista a un evento para ti.
-
Api – La belleza de Xamarin está en la API. Ellos portaban todo el espacio de nombres de Android y IOS a c #. Echa un vistazo a su documentación .
-
Caro – Mi único problema con Xamarin es que es caro. Si comprueba su precio es escandaloso. Pero conseguiste lo que pagaste. Un producto premium respaldado por el soporte.
-
C # – Sharp es un gran lenguaje que tiene un montón de apoyo. El nuevo async / await consigue el paseo de la edición entera de la gerencia del hilo. Procesamiento Json es muy fácil en la plataforma. He subido varias clases en Github que se pueden utilizar para muchas aplicaciones.
Si usted es de un fondo de java, el cepillado para arriba en sus habilidades del c # será una brisa.
La aplicación rdio fue creada con Xamarin. Descárgalo en Android e IOS y prueba su rendimiento y disfruta de su aspecto nativo.
La mejor de las suertes
Hay mucho más contenido de Internet, ayuda y soporte para los nativos. Eso solo me ayuda a hacer mi elección. Si eres realmente bueno en Xamerin, tal vez el 70% del código que escribas sea utilizable por ambas aplicaciones, todavía tienes que personalizar las cosas para cada aplicación.
Pero de nuevo, el apoyo a los nativos es tan grande, que si se topa con un problema, también lo ha hecho alguien más.
Con xamerin, bueno, buena suerte.
Cuando digo aplicación me refiero a iOS / Android