2. ¿Qué es Xamarin?
• Implementacion libre de .Net
• Android
• Android < Mono < IL < CLR < C#
• iOS
• iOS < AOT < C#
• Linux
• Permite el uso del 100% de las APIs nativas, ya que son expuestas
desde Xamarin (Xamarin.iOS / Xamarin.Android) para ser
referenciadas desde c#
• Desarrollo NATIVO
4. ¿Qué aporta Xamarin?
• Reutilización de código.
• Minimizar tests.
• Reducir mantenimiento.
• Facilitar refactors.
• Todo lo anterior se aplica en mayor o menor medida en función del
“tipo” de desarrollo
• S.O.L.I.D. es tu amigo
• Para “exprimir” Xamarin es necesario pensar antes de actuar.
5. ¿Cuándo usar Xamarin?
• No es una navaja suiza
• Aplicaciones en las que gran parte de la lógica sea agnóstica de la
plataforma (Hardware, Apis nativas, etc.) o que el uso de las mismas
pueda abstraerse mediante interfaces
• No tiene sentido en aplicaciones que solo usen cosas nativas, por
ejemplo una aplicación que aplique efectos a la cámara en tiempo
real. En este caso solo aportaría usar C# (Lo cual a un desarrollador de
plataforma le traerá mas problemas que beneficios)
• Quieres focalizar a cada desarrollador en su área, y tienes
desarrolladores .Net que pueden trabajar en la parte común de
ambas plataformas
6. ¿Cuándo utilizar Xamarin?
• Resumiendo… cuando la relación código plataforma vs código
compartido salga a cuenta. (Esta relación tiene trampa )
7. Adaptarse a Xamarin (General)
• Sencillo, pero con puntualizaciones:
• Hay que cambiar la forma de trabajar, delegar gran parte del trabajo en otros.
• Hay que coordinar el trabajo.
• Vas a echar de menos tu IDE favorito.
• Bugs sin sentido (Cada X días encontraras uno sin sentido aparente)
• Recuerda estás en .Net usa su poder (Linq le termina encantando a
todo el mundo)
8. Adaptarse a Xamarin (Android)
• El editor visual no es lo que esperas (Ha mejorado bastante en el
último ciclo)
• En VisualStudio con muchos layouts cambiar o añadir uno se vuelve
desesperante (En teoría en el último ciclo esta solucionado)
• Olvida las constantes, bienvenidos los enums
• Hazte amigo de las interfaces pero …
• TIP: Si al implementar una interfaz te pide que implementes
un intptr, te has olvidado de heredar de Java.Lang.Object
9. Adaptarse a Xamarin (iOS)
• El editor visual de storyboards no es lo que esperas.*
• Vas a seguir usando Xcode para ciertas cosas
• Muchos tutoriales se empeñan en hacer los layouts por código y no
por storyboard
• La gestión de assets da bastantes problemas (Parece haberse
solucionado en el último ciclo)
• Desplegar en dispositivo lleva bastante mas tiempo que lo que estáis
acostumbrados
10. Forms vs No Forms
• Forms, opinión personal, no esta maduro. Aun asi lo usaría en estos
puntos:
• Una prueba de concepto
• Apps en la que el diseño no sea importante y el tiempo de desarrollo sea
mínimo
• Apps en la que el rendimiento no sea importante, ya que es bastante peor
que en Xamarin Classic.
• Apps que no requieran gran uso de funcionalidad nativa.
11. Xamarin en el mundo real
• Xamarin es multiplataforma pero no es HTML Hibrido.
• No esta pensado para hacer iOS y Android con el mismo estilo visual y misma
navegación.
• Requiere una arquitectura mas compleja que un desarrollo “normal” en cada
plataforma.
• Focalizamos esfuerzos por área de experiencia
• Arquitectura pensando en las plataformas (Y a poder ser en MvvmCross).
• Mas respeto a S.O.L.I.D. mas fácil será tu vida.
• Es necesario alguien que coordine el trabajo entre los tipos de
desarrolladores.*
12. Xamarin en el mundo real
• Cualquier aplicación que pase de ser una PoC debería pensarse
seriamente en hacerse con MvvmCross.
• Necesario formación en el patrón Mvvm.
• Necesario formación en el framework MvvmCross.
• Cambiar la forma de pensar como hacer las cosas.
• Sí, la próxima charla será sobre Xamarin con MvvmCross
13. Xamarin en el mundo real “Lo malo”
• Bugs, Acostúmbrate a hacer Clean&Rebuild (AAPT…)
• Problemas por desconocimiento.
• Complicado conseguir perfiles.
• HttpClient (HttpClientHandler nativo)
• Portable Class Libraries (PCLs)
• Agnósticas de plataforma
• Complejo al principio
• Los nuevos “mas buscados”. Lo cual puede ser bueno y malo.
14. Xamarin en el mundo real “Lo peor”
• 1 desarrollador != 3 plataformas
• Multiplataforma != 1/3 tiempo desarrollo.
• No vais a compartir un 90% del codigo. Todo lo que sea visual
(Animaciones, diseños, etc.) ha de hacerse en cada plataforma.
• Bindings
15. Herramientas (IDEs)
• Windows
• VisualStudio,
• Da algunos problemas de rendimiento en Android con muchos layouts.
• Para trabajar con iOS es necesario tener un agente de compilación en un Mac
• Permite trabajar con ReSharper
• XamarinStudio
• Va ligeramente por detrás de XamarinStudio Mac. (Ej C#6.0)
• Mac
• XamarinStudio
• Pequeños problemas con assets desde carpeta
• Lentitud al desplegar en dispositivo
• Problemas con los StoryBoards (sobre todo con las Constrain)
• Necesario tener Xcode instalado en misma versión que XamarinStudio
16. Herramientas (Emuladores)
• Windows
• Xamarin Android Player (Cancelado)
• Emuladores x86 Xamarin Studio
• VisualStudio Android Emulators
• Habilitar Hyper-V
• Mac
• Emuladores propios de Xcode.
• TIP: Xamarin Profiler