Xamarin Basics

18
Xamarin PUERTA ABIERTA A LA MULTIPLATAFORMA Sergio Gasca @SergioZgz

Transcript of Xamarin Basics

Page 1: Xamarin Basics

XamarinPUERTA ABIERTA A LA MULTIPLATAFORMA

Sergio Gasca @SergioZgz

Page 2: Xamarin Basics

¿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

Page 3: Xamarin Basics

Trayectoria

Page 4: Xamarin Basics

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

Page 5: Xamarin Basics

¿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

Page 6: Xamarin Basics

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

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

Page 7: Xamarin Basics

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)

Page 8: Xamarin Basics

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

Page 9: Xamarin Basics

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

Page 10: Xamarin Basics

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.

Page 11: Xamarin Basics

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

Page 12: Xamarin Basics

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

Page 13: Xamarin Basics

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.

Page 14: Xamarin Basics

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

Page 15: Xamarin Basics

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

Page 16: Xamarin Basics

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

Page 17: Xamarin Basics

Prueba de código

Page 18: Xamarin Basics

Muchas gracias por asistir

Sergio Gasca@SergioZgz

¿Preguntas?