Windows Phone 8 SDK ya está aquí

WinPhone8Logo

Hola a todos!

Hoy Microsoft a presentado al público el SDK de Windows Phone 8.0, después de varios meses de espera. Se puede descargar desde aquí. En este artículo quiero dar una vuelta rápida por los aspectos que más me han llamado la atención del SDK. Así mientras descargas e instalas el nuevo Windows Phone 8 SDK puedes enterarte de algunas novedades.

Nuevo entorno

La primera y mayor novedad es que por fin tendremos el SDK integrado en Visual Studio 2012. Podremos desarrollar tanto para Windows Phone 7.1 como para Windows Phone 8. De esta forma, si no vamos a migrar nuestras aplicaciones todavía, podemos seguir trabajando en ellas pero usando el nuevo entorno.

Pero no es solo una cuestión de usar Visual Studio 2012. El entorno para Windows Phone 7.X era bastante espartano. Pocas opciones especiales, edición de manifiesto desde el XML directamente. Todo esto ha mejorado y mucho, eso lo veremos mañana con más calma, porque realmente incorpora algunas opciones muy interesantes.

Emuladores… cuanto más mejor

Otra novedad vendrá de la mano de los emuladores, en el SDK de Windows Phone 7.1 teníamos dos emuladores, uno con 512 MB de RAM y otro con 256 MB. Este número crece ahora hasta los seis emuladores para aplicaciones Windows Phone 7.1 y cuatro para las aplicaciones Windows Phone 8.0. Los nuevos emuladores son:

  • Emulador WVGA: Este emulador cuenta con 1Gb de RAM, doble procesador y resolución de 480x800 píxeles.
  • Emulador WVGA 512MB: Igual que el anterior pero solo con 512MB de RAM, sería el nuevo dispositivo de gama baja.
  • Emulador WXGA:  Cuenta con 1Gb de RAM, doble procesador y resolución de 1280x768 píxeles.
  • Emulador 720P: Igual que los anteriores pero con una resolución de 1280x720 píxeles.

Además estos nuevos emuladores son máquinas virtuales de Hyper-V

image

Esto plantea una desventaja, es necesario para usar los emuladores tener un Windows 8 de 64 bits, virtualización por hardware en concreto soportar SLAT y tener HyperV instalado (es muy fácil, podemos activarla en los componentes de Windows). Si no tienes Windows 8 todavía, aprovecha estas ofertas de lanzamiento, puedes actualizar tu Windows 7 a Windows 8 pro por solo 30 € aquí.

Antes de instalar el SDK, es conveniente añadir nuestro usuario al grupo de Administradores de HyperV para evitar posibles problemas de permisos.

Debido a todo esto, observaremos que la primera vez que levantemos un emulador el tiempo de arranque del mismo se alargará hasta los 6 minutos, esto es así porque es el momento en el que se crea la máquina virtual, se arranca el sistema y se toma un snapshot. Una vez hecho esto, el resto de veces que arranquemos ese emulador, será casi instantáneo, hablando de que tardará solo los pocos segundos que tarde en recuperar el snapshot inicial. Mi recomendación: en cuanto termine la instalación activa todos los emuladores, lanzándolos desde Visual Studio para que así creen sus snapshots y todo vaya más rápido a partir de ese momento.

También a cambiado el aspecto de los emuladores:

image

Sorprende además que no nos encontramos ante una ROM capada solo con internet explorer. Estamos ante una ROM completa, nos permite jugar con todas las opciones de Windows Phone 8 como si nos encontrásemos ante un dispositivo real.

WinRT vs WinPRT

Además del emulador y el uso de Visual Studio 2012, las verdaderas novedades vienen en las nuevas APIs que trae el emulador. El runtime que usaremos para desarrollar en Windows Phone 8 se conoce como WinPRT (Windows Phone Runtime) y se basa en un subset del API de WinRT existente para Windows 8, ampliado con APIs específicas de Windows Phone 8:

image

En el gráfico anterior, el circulo rojo representa la totalidad de la API de WinRT, mientras que el círculo Azul representa la totalidad de la API de WinPRT, el área que se solapa es la parte de ambas APIs que se comparte entre ambas plataformas, la parte azul restante son ampliaciones a las APIs de WinRT que se han realizado especialmente pensando en el sistema operativo para teléfonos.

En este sentido, es especialmente interesante el API de Bluetooth y NFC, que es exactamente la misma que en Windows 8, no es que se parezca, es que es la misma, por lo que podíamos copiar y pegar el código entre dos proyectos y sería totalmente compatible. Mejor, podríamos implementar la lógica de uso de esta API en una Portable Class Library y compartirla entre ambos tipos de proyectos, aquí os dejo dos fragmentos de código del API de NFC, uno en Windows Phone 8 y otro en Windows 8, como podéis ver son idénticos:

// Windows Phone 8
private async void FindPeersWP8()
{ 
    Windows.Networking.Proximity.PeerFinder.Start();
    var result = await Windows.Networking.Proximity.PeerFinder.FindAllPeersAsync();
}
// Windows 8
private async void FindPeersWin8()
{
    Windows.Networking.Proximity.PeerFinder.Start();
    var result = await Windows.Networking.Proximity.PeerFinder.FindAllPeersAsync();
}

Pantalla de bloqueo

El nuevo SDK incluye APIs para trabajar en la pantalla de bloqueo. Podremos declarar que nuestra aplicación puede poner su icono en ella para notificaciones, podremos indicar un icono, al que se unirá el contador del tile principal y un texto. Nuestra aplicación también podrá trabajar como proveedor de imágenes para la pantalla de bloqueo. Todo esto, declarando el uso de estas extensiones en nuestro manifiesto y mediante una API muy sencilla.

Geo posición en background

Así mismo, también tenemos la posibilidad de que nuestra aplicación se ejecute en background para recibir notificaciones de cambio de geo posición. Han tratado el tema de la localización geográfica de forma muy especial. En Windows Phone 7.1 teníamos que usar trucos como deshabilitar el ApplicationIdleDetectionMode para que nuestra aplicación se ejecutase continuamente y así poder seguir recibiendo los eventos de coordenadas. Ahora simplemente indicaremos que deseamos que se reciba el cambio de posición en background, crearemos el código para recibir las coordenadas e indicaremos el cambio en metros mínimo para recibir la actualización. Automáticamente, aunque el usuario salga de la aplicación el sistema seguirá manteniendo vivo nuestro código y recibiremos los eventos de cambios.

Mapas

Esto es algo que me ha llamado la atención en especial. Aunque podremos seguir trabajando con el control de mapas tradicional, el incluido en el SDK 7.1 (sobre todo por retrocompatibilidad) se ha creado un nuevo control de mapas con mucha más información que el antiguo de Bing Maps, de forma sencilla tendremos cuatro modos cartográficos (aereo, satellite, carreteras e híbrido), podremos mostrar información para caminantes (esto suena muy Walking Dead) como por ejemplo donde encontrar escaleras o rampas, cambios de nivel, líneas de autobus… incluso podremos activar una propiedad llamada Landmarks que nos dará vistas 3D de edificios siempre que estemos en modo carreteras y que el zoom sea superior a 17 se activará la representación 3D como podemos ver en la imagen:

image

En este caso es una captura de Seattle, pero lo he probado en Bilbao, Madrid y Paris. Sorprende que tengan muchísimos datos 3D de ciudades europeas, esto no suele pasar.

Async/Await

En esta nueva versión ya no tendremos que hacer piruetas con CTPs, Async y Await incluido de serie.

Tipos de proyectos

En cuanto al tipo de proyectos también hay novedades, algunas de ellas sorprendentes:

image

Sorprende ver un proyecto con XNA. Para los fans decir que no, no se soporta XNA en Windows Phone 8. Este proyecto solo permite hacer aplicaciones para Windows Phone 7.1. Para Windows Phone 8 tenemos el proyecto de XAML y Direct3D que nos permite usar todas las APIs de Direct3D en nuestra aplicación C#.

Igualmente sorprendente el proyecto Windows Phone HTML5 App. Aunque su nombre nos puede llevar a equívocos, no se trata de un proyecto en el que podamos desarrollar nuestra aplicación de forma nativa en HTML5 como ocurre en Windows 8 y su WinJS. Se trata de un proyecto con XAML, en el que en la página principal se tiene un control webbrowser y una estructura de directorios para crear el contenido en HTML5, así que es más bien una especie de PhoneGap pero sin acceso nativo.

Por último es destacable que al crear un proyecto de tipo Windows Phone Databound App, además de generar datos de ejemplo que es lo único que hacía en Windows Phone 7.1. También nos crea un pequeño esqueleto de MVVM, no demasiado bien implementado a mi modo de ver, pero muy sencillo. Sin duda un paso en la dirección correcta.

En todos los proyectos, cuando el target sea Windows Phone 8, se incluirá por defecto un archivo de recursos y el código necesario para que hagamos nuestras cadenas localizables en varios idiomas. Con lo que ya no tendremos excusa.

También es muy importante que con esta nueva versión podremos seguir usando los proyectos de Test de .NET 4.5 para realizar las pruebas unitarias de nuestra aplicación. Ya no serán frameworks distintos, ni tendremos que temer incoherencias en las pruebas. el framework de .NET para Windows Phone incluido en este SDK tiene compatibilidad Binaria con .NET 4.5.

Capturas nativas desde el dispositivo

Aunque no es una característica propia del emulador, donde podremos seguir obteniendo capturas de pantalla con las herramientas, podemos obtener capturas en nuestro teléfono con Windows Phone 8 usando la combinación de teclas Apagar + Inicio. De esta forma podremos conseguir capturas para la Windows Phone Store mucho más realistas.

Conclusión

Este SDK es grande, trae muchas novedades y cambios. Iremos viendo todas esto y más con calma aquí en el blog, por ahora, empieza por descargarte aquí el SDK de Windows Phone 8 y juega con él:

Windows Phone 8 SDK

Un saludo y Happy Coding!

Published 30/10/2012 8:00 por Josué Yeray Julián Ferreiro
Comparte este post:

Comentarios

# re: Windows Phone 8 SDK ya está aquí

Sunday, November 4, 2012 7:29 PM por Santiago Porras Rodríguez

Genial artículo como siempre.