[Xamarin] Probando Continuous Coding

Introducción

Xamarin lanzó una nueva herramienta para aplicaciones iOS, Android, Mac y WPF llamada Xamarin Inspector que nos permite acelerar el desarrollo permitiendo:

  • Ver
    el árbol visual de elementos de la interfaz. En OSX además se puede ver
    una visualización 3D con capas con los diferentes elementos visuales
    que componen la interfaz.
  • Poder seleccionar elementos y modificar propiedades.
  • Poder ejecutar evaluaciones de expresiones C# con REPL (Read-Eval-Print Loop).

Entre
todas las opciones la última es increíblemente interesante ya que
permite realizar múltiples pruebas en tiempo real sin necesidad de
realizar recompilaciones del proyecto, proceso que conlleva un tiempo en
el que no podemos continuar nuestro desarrollo. Esto mismo debió pensar
Frank A. Krueger que ante la posibilidad de poder utilizar ensamblados dinámicos se ha lanzado a crear Continuous Coding anteriormente conocido como Live Coding.

Continuous Coding

La
propuesta de Continuous Coding es reducir al máximo el ciclo de
compilar y ejecutar permitiendo en tiempo real evaluar el código tanto
de la lógica como por puesto a nivel de UI. Poder contruir la interfaz al vuelo
viendo directamente los resultados de cada línea aplicada además de
poder enlazar la misma con la lógica y el backend segun vamos
escribiendo.

Suena a mágico, ¿verdad?

En eso consiste Continuous Coding actualmente disponible en C# para Xamarin en Android e iOS.

Preparando el entorno

El paso inicial de todos es instalar Xamarin Inspector.

Podemos instalar la herramienta tanto en Windows como en OSX de forma sencilla.

Instalando Xamarin Inspector
Instalando Xamarin Inspector

El siguiente paso será instalar el add-in de Continuous Coding para Xamarin Studio.

NOTA: Actualmente solo soportado en Xamarin Studio.

En
Xamarin Studio seleccionamos Archivo -> Gestor de complementos. Una
vez en la galería de complementos, seleccionamos la opción de
repositorios.

Repositorios
Repositorios

Añadimos un nuevo repositorio utilizando la siguiente URL:

https://raw.githubusercontent.com/praeclarum/Continuous/master/Continuous.Client.MonoDevelop/AddinRepo
Repostorio añadido
Repostorio añadido

Utilizando Continuous coding

Creamos una nueva aplicación, para este ejemplo crearemos una aplicación Xamarin.Forms.

Nuevo proyecto Xamarin.Forms
Nuevo proyecto Xamarin.Forms

Debemos añadir una referencia desde los proyectos iOS y Android al paquete NuGet de Continuous.

NuGet Continuous
NuGet Continuous

A continuación, añadiremos:

#if DEBUG
new Continuous.Server.HttpServer(this).Run();
#endif

En puntos de inicialización de la App. En el caso de iOS AppDelegate.FinishedLaunching y en el caso de Android Activity.OnCreate son lugares idóneos.

NOTA: this es el contexto en Android. En iOS puede ser cualquier cosa.

En el caso de utilizar el emulador de Android tendremos que hacer un forward del puerto utilizado por Continuous:

Llegados a este punto tenemos todo lo necesario para usar Continuous
Coding. Ejecutamos la App en depuración como lo haríamos normalmente.
Tenemos el panel de Continuous Coding disponible en Ver -> Paneles
-> Continuous Coding.

Panel Continuous Coding
Panel Continuous Coding

Podemos enviar Snippets de código utilizando el botón Set Type o la combinación de teclado Ctrl+Shift+Return. En caso de desar que todo lo que vamos editando vaya actualizándose en tiempo real debemos usar el botón Refresh del panel o la combinación de teclas Ctrl+Shift+C.

Podéis ver a continuación a Continuous Coding en acción.

Continuous en acción!
Continuous en acción!

El sencillo ejemplo mostrado anteriormente lo podéis encontrar en GitHub:

Ver GitHub

One more thing

James Montemagno,
evangelista de Xamarin, se lanzó este verano con un nuevo formato
llamado Motz Codes Live basado en Hangouts de 30-60 minutos tratando
diferentes aspectos relacionado con el desarrollo de aplicaciones con
Xamarin. En el último de ellos junto a Frank A. Krueger realizaron un recorrido bastante completo por Continuous:

Más información

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *