Portar aplicaciones de Windows 8 a Windows Phone 8

¿Sabías que Windows 8 y Windows Phone 8 comparten núcleo y muchas APIs? Esto te permite hacer que tu aplicación llegue a más usuarios, y tengas más posibilidades de rentabilizarla.

Código compartido

Veamos esto de forma más gráfica, por si no te lo crees de palabra.

En la siguiente imagen tenemos la arquitectura de Windows 8, en la que sobre el Core del sistema operativo tenemos:

  • Toda la estructura de la programación .NET tradicional, para nuestras aplicaciones web y de escritorio
  • Las APIs de WinRT, para nuestras aplicaciones de la Windows Store

clip_image002

En cambio, en esta otra, la de Windows 8 RT, para los dispositivos con procesador ARM, sólo mantenemos las APIs de WinRT para nuestras aplicaciones de la Windows Store:

clip_image004

Y por último, la arquitectura de Windows Phone 8, en la que tenemos sobre el Core del sistema operativo las APIs de Windows Phone 8 (WinPRT APIs), prácticamente idénticas a las de WinRT, y sólo cambia la posibilidad de usar JS/HTML5/CSS para desarrollar nuestras aplicaciones.

clip_image006

Resumiendo, partiendo de las APIs de WinRT podemos tener nuestra aplicación funcionando en dispositivos Intel y dispositivos ARM con Windows 8 y en teléfonos con Windows Phone 8 reutilizando una enorme cantidad de código y, lo más importante, manteniendo sólo una versión de todo ese código compartido entre las aplicaciones.

¿Qué necesito para portar mi aplicación?

Para portar tu aplicación a Windows Phone 8 tan sólo necesitas descargar el SDK de forma gratuita desde https://www.microsoft.com/es-es/download/details.aspx?id=35471 La descarga incluye una versión de Visual Studio Express con la que no necesitarás nada más.

 

¿Es un proceso difícil?

En general es un proceso simple, pero depende de varios factores.

Si tu aplicación Windows 8 está desarrollada con C# o VB y está construida usando buenas prácticas siguiendo el patrón Model-View-ViewModel, tan solo deberás crear una vista nueva para Windows Phone 8 y algunos cambios menores en el modelo para adaptarlo a las APIs de Windows Phone 8.

Si este no es tu caso, puedes refactorizar tu aplicación para que lo siga. Con esto no sólo lograras portarla a Windows Phone 8, sino que harás más sencillo su mantenimiento y mejorarás notablemente la arquitectura de la aplicación. Puedes encontrar más información sobre cómo implementar el patrón Model-View-ViewModel en https://msdn.microsoft.com/es-es/library/gg405484(v=PandP.40).aspx (en inglés).

 

¿Significa eso que tengo que mantener dos códigos distintos, uno para Windows 8 y otro para Windows Phone 8?

Serían dos proyectos distintos porque el target es distinto, pero la inmensa mayoría del código puede ser compartido sin que existan conflictos ni duplicidades.

Si dispones de Visual Studio 2012 Professional o superior, las Portable Libraries te permiten agrupar el código común a las dos plataformas, evitando duplicidades en el código y mejorando la mantenibilidad de la aplicación. Puedes encontrar más información sobre el uso y ventajas de las Portable Libraries en https://msdn.microsoft.com/en-us/library/windowsphone/develop/jj714086(v=vs.105).aspx (en inglés).

 

¿Y si no tengo Visual Studio 2012 Professional o superior?

No puedes hacer uso de las Portable Libraries, que simplifican ampliamente el porte, pero puedes usar otras técnicas como Linkado o Compilación condicional. Puedes encontrar más información sobre estas técnicas en https://msdn.microsoft.com/en-us/library/windowsphone/develop/jj681693(v=vs.105).aspx (en inglés).

 

¿Si tengo problemas a quién acudo?

Puedes dirigir tus preguntas tanto al foro de Windows Phone https://social.msdn.microsoft.com/Forums/es-es/category/windowsphone como al de Windows Store Style Apps https://social.msdn.microsoft.com/Forums/es-ES/wsappses/threads, ambos en español.

A partir de ahora, si tienes una aplicación en Windows 8 ya publicada no tienes excusa para que no esté en Windows Phone 8 también, por lo que espero ver vuestras apps en mi Windows Phone 8 (cuando lo tenga Sonrisa) lo antes posible.

 

Un saludo,

Gorka Madariaga (@Gk_8)