En el Build 2014 se enunciaron muchas novedades, entre ellas las Universal Apps que nos permiten crear aplicaciones para Windows 8.1 y Windows Phone 8 compartiendo el mismo código.

¿Cómo se consigue un único código?

Gracias a la inclusión de WinRT en Windows Phone 8.1 es posible compartir una base de código muy grande con Windows 8, eso permite compartir mucho código entre proyectos de Windows 8.1 con Windows Phone 8.1.

Eso no significa que las aplicaciones actuales desarrolladas en Silverlight para Windows Phone no hayan evolucionado, de hecho también hay muchísimas novedades para el desarrollo de aplicaciones Windows Phone Silverlight 8.1.

En cuanto a los controles de interfaz de usuario, se han adaptado algunos controles de las Windows Store Apps para el teléfono, por tanto se nos da la posibilidad de compartir muchas vistas también.

Novedades en el desarrollo

Para empezar a desarrollar con las Universal Apps necesitamos la nueva actualización de Visual Studio, Update 2 RC. Una vez lo tenemos instalado nos permite crear nuevos proyectos de universal apps o adaptar los de Windows 8.1 o Windows Phone 8.1.

Crear un nuevo proyecto

Cuando creamos un proyecto de Universal Apps nos aparecen tres proyectos dentro de la solución. Uno para Windows 8.1, otro para Windows Phone 8.1 y otro con el código compartido.

Desde un proyecto existente

Otra forma de crear una Universal App es a partir de una aplicación de Windows 8.1 o de Windows Phone 8.1. Simplemente debemos hacer clic derecho en el proyecto y pulsar sobre Add Windows Phone 8.1 o Add Windows 8.1.

clip_image001[4]clip_image002[4]

Ahora simplemente deberíamos arrastrar al proyecto Shared todo el código que se pueda compartir.

Cómo organizar el código

El uso de las Universal App nos ofrece la posibilidad de compartir mucho código. Todo el código que sea común a las dos plataformas debe ir en el proyecto Shared. Aquí podemos incluir tanto código, como XAML, imágenes, controles, converters, viewmodels, archivos de idiomas, etc.

clip_image004[4]

Sin embargo cuando algo sea específico de una plataforma debe ir en su proyecto, por ejemplo las vistas. Algunos controles de XAML como el GridView, el Hub, el ListView, etc. se han adaptado a Windows Phone y por tanto no siempre será necesario crear vistas distintas para las dos plataformas.

Además es importante que si el código que está en el proyecto Shared utiliza una librería externa se debe referenciar tanto en el proyecto de Windows 8.1 como en el proyecto de Windows Phone 8.1 los binarios de la misma.

Las Portables Class Library se han adaptado y renombrado como Class Library (Portable for Universal Apps) para trabajar con estos nuevos proyectos. Además, ahora nos permite cambiar para qué plataformas queremos desarrollar la librería.

clip_image006[4]

Nuevas características en Visual Studio

Visual Studio 2013 se actualiza para dar soporte a las Universal Apps, entre otras novedades. Con la nueva versión podemos ver nuevas características que nos facilitan el trabajo con las Universal Apps.

Cuando estamos en la vista de diseño podemos seleccionar el contexto en el que estamos, Windows Phone 8.1 o Windows 8.1.

clip_image008[4]

De esta forma, cuando compartimos las vistas podemos ver cómo queda para cada plataforma. En Blend también podemos cambiar el contexto desde la pestaña de Device.

También nos permite generar el paquete para la tienda de Windows Phone al igual que lo hacía antes con la de Windows 8.1

Además también se nos ofrece la posibilidad de pasar el Kit de certificación a las aplicaciones de Windows Phone 8.1. Hasta ahora este Kit solo estaba disponible para las Windows Store Apps para Windows 8.

Resumen

Las Universal Apps son un gran avance para conseguir que las plataformas de Windows Phone y Windows 8 converjan. No por el hecho de cómo se crean los proyectos si no por el hecho de que ahora Windows Phone ejecuta sus aplicaciones con un motor cada vez más parecido al de Windows 8. Y así cada día los dos sistemas operativos están más unidos y eso favorece el desarrollo, porque ahora, se puede compartir incluso más de un 80% del código.

En definitiva las Universal Apps favorecen a que podamos desarrollar una única aplicación para ambas plataformas.

 

Un saludo.

Sergio Gallardo Sales (@maktub82)