Plan du site  
français  English
pixel
pixel

Articles - Étudiants SUPINFO

Introduction

De nos jours, nous utilisons de nombreux équipements : parfois plusieurs ordinateurs, téléphones, tablettes et même des équipements connectés (téléviseurs, montres, lunettes). Tous ces équipements sont autant de moyens de capter de mêmes informations dans différentes conditions, selon le moment ou les activités. Au fur et à mesure des évolutions techniques, tout est connectable et devient intelligent, et ce qu'importe le système d'exploitation installé sur ces différents terminaux.

De plus en plus, la technologie sous-jacente d'une application importe peu et les différences pour l'utilisateur se réduisent ; on citera les applications connectées à internet ou les sites web avec affichage mobile. L'accent est porté sur l'offre universelle de l'information, qu'importe le terminal, car c'est ce à quoi les utilisateurs s'attendent. Cependant, cette démarche implique pour les entreprises et développeurs un travail beaucoup plus chronophage pour développer un même concept sous-jacent d'application sur de nombreux terminaux. On ne compte plus aujourd'hui les applications possédant leur site internet, leur application Windows 10, iOS et Android. Toutes ces applications sont non seulement à réaliser sur ces différents supports, mais également à maintenir et à adapter selon leur support.

Si les applications universelles Windows résolvent une partie de ce problème en englobant via une seule base de code tous les terminaux Windows, elles ne permettent pas de créer une application Android. Des équipes de développeurs ont adressé ce besoin en créant notamment Apache Cordova (PhoneGap) ou jQuery Mobile, des librairies Web permettant d'unifier l'expérience utilisateur et le code quel que soit le système d'exploitation sous-jacent. On gagne ainsi un temps précieux de développement en sacrifiant un peu de performances. D'autres équipes de développeurs ont préféré réaliser une interaction avec chaque système d'exploitation beaucoup plus forte et créer des librairies générant du code compilé pour chaque plateforme ; Xamarin (C#) et React Native (JavaScript) en font partie.

Figure 1.1. React Native (à gauche) et Xamarin (à droite)

React Native (à gauche) et Xamarin (à droite)

Xamarin est une librairie créée pour permettre aux développeurs de réaliser des applications multi-plateformes avec une seule base de code. Il s'agit d'offrir via les langages C# et XAML une application compilée pour Android, iOS, MacOS et Windows 10 universel (donc toutes les familles d'équipements vues précédemment). Revendiquant environ 1.400.000 développeurs début 2017, une application Xamarin serait compatible avec plus de 2,5 milliards d'équipements actuellement sur le marché.

Xamarin a été créé en mai 2011 par Nat Friedman et Miguel de Icaza. Si leurs biographies sont accessibles, on citera tout de même ici qu'ils ont créé et présidé la fondation GNOME et créé le projet Mono portant le framework .NET sur Mac et Linux. Pendant cinq ans, Xamarin s'est développé en étendant la couverture des systèmes supportés et le support de leurs fonctionnalités en créant les projets Xamarin.Mac, Xamarin.iOS et Xamarin.Android. L'environnement de développement intégré MonoDevelop a été réutilisé sous le nom Xamarin Studio pour fournir aux développeurs un environnement de travail complet, pour une licence annuelle de $300 par développeur ou entre $1000 et $2000 par entreprise.

Le 24 février 2016, Microsoft achète la société Xamarin et intègre directement dans leur offre de développement tous les outils créés par Xamarin. Depuis cet achat, Xamarin est entièrement gratuit.

Figure 1.2. Equipements ciblés par Xamarin (source : Xamarin University)

Equipements ciblés par Xamarin (source : Xamarin University)

Différentes solutions pour différents usages

Les modèles de projets Visual Studio pour Xamarin sont actuellement au nombre de six : deux modèles Xamarin.Forms, deux modèles Native, un modèle pour créer des librairies partagées et un modèle pour réaliser des tests concernant l'interface. Au sein de ce chapitre seront détaillées les différences entre les projets de types Forms et Native.

Xamarin.Forms est une solution permettant de maximiser le code partagé entre les applications. L'interface est mutualisé au maximum (tout en respectant les expériences utilisateur des différents systèmes d'exploitation) est propose de développer la grande majorité de son application via du code partagé.

[Note]

Xamarin revendique d'ailleurs la compatibilité avec 100% des bibliothèques Android comme iOS.

Xamarin.Forms est conseillé pour :

  • Des applications agissant majoritairement sur des données

  • Des prototypes, car Xamarin.Forms est rapide à mettre en place

  • Des applications ne nécessitant que peu de fonctionnalités spécifiques à chaque plateforme

  • Des applications pour lesquelles le partage de code est plus important que créer des interfaces complexes et personnalisées

Figure 1.3. Exemples d'applications Xamarin.Forms (Source : developer.xamarin.com)

Exemples d'applications Xamarin.Forms (Source : developer.xamarin.com)

A l'inverse, une solution Native est plutôt conçue pour :

  • Des applications nécessitant des interactions particulières

  • Des applications nécessitant des interface complexes et très élaborées

  • Des applications utilisant des fonctionnalités spécifiques pour chaque système d'exploitation

  • Des applications pour lesquelles les interfaces complexes sont plus importantes que partager du code

Figure 1.4. Exemples d'applications Native (Source : developer.xamarin.com)

Exemples d'applications Native (Source : developer.xamarin.com)

Quel que soit le type de projet choisi, les applications possèderont une base de code partagée avec des projets spécifiques pour chacun des systèmes. La différence se situera dans la philosophie et les outils mis à la disposition du développeur.

Créer une application Xamarin crée automatiquement différents projets dans la solution :

  • Un projet partagé (de forme PCL ou non)

  • Un projet Android

  • Un projet iOS

  • Selon les modèles, soit un projet UWP, soit trois projets (Windows 10 ainsi Windows 8.1 et Windows 8.1 Phone pour la rétrocompatibilité)

On retrouvera pour chacun des projets spécifiques à chaque plateforme une classe de lancement (Main.cs pour iOS, MainActivity.cs pour Android, App.xaml.cs pour Windows) et des fichiers relatifs au paramétrage de l'application (packages.config et fichiers plist pour iOS, AndroidManifest.xms pour Android, project.json et Package.appxmanifest pour UWP). Chaque classe de lancement fera référence au projet partagé contenant le code Xamarin nécessaire au lancement et à la gestion du cycle de vie de l'application dans la classe App :

// Classe App dans le projet partagé
public partial class App : Application
{
  public App()
  {
    InitializeComponent();
    MainPage = new NavigationPage(new MainPage());
  }

  protected override void OnStart()
  {
    // Déclenchée au démarrage de l'application
  }

  protected override void OnSleep()
  {
    // Déclenchée à la suspension de l'application
  }

  protected override void OnResume()
  {
    // Déclenchée à la reprise de l'application
  }
}
[Note]

Le cycle de vie de l'application a été traité au chapitre 8 de ce cours. Si ces méthodes vous interpellent, vous pouvez y accéder à cette adresse.

Environnement

Pour terminer cette introduction, il est nécessaire de lister ici les outils nécessaires au développement via Xamarin.

Windows

Pour développer une application Xamarin sous Windows, il faudra disposer de Visual Studio 2015 ou ultérieur ainsi que de l'extension Xamarin. Cette extension prendra en charge l'ajout des modèles et extensions pour Visual Studio, ainsi que la prise en charge d'IntelliSense dans un projet Xamarin. Elle installera en outre les émulateurs Android et en permettra la gestion via les logiciels AVD Manager et ADB.

[Note]

Les logiciels AVD Manager et ADB permettent de prendre en charge le développement Android de manière générale et non seulement pour Xamarin. Des informations supplémentaires pourront être trouvées à ce sujet dans notre cours 3AND.

Pour télécharger Xamarin pour Visual Studio, il suffit de se rendre à l'adresse suivante : https://www.xamarin.com/download.

Il est possible d'utiliser un équipement réel et non émulé pour tester ses applications et ce, sans autre démarche supplémentaire qu'autoriser le mode développeur sur le terminal en question. Il est à noter que le développement d'applications Mac OS sous Windows 10 n'est à l'écriture de ces lignes pas encore possible.

Mac OS

Une application Xamarin sur Mac OS se réalise via Visual Studio pour Mac 2015 ou ultérieur ainsi que l'extension Xamarin. Cependant, il faudra également disposer de Mac OS Sierra ou ultérieur, avec le logiciel Xcode. Ce dernier permettra de prendre en charge l'émulation des systèmes iOS (iPhone, iPad) et watchOS (montres connectées).

Pour télécharger Xamarin pour Visual Studio, il suffit de se rendre à l'adresse https://developer.xamarin.com/visual-studio-mac/.

Tout comme Windows, Xamarin installera les ressources nécessaires au développement Android, notamment grâce aux logiciels AVD Manager et ADB. L'utilisation d'un équipement Android réel comme virtuel sera possible sans configuration supplémentaire. Cependant pour le développement iOS, s'il est possible d'utiliser un réel équipement, il ne sera possible qu'après l'enregistrement de celui-ci via le site https://developer.apple.com.

[Note]

Une démarche est disponible sur le site de Xamarin pour la gestion des équipements Apple pour le développement à cette adresse.

De la même manière, le développement d'applications Windows sous Mac OS n'est pas encore possible.

Des informations supplémentaires et détaillées sur les prérequis système à l'utilisation de Xamarin sont disponibles à cette adresse.

A propos de SUPINFO | Contacts & adresses | Enseigner à SUPINFO | Presse | Conditions d'utilisation & Copyright | Respect de la vie privée | Investir
Logo de la société Cisco, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société IBM, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Sun-Oracle, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Apple, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Sybase, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Novell, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Intel, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Accenture, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société SAP, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Prometric, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo du IT Academy Program par Microsoft, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management

SUPINFO International University
Ecole d'Informatique - IT School
École Supérieure d'Informatique de Paris, leader en France
La Grande Ecole de l'informatique, du numérique et du management
Fondée en 1965, reconnue par l'État. Titre Bac+5 certifié au niveau I.
SUPINFO International University is globally operated by EDUCINVEST Belgium - Avenue Louise, 534 - 1050 Brussels