Xamarin Basics

Post on 12-Apr-2017

250 views 2 download

Transcript of Xamarin Basics

XamarinPUERTA ABIERTA A LA MULTIPLATAFORMA

Sergio Gasca @SergioZgz

¿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

Trayectoria

¿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.

¿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

¿Cuándo utilizar Xamarin?• Resumiendo… cuando la relación código plataforma vs código

compartido salga a cuenta. (Esta relación tiene trampa )

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)

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

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

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.

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.*

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

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.

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

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

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

Prueba de código

Muchas gracias por asistir

Sergio Gasca@SergioZgz

¿Preguntas?