Ma premère application pour Android avec Xamarin sous Visual Studio 2017

Comment créer une première application pour Android ? Certainement en installant correctement le simulateur d'une plateforme Android et le SDK correspondant, émulateur ou simulateur faut voir.

Dans mon Visual Stufio 2015 Community, j'ai une barre d'outils nommée "Android", je dois vous l'avouer, je ne sais plus trop comment elle est arrivée là, certainement au gré des installations des différents SDKs. Alors aujourd'hui, je vais essayer d'en faire l'exploration.

Mais est-ce que tout ceci est fonctionnel ?


Voici la barre d'outils Android :
Android Tool Bar
dont voici la liste des outils dans Visual Studio 2015 Community :

Android's Tools for development

Android Device Monitor

Essayons de cliquer sur Android Device Monitor :

Android Device Monitor
Oh c'est Superbe toutes ces erreurs qui vous pètent à la figure, ces messages sympathiques de bienvenue j'adore ... ça doit certain très bien fonctionner !

Quand est ce que quelqu'un ira dire à ces idiots de Redmond qu'il faut faire des ErrorBox avec un texte copier-collable que je puisse le coller directement le texte de l'erreur dans mon Explorateur sinon vous êtes obligé de le taper à la main, franchement je n'ai pas que ça à faire ...

On découvre :

D:\Users\Braby\AppData\Local\Android\android-sdk

Je regarde le contenu du fichier de logs :

eclipse.buildId=unknown

...

!ENTRY org.eclipse.osgi 4 0 2017-10-19 16:22:10.537
!MESSAGE Bundle reference:file:org.apache.ant_1.8.3.v201301120609/@4 not found.

Vous m'en direz tant ! Tout ça n'est absolument pas stable ... il manque un serveur apache ?

Popup Systray for Xamarin
Bon bas ok, allons-y, encore une installation.

Xamarin 4.7.10.22
It's not fun! Not at all!

Le processus est tellement gourmant en ressources que j'ai cliqué comme un culbuto deux fois avant qu'il ne se lance. L'interface est la suivante et l'on va apprendre à s'en servir ...

Android Device Monitor
To Be Continued ...

On reprend depuis le début

Et pendant que j'y suis, si je passais à Visual Studio 2017 Community.

Installation Mobile pour Visual Studio 2017

Parce que les ingénieurs de la société de Redmond sont joueurs, l'installation/modification de Visual Studio 2015 et de Visual studio 2017 ne se passe pas de la même façon.

Installation de Visual studio 2015

Hou, hou c'est tout noir.

Installation/Modification Visual Studio 2015
J'avais déjà détaillé tout ça. Comme on l'a vu pas facile de créer une application pour Android qui fonctionne. Je ben je recommence avec Visual Studio 2017.

Panneau de configuration -> Programmes et fonctionnalités -> Visual Studio 2015

Installation de Visual Studio 2017

Vous aurez remarqué l'installeur dans le menu Démarré :

Installeur de Visual Studio 2017
On obtient le même résultat en passant par le panneau de configuration mais que faut-il installer ? Aujourd'hui la doc est en anglais et ne correspond pas à celle de VS 2015.

Un rapide coup d'œil à la page suivante :

What's New in Visual Studio 2017

Pour se rendre compte que les choses ont changées : Visual Studio starts faster LoL MDR ... tout ça pour ça les ingés de Redmond sont véritablement facétieux.

"Visual Studio helps you stay focused on the big picture, especially for teams embracing DevOps."

Voilà c'est parfait pour les équipes qui se focalisent sur le DevOps.

Ce qu'il y a de nouveau dans Visual Studio 2017

Gérer le démarrage et les extensions au démarrage, un menu vous permet de faire cela :

Aide -> Gérer le niveau de performance de Visual Studio
A l'intérieur, on trouve :

Gérer le niveau de performance de Visual Studio
Franchement ... mais à quoi ça sert ?

Gestion des extension itinérantes

Dans le menu Outils :

Visual Studio -> Outils -> Extensions et mises à jour
Trois type d'icônes indiquant trois types d'itinérance :



• Roaming Roamed: Une extension qui fait partie de cette liste d'itinérance, mais qui n'est pas installée sur votre machine. (Vous pouvez les installer en utilisant le bouton Télécharger.)
• Roaming & Installed Roamed & Installed: Toutes les extensions qui font partie de cette liste d'itinérance et qui sont installées dans votre environnement de développement. (Si vous décidez que vous ne voulez pas vous déplacer, vous pouvez les supprimer en utilisant le bouton Arrêter l'itinérance.)
• Installed: toutes les extensions installées dans cet environnement, mais ne faisant pas partie de votre liste d'itinérance. (Vous pouvez ajouter des extensions à la liste d'itinérance à l'aide du bouton Démarrer l'itinérance.)

Vous n'y comprenez rien, ce n'est pas grave sans doute encore une fonctionnalité que ne restera pas ... ;-)

Le suite de l'installe c'est dans Visual Studio (2017) and Xamarin -> Setup and install

Modification de l'installation Visual studio 2017

Il faut donc lancer l'installeur de Visual Studio 2017 et cocher le bon bloc dans : Mobile et jeux (5) -> Développement mobile en .NET 
Installation Visual Studio 2017 -> Xamarin

Au moment de cliquer sur le bouton "Modifier"


ArrrGGG !
Mon disque "C:\" de 120 Go est déjà saturé pas assez de place pour installer les 18,77 GB nécessaires à l'installation  du package "Développement mobile en .NET Générez des applications multiplateformes pour iOS, Android ou Windows avec Xamarin".

Au secours ! Je vais faire un peu de place et je reviens ... ou pas !

Une demi journée après ...

Vérifier votre environnement Xamarin

Voilà une bonne chose, la possibilité de vérifier si tout est bien installé. Seulement voilà, même s'il est indiqué "Toutes les plateformes" c'est pour Visual Studio 2015 et pour VS 02017 c'est en anglais.

On créé un projet Xamarin :

Mon premier projet avec Xamarin
Trois types de modèles avec Xamarin :
  • Cross Platform App
  • Class Library
  • Application de Test d'UI
Choisir Cross Platform App le choix suivant est parmi :

Choix d'une application cross plateforme parmi - Blank ou Master Details
  • Blank App UWP (Universal Windows Platform)
  • Master Détails UWP with master-detail navigation pattern
Blocage du firewall :


Création de mon premier projet Xamarin

Choisissez la cible et les versions de la plateforme minimales prise en charge par votre application ... Oh pu(bip). On dirait bien que pour bosser avec tout ça il faut Visual Studio 2017 sur Windows 10. Et cela ne m'arrange pas !

D'ailleurs voici la prochaine Error Box :

Mon premier projet Xamarin créé avec Visual Studio 2017 et Windows 10 minimum !

Et en effet le projet UWP n'a pas été créé mais deux autres projets sont là :

Visual Studio 2017 - Xamarin - Windows 7
Je choisi Android, je clique bouton-droit "Choisir comme projet de démarrage."

Bouton droit sur Généré : Ca ne fonctionne pas !


Voici la sortie "Xamarin Diagnostics" :



Et l'exécution de l'application:

???
En fait, c'est l'émulateur qui s'exécute tout seul sans l'application.

Erreur au démarrage d'un émulateur incompatible avec ma plateforme de DEV
Ca ressemble à comme qui dirait qu'il faut acheter un nouveau PC avec un hard un peu plus étoffé et surtout un Windows 10 ...

Moi je sens que je vais aller à la plage ! Ou plutôt, je vais courir acheter un PC Windows 10 pour faire tourner tout ça !

Ou bien reprendre calmement en lisant tranquillement ici :
https://developer.xamarin.com/guides/

Nous verrons plus loin qu'il y a moyen de continuer en mettant à jour la plateforme.

Où en est-on avec Visual Studio 2017 et la Mise à jour 15.4.0 ?

Qu'est ce qu'il y a de nouveau dans Visual Studio 2017 ? Comment découvrir tout cela dans la version gratuite, la version Community. Et bien avant tout c'est l'heure de la mise à jour 15.4.0 !

Oui je sais, on est bientôt en 2018 mais j'ai installé Visual Studio 2017, il y a un moment déjà et je l'ai laissé un peu tombé. J'ai surtout travaillé avec la version Visual Studio 2015 professionnelle (pro donc plus de possibilités). Avec VS 2015 j'ai essayé de travailler pour iOS et Android sans trop de résultats, pas facile des simulateurs trop gourmands, le debug ne se lançait jamais une vrai galère.

Par contre pour ASP.NET MVC4 Visual Studio 2015 est parfait.

Je relance Visual Studio 2017 et voilà, déjà une mise à jour à faire ...


Visual Studio 2017 mise à jour version 15.4.0
Je n'ai pas encore utilisé Visual Studio 2017 qu'il me faut déjà le mettre à jour ... Que vais-je faire pendant ce temps ? Je clique sur Mise à jour et pof :

Visual Studio 2017 mise à jour 15.4.0 - Form Intéressante
Voici une Form intéressante ;) elle est inutile tout au moins ... J'adore ça, c'est vraiment intéressant, on ne perd pas son temps.


Et ça continue ...



Qu'est ce que tu veux que cela me foute, est-ce que j'ai le choix de toutes les façons ? ... Elles sont bien bonnes ces questions pour le moins hypocrites.

Et pendant ce temps on me propose d'apprendre, et bien pourquoi pas.

https://www.visualstudio.com/vs/getting-started/

Je vois que l'on peut apprendre avec Xamarin.


Essayons de télécharger un exemple avec Xamarin ...


Je clique sur le bouton "Download".
Je regarde ce que j'ai dans mon projet :


Pas mal, pas mal du tout, j'ai maintenant une structure que je connais bien avec trois parties. Une partie commune Todo, une partie du projet pour iOS et une partie pour Android.

Ca m'étonnerait que cela fonctionne avec ma version Visual Studio 2017 Community ...
En tous cas j'ouvre le .sln avec mon éditeur favori et je trouve :

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 14
VisualStudioVersion = 14.0.25420.1
MinimumVisualStudioVersion = 10.0.40219.1

Voilà que l'installe de la mise à jour de Visual Studio 2017 Community avec 15.4.0 est terminée. Je tente alors d'ouvrir le .sln :


Bas tient tu m'étonnes ! Je comprends cette façon de faire il n'y a aucune maîtrise le truc se plante lamentablement et après t'as un message d'erreur !

Et les insultes continuent de pleuvoir ... Maintenant il me faudrait Windows 10.

Installer le SDK Windows 10 pour la plateforme Universelle

Probablement que le projet UWP c'est un Windows Phone et qu'il faut le SDK correspondant. Je me demande si je vais pouvoir l'installer sur ma machine de développement actuelle qui est Windows 7

Et le rapport  de traduction de la solution :


Et bien on ne va pouvoir faire grand chose avec tout ça !

Conclusion sur la mise à jour 15.4.0

Pour vous dire que je ne trouve pas tout cela très confortable, toutes ces versions de Visual Studio toutes ces plateformes cibles, c'est un vrai gros bordel. C'est d'autant n'importe quoi que cela ne fonctionne pas. Ils auraient mieux fait de dire carrément les choses le développement Xamarin ne peut pas s'effectuer sous Windows 7.

Installation du SDK pour Windows la plateforme universelle

Installation du SDK Windows 10, je reprends plus haut je clique sur "Installer" et ça redémarre " encore et encore ...

Voici ce que VS me propose d'installer :


Et c'est reparti pour un tour ...



Puis je vois passer :  Microsoft.Net.CoreUWP


Tient tient ... En tous cas j'annule l'installation, j'ai autre chose à faire ... Je lance Visual Studio et là c'est le drame :


Ah merde ! Il va falloir réexécuter Visual Studio Installer.

Je vais aller à la plage ... ras le bol de toute cette daube.

Reprenons ... j'ai relancé l'installeur qui à fini par se terminer par un redémarrage.


Technique bien connu pour fixer les idéees de ce que j'ai installé et de la version avec laquelle je travail. Je créé une solution vide je regarde dedans :

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
VisualStudioVersion = 15.0.27004.2002
MinimumVisualStudioVersion = 10.0.40219.1


Et pourtant :


C'est bien la version 15.4.0 ...

Conclusion

Pour savoir où l'on en est exactement faisons la même chose que pour Visual Studio 2015 Community et allons voir un peu les templates de projets.

A comparer avec VS 2015 Community Ici.

Fichier -> Nouveu -> Projet :

Visual Studio 2017 Community - ASP.NET Core pour Windows Linux et mac OS 
Impressionnant sur le papier dans la pratique je ne vois pas encore bien. Sont-elles des applications qui peuvent être hébergée par tous ces serveurs ...

On voit bien également le .NET Core et le .NET Standard qui se distinguent.

Et la fameuse Windows universel.

La bonne nouvelle c'est que les choses avances vites tout cela devient un peu plus cohérent. La mauvaise nouvelle c'est que si vous souhaitez développer pour iOS ou Android vous n'avez pas installé la bonne version.

Dont worry ce n'est que du soft !

Modifier l'installation de Visual Studio 2017

Utilisez l'Installer : Visual Studio Installer pour modifier vote installation de Visual Studio 2017.

L'installer de Visual Studio 2017
Qui vous donne accès aux fonctionnalités installées :



Et maintenant je vais aller développer quelques applications ASP.NET ...

Et bien non !? Je vais dans le flag jaune de mon Visual Studio 2017 pour voir ce que l'on me dit et là la mise à jour de la version 15.4.1 est disponible ! ARRRRRRGGGGGGG.

Visual Studio 2017 Mise à jour 15.4.1
Ca devient gênant ! Ca n'en finira pas ! C'est insupportable ce produit qui n'en finit pas de se mettre à jour j'ai passé plus de temps à faire des mise à jour qu'à l'utiliser.

Visual Studio 2017 Community Mise à jour 15.4.1
Cette mise à jour à le bon goût d'être super rapide.

Installation Visual Studio 2017 - Nov 2017

Voilà maintenant que l'on me propose la mise à jour 15.4.3. C'est fun non ? Je commence cet article en souhaitant parler de la mise à jour 15.4.0 et me voilà déjà avec la 15.4.3. Je n'ai pas eu le temps d'utiliser Visual Studio 2017 Comunity, je passe plus de temps à le mettre à jour.

Mise à jour version 15.4.3
Il faudrait qu'ils se dépêchent de terminer cette version 2017 car on est bientôt en 2018.

Mise à jour 20/11/2017

Sincèrement je pensais le processus Visual Studio 2017 et Xamarin un peu stable mais il n'en est rien c'est une vraie catastrophe. Aujourd'hui on me demande de regarder ce qu'est Xamarin et je ne peux rien en faire, mon Visual Studio 2017 me propose maintenant la mise à jour 15.4.4 :

Visual Studio 2017 - Mise à jour 15.4.4

C'est pas fun du tout !

Décembre 2017 Installation de la version 15.

Et  c'est reparti pour un tour, j'ouvre mon Visual Studio 2017 il y a le flag jaune en haut à gauche qui me propose l'installation de la version 15.4.5, allons-y :

Visual Studio 2017 Communiy Installation Version 15.4.5
Pas fun du tout !

Denpendency Injection with Angular2

Vous aimeriez en savoir un peu plus au sujet d'Angular2 et comment se passe le design pattern d'injection des dépendances avec Angular2. Il me semble que c'est le sujet du moment celui que tous les web développeur aimeraient connaître. Je viens de lire plusieurs posts concernant ce sujet sur d'autres sites.

Le truc le plus marrant que j'ai lu ou vu c'est ça :

ADependency Injection in Angular2

https://pascalprecht.github.io/slides/di-in-angular-2/#/ non n'existe plus !

Claire net précis, ce n'est pas une vidéo, plutôt une présentation animée, rapide ; et c'est Fun, très Fun ! C'est pourquoi j'en prend note ici.

https://angular.io/guide/dependency-injection

Pourquoi faut-il un "framework" d'Injection des dépendances ?

Pour la testabilité. En prod on construira le système avec les "vrais objets" en test on utilisera des Mock Objets c'est à dire des objets avec un comportement spécial de test. Il se trouve que ce Design Patterns d'injection des dépendances est mieux fait en "Angular2", ce que montre cette présentation.

This To Be Continued !

Je viens d'avoir une démonstration de ce design pattern dans une présentation de ASP.NET Core ...

Coder une calculette en C#

Passer le test de la Calculette en C#.NET, on vous a déjà fait le coup ? Pour un recrutement, un poste de développeur, on vous demande d'écrire un programme en C# avec Visual Studio qui fonctionnera comme la calculatrice de Windows. C'est ici !

Coder une Calculatrice Windows en C# - C'est le test de la calculette

Alors permettez que je vous présente ma solution.

Ce code source fonctionne avec toute version de Visual Studio mais cette solution a été développée avec Visual Studio Community 2017.

Visual Studio Community 20017

Cahier des charges de la Calculatrice en C#

On va d'abord se fixer quelques limites dans un mini cahier des charges.

Présentation du projet

Il s’agit d'écrire un programme qui fasse la même chose que la Calculatrice livrée avec Windows, dans sa version "standard". On ne développera pas la version "calculatrice scientifique".

Pour simplifier encore un peu le développement

On ne développera pas le menu, ni l’aide, ni les fonctions suivantes : "Rac", "%", "1/x".
La calculatrice ressemblera donc à ceci :

Maquette de la Calculatrice Windows en C#

Et on va se fixer un temps limite développement du projet disons 4 heures.

Livraison du projet

Ecrire l'application comme s'il s'agissait d'une "vraie" application professionnelle, en vue d'être commercialisée.

Le code source de l'application doit être fourni, sous la forme d'un fichier .ZIP contenant le répertoire complet du projet C#.

Le projet en C#

Choix du Template de départ : Application Windows Forms (.NET Framework)
Donc on y a va, on fait : Ficher->Nouveau->Projet, on choisi :

Solution Visual Studio Calculette

Structure de la solution du projet :

Structure de la Solution Calculatrice

On verra que l'on va utiliser deux objets. La Form s'appelle FormCalculatrice et j'ai ajouté un petit fichier "readme.txt" ça fait plus pro. On peut y écrire par exemple l'historique du développement ou une ToDoList des chose qu'il reste à faire.

Conception Objet de la Calculatrice

On a besoin de deux objets, l'un pour effectuer le Calcul, l'autre pour gérer les fonctions Mémoires.

Objet Calcul

Vous trouverez les sources en bas de cet article, je ne vais donc pas trop détailler mais simplement on imagine que l'objet Calcul.cs prendra 3 états :

Les trois états de l'objet Calcul.cs

Objet Memoire ou Memory

Vous rappelez-vous à quoi servent les touches mémoires de la Calculatrice ?

MC : Memory Clear
MR : Memory Read
MS : Memory Save
M+ : Memory Add

Heureusement, j'avais un bon vieux Windows XP sous la main, il est vrai pour l'instant que l'aspect de cette calculatrice ressemble plus à celle de Windows XP qu'à celle de Windows 10... en tous les cas celle que j'ai sous Windows 7 ne me présente plus l'aide de la Calculette Windows et son aspect est très différent mais restons à nos moutons.

Il m'a suffit de faire "bouton droit" sur la touche et de Cliquer sur "Qu'est ce que c'est ?" pour obtenir la réponse :

Calculatrice en C# Trouver les fonctions mémoires

L'application Calculatrice m'affiche maintenant la réponse à quoi sert la touche "MC" :

Calculatrice fonctions mémoires

Voici l'aide correspondante à la touche "MC" de la Calculatrice. L'objet mémoire aura donc trois états :

Les trois états de l'objet Memory.cs

Conception de l'IHM

Aujourd'hui on dit UI ou UX bref, elle nous est donnée donc on copie au plus prêt :

Windows Forms de la Calculatrice

Il faut un outil de graphiste pour trouver la taille des boutons en pixels, je vous donne le résultat :
  • Width : 35
  • Height : 25

Programme principal de la Calculette

Pour la Testabilité & Evolution tous les boutons "chiffre" sont câblés sur la même gestion d'events :

buttonNumber_Click()

Tous les boutons "Operands" sont également câblés ainsi :

buttonOperand_Click()

On y gère l'état de l'objet "Calcul" qui passe de AquireOperand1 à BeginAquireOperand2

Enfin la gestion de l'events clique sur "Equal" qui exécute le calcul en utilisant l'Opérand1 et l'Opérande2 :

buttonEqual_Click()

Qui prend en compte le fonctionnement particulier de la Calculette comme par exemple lorsque le résultat du calcul précédent devient l'Opérande1 pour le calcul suivant.

Je vous laisse découvrir le reste des codes sources dans le .ZIP à télécharger à la fin de cet article.

Gestion des touches tapées au clavier dans la Calculette

La Calculatrice Windows est utilisable au clavier numérique pad et touches d'opérations. Pour faire la même chose dans notre Calculette nous allons cabler l'event KeyPress de la Form :

FormCalculatrice_KeyPress()

Code source de la fonction FormCalculatrice_KeyPress()

FormCalculatrice_KeyPress()

Astuce concernant la gestion des touches du clavier

Si vous en restez là, cela ne fonctionne pas. En effet il faut passer l'event à la Form sinon elle ne le gère pas. Pour ce faire il faut setter la propriété "KeyPreview" de la Form à True.

Pour gérer les événements clavier mettre à True la propriété KeyPreview

Conclusion

Voilà c'est fini ! En gros les grandes parties de ce petit projet "Test de la Calculette Windows". Qui n'est finalement pas si petit.

C'est vraiment désobligeant quand on vous demande d'effectuer ce genre de test pendant l'entretien d'embauche alors que vous avez une expérience comme la mienne en développement de logiciel.

Que même s'il existe un "mini" cahier des charges les pièges sont nombreux et vous ne manquerez pas de tomber dedans. Donc j'espère avoir cassé les pattes de ces recruteurs peu scrupuleux.

La prochaine fois nous verrons comment coder une calculette en WPF avec le modèle MVVM (Model View ViewModel) de Prims et l'utilisation d'un EventToCommand.

Ou peut-être que l'on choisira ASP.NET avec le modèle MVC (Model View Controller) pour en faire une application Web, ou bien en faire une application Multi-plateforme avec ASP.NET Core et Angular2.

Revenez nous voir.

Download calculator sources code

Here on github :


Here you can find Calculator sources code 

Download Source Code - Calculator in C#

Have fun! Don't forget to go to the beach!

Statistiques over years

2017 : 1826 visites
22/10/2018 : 2294
22/06/2019 : 3944 quel succès apparemment le sujet vous intéresse.
24/11/2020 : 7140 bientôt tout le monde saura coder une calculette.
17/11/2022 : 13302

En 2022, j'ai pu exécuter les sources sur ma machine Windows 10 avec Visual Studio Community 2019.

Cet article vous a plu vous a aidé dans votre pratique de développeur, surtout laissez-moi votre commentaire.

Même, juste un petit merci, would be please ;)