Recientemente, me he encontrado con muchas personas que no tienen claro los conceptos ni las diferencias que existen detrás de las tecnologías de Xamarin. Por eso, en este post voy a intentar aclarar algunos puntos que, considero, pueden ayudar a que comprendamos mejor todas las posibilidades que tenemos y que nos ofrece Xamarin.
Un poco de Historia…
- 2009: Novell saca la primera versión de Monotouch (posteriormente conocido como Xamarin iOS)).
- Finales de 2010: Novell saca la versión Monodroid (posteriormente conocida como Xamarin Android)
- 2011: Novell es adquirida y se crea Xamarin tal y como lo conocemos ahora.
- 2014: Aparece Xamarin Forms
- 2016: Xamarin es adquirida por Microsoft
Primera aclaración: ¿Qué es Xamarin Classic?
Lo primero que debemos dejar claro es que no existe ningún contenido que haga referencia como tal al concepto de ¨Xamarin Classic¨.
Podemos hacer una simple búsqueda en Internet y los resultados que nos muestra Google están relacionados con Xamarin iOS Classic y Xamarin Unified API (que es la versión con la que desarrollamos actualmente).
Cuando hablamos de Xamarin Classic nos estamos refiriendo fundamentalmente al desarrollo de las aplicaciones utilizando las APIS clásicas de cada plataforma:
- Para el desarrollo en Android: La parte gráfica se implementa con los bindings de los componentes nativos de Android. Es decir, tendríamos, al igual que en nativo, recursos XML, Activities, Fragments, etc.
- Para el desarrollo en iOS: La parte gráfica se implementa con los bindings de los componentes nativos de iOS. Es decir, tendríamos igual que en nativo, storyboards, recursos xib, ViewsControllers, UIviews, etc.
- Para el desarrollo en Windows: Se desarrolla con las APIS propias de Microsoft.
- Core de la aplicación: Se desarrolla de forma común a todas las plataformas, normalmente en una PCL (Portable Class Library). Dentro de uno o varios de estos proyectos-librerías pondríamos todo el código que queremos compartir entre nuestros proyectos.
La solución podría tener la siguiente forma:
Segunda aclaración: ¿Qué es Xamarin Forms?
Xamarin Formses un conjunto de herramientas creadas principalmente con el objetivo de agilizar el desarrollo multiplataforma, centrándose principalmente en maximizar la cantidad de código compartido entre plataformas.
Teniendo en cuenta todo lo que hemos visto anteriormente, las herramientas de Xamarin Forms nos ayudan a compartir código en la parte gráfica de la aplicación.
Es decir, para crear una pantalla, ya no sería necesario desarrollar el código de un activiy de Android, un ViewController de iOS o un Page de Windows. Crearíamos un Page de Forms, que la propia herramienta, transforma en componentes nativos.
Y es aquí donde aparece la imagen que ya todos conocemos:
Pero OJO: ¡Esto no es magia! No podemos caer en el error de pensar que diseñamos una pantalla y se va a ver igual en todas las plataformas.
Tenemos que pensar que al diseñar una pantalla, ésta se replica en cada plataforma usando los componentes propios de cada una de ellas, por lo que la interfaz no se va a ver igual en las tres plataformas.
Ejemplo:
(Podemos comprobar que una misma pantalla se ve de diferente manera en cada una de las plataformas).
¡Pero existe un truco!
Si queremos que la pantalla y el comportamiento de los controles se personalice para cada una de las plataformas, podemos usar los Custom Renderers,, que no son más que un código específico de cada plataforma compatible con pantallas de Forms.
La arquitectura de Xamarin Forms permite que creemos un proyecto en el cual convivan en todo momento lo que hemos llamado ¨Xamarin Classic¨y Xamarin Forms.
Por ejemplo, podríamos tener una aplicación que tuviera determinadas pantallas desarrolladas con los bindings nativos (Classic) y otras con Pages de Forms. Teniendo en cuenta, como hemos dicho anteriormente, que Xamarin Forms es un conjunto de herramientas.
Podríamos realizar un prototipo de aplicación rápidamente usando Xamarin Forms y, posteriormente, realizar cada una de las pantallas usando las APIS propias de cada sistema operativo (Classic).
Entonces, ¿cuándo usamos Xamarin Forms?
Xamarin Forms es mejor para:
- Apps que no requieren de un diseño muy complejo
- Apps de código compartido, que no requieren de una interfaz personalizada.
Xamarin iOS y Xamarin Android (Classic) son mejores para:
- Apps que requieren de un comportamiento nativo
- Apps que utilizan muchas APIS específicas
- Apps que requieren de una interfaz personalizada
Veámoslo gráficamente:
1. Si quiero realizar una app donde pueda seleccionar los datos con un slider y no me importa cómo se vea en cada plataforma:
Xamarin Forms podría ser tu elección.
2. Si, por el contrario, quiero que el slider se vea en todas las plataformas de esta manera:
Es probable que debas utilizar lo que hemos llamado ¨Xamarin Classic¨.
¡OJO! Usando las APIS propias de cada sistema operativo puedes terminar teniendo un diseño como el de la primera imagen, y utilizando Xamarin Forms con Custom Renderers, uno como el de la segunda imagen.
Utilidades y recursos
Haciendo clic aquípodréis ver la forma, por defecto, en la que se pinta cada componente en cada sistema operativo.
¡Espero haberos ayudado en dejar los conceptos más claros!
Si queréis saber más sobre Xamarin y el diseño de apps, ¡No dudéis en inscribiros a nuestro evento!
Escrito por Ricardo Fraile, Technical Leader del departamento de Movilidad en Bravent