Dot.Blog

C#, XAML, Xamarin, UWP/Android/iOS

Debug d’applications WinRT sur Surface

[new:31/12/2012]Si je reste circonspect sur l’intérêt de Surface Pro vu le prix annoncé et la faible autonomie (qui était prévisible avec de l’Intel), si je reste dubitatif sur Modern UI sur PC (un PC n’est pas une grosse tablette!), je continue d’être un fan de Windows 8 particulièrement sur Surface RT. Deboguer des applications pour Surface sur Surface est impératif pour se rendre compte des temps de réponse par exemple. Mais comment cela se passe ?

Déployer et Déboguer sur Surface RT

Déployer ses propres petites applications personnelles sur “sa” Surface est un must pour tout développeur. Pas besoin de market place pour se faire plaisir… Et si une idée devient géniale au fil des amélirations il est toujours temps de la publier. De même, publier une application Surface qui n’aurait pas été testée sur Surface est une hérésie, le simulateur ne peut pas tout dire. Notamment les temps de réaction et de traitement, le bien fondé de telle ou telle mise en page en mode tactile etc…

Pour toutes ces situations il faut pouvoir déboguer (et déployer) directement des applications sur Surface.

J’ai testé moi-même en m’inspirant très directement d’un post de Tim Heuer, étant sûr que la source était bonne… Ce que je vous livre ici est donc issu à la fois de ce billet et de la validation que j’ai pu en faire au travers de mes propres expériences.

Les outils

Surface RT tourne sur ARM. Pas question d’installer Visual Studio dessus pour faire joujou… Ce dernier ne marche que sur architecture Intel.

Toutefois, côté PC, il vous faudra un environnement complet. Et parmi les outils indispensable vous aurez besoin du “remote developer tools for Visual Studio” mais adapté à votre _cible_. Donc pour Surface, pour ARM.

Vous pouvez télécharger cela ici : Microsoft Visual Studio Downloads. En scrollant un peu et en regardant dans la rubrique “Additional Software” vous trouverez “Remote tools for Visual Studio 2012”.

Remote tools for VS download

Vous pouvez effectuer l’opération directement sur Surface depuis le browser, ou bien depuis votre PC (il faudra alors transférer les fichiers sur Surface via une clé USB par exemple).

Sur Surface, installez les remote tools pour ARM. Aucune installation supplémentaire n’est requise. Une fois l’installation terminée vous disposerez d’une nouvelle tuile dans le menu Modern UI :

Remote Debugger tile

Il est maintenant possible de débuter une session de debug !

Configuration du Remote Debugger

Cliquez sur la tuile du Remote Debugger sur Surface. le débogueur sera lancé (après d’éventuelles confirmations de sécurité). Il sera exécute dans son mode par défaut :

Remote Debugger launched

Par défaut il s’agit d’un setup sécurisé. Cela signifie que pour attacher une session distante vous aurez besoin de vous assurer que les autorisations sont correctes et d’autres détails de ce type. Mais comme votre Surface n’est probablement pas sur le même domaine / workgroup que votre machine de développement, cela peut s’avérer un peu “sportif”.

Personnellement j’ai suivi les conseils de Tim qui, pour faire des essais sur sa Surface a préféré déconnecté toutes ces options de sécurités. Cela rend le travail de debug bien moins “lourdingue”. Bien entendu la tablette ne doit pas être laissée indéfiniment dans un tel état. Mais la fermeture du Remote Debugger stoppe toute activité dangereuse.

La configuration proposée par Tim et qui fonctionne très bien est la suivante :

Remote Debugger config

Avec cette configuration on peut exécuter une application sur la machine cible (Surface) sans avoir besoin d’une authentification.

Une fois ces options de debug réglés, Surface est prête à recevoir vos créations et vous aider à la déboguer (avec Visual Studio côté PC malgré tout…).

Lancer une application dans le débogueur de Surface

Votre surface est correctement équipée (avec le Remote Debugger), elle est configurée pour accepter vos applis, vous avez lancé le remote debugger qui est donc en écoute. Ne reste plus qu’a exécuter l’application à tester.

Cela se fait bien entendu depuis le PC et Visual Studio. Pour une application C# il faut cliquer sur le bouton Start et choisir “Remote Machine”.

Select Remote Machine target

Cela fonctionne depuis Visual Studio Express aussi bien que depuis les versions plus lourde de l’environnement de développement. Une bonne chose pour tous les développeurs qui ne doivent pas forcément disposer d’une version Ultimate.

Une fois le lancement demandé, vous devrez choisir l’unité mobile à tester. Si vous travailler chez vous sur votre propre réseau, sans domaine, vous pourrez très facilement découvrir directement votre Surface dans les connexions proposées. C’est vraiment facile.

Soyez certains de bien vérifier les mécanismes d’authentification et tout le reste. Si vous suivez les conseils donnés ici, il n’y a a rien à vérifier, il suffit d’indiquer “none” dans la méthode d’authentification.

Remote Debugger connections window

Maintenant que la configuration est prête et sélectionnée, lorsque vous tapez sur F5 Visual Studio va préparer tout le nécessaire pour déployer l’application sur Surface. Vous pouvez d’ailleurs suivre les messages aussi sur surface dans l’interface du debugger.

Remote debugger connected window

Bien entendu, dans votre code côté PC il est possible de placer des point d’arrêt, d’inspecter des valeurs, etc, bien que l’application soit en train de tourner sur Surface… Génial non ?

Conclusion

Déployer et tester des applications WinRT sur Surface est d’une grande facilité. C’est aussi très gratifiant de voir ces petits programmes d’essai tourner “comme des grands”’ sur la machine cible. Une fois déployée par le Remote Debugger l’application reste installée dans les menus de Surface, on peut donc s’en servir à titre personnel… Pas besoin non plus de la désinstaller pour une nouvelle session de debug, elle sera remplacée automatiquement.

Et pour cela, au minimum, vous pouvez utiliser Visual Studio Express (gratuit) et Remote Debugger (gratuit).

Que du fun en perspective !

Stay Tuned !

blog comments powered by Disqus