Qu’est ce que c’est qu’une application universelle (Universal App) ?
Avant de rentrer dans le code et de montrer comment en créer une, je vous propose de résumer et d’expliquer à ma façon ce qu’est une application universelle
Faisons simple : une application universelle, c’est une seule même app capable de tourner sur plusieurs form factor(tablette, PC, téléphone). La même base de code, la même base d'interface(XAML/HTML) et des customisation (tuning :)) pour une plateforme en particulier si on le souhaite.
Ce n’est pas seulement un jeu d'api commun mais une base commune et des spécificités par plateforme (sms sur phone par exemple). 90/95% du code est en commun dorénavant. Alors qu'avec WinPRt on avait beaucoup moins de choses en commun.
Il est possible de développer en C#, VB, C++ ou javascript( oui on peut faire des Apps uniquement en html/JS). Tout est basé sur le Windows Runtime.
Les plateformes supportées sont uniquement (et logiquement) : Windows 8.1 et Windows Phone 8.1
C'est quoi la différence avec les PCLs alors ?
Avant pour partager du code, on devait passer par des mécanismes de PCL ou utiliser des fichiers ajoutés"comme liens". Dorénavant tout ce processus est automatisé par Visual Studio. Même au niveau du designer, un switcher de contexte permet de passer rapidement dune plateforme à l'autre.
Avec les PCLs, il y a seulement un subset commun aux différents frameworks (et parfois des crash si les comportements ne sont pas tout à fait les mêmes). Avec une PCLs on ne pouvait pas partager d'UI(xaml/html), pas d'images et surtout pas de fichiers de ressources pour les traductions. Même l'astuce de "add as link" ne fonctionnait pas car les formats étaient différents. C’est maintenant possible avec des universal apps.
Migration d’apps
J'ai une App Windows8.1 et je veux en faire une version Windows Phone : je fais simplement "ajouter une App Windows Phone 8.1" et mon projet est converti en universal App avec une version Phone. Simple :) !
Migrer une App SL8.0 vers une App universal est un peu plus compliqué car il y a des changements au niveau du XAML(contrôles, features en moins, apis différentes - background task notamment) mais dans l'ensemble cela reste assez rapide.
En passant, on peut migrer une App Windows Phone 8.0 vers une app Windows Phone 8.1 : il faut utiliser l'outil de migration. Il est aussi possible d'utiliser de la reflection pour accéder aux nouvelles APIs depuis une App 8.0. Cela est pratique pour continuer à faire évoluer une App 8.0 tout en proposant de nouvelles fonctionnalités de SL8.1.
Store, qualité et optimisation
Il y a auta toujours deux packages différents générés par Visual Studio. C’est ce qui permet notamment de customiser l’application pour une plateforme en particulier.
Microsoft prévoit de publier des outils qu’ils utilisent en interne pour leur propres apps afin de nous aider à améliorer la qualité : trouver qu’il y a des erreurs et où les corriger
Toutes les optimisations (mémoire, utilisation CPU, utilisation de la batterie) qui ont étés faites sur le Phone sont maintenant aussi disponibles sur Windows 8.1 et inversement grâce à cette base de code commun.
Pour commencer à développer, c’est par là pour les outil et voici un exemple de code par Thomas.
Commentaires