Développement Mobile & Flutter (IGL241)
Thème :
Junior
1 vues ·15/19 leçons

EXAMEN NORMAL — IGL241 : TERMINAUX MOBILES & DÉVELOPPEMENT MOBILE

Session 3

Module : IGL241 — Programmation pour Terminaux Mobiles
Niveau : Licence en Informatique
Durée : 3 heures | Note totale : 20 points
Année académique : 2025–2026

Consignes générales : Les quatre (4) parties sont indépendantes. Toutes les questions sont obligatoires. Justifiez vos réponses. La partie IV est une épreuve pratique sur machine.



PARTIE I — Marché Mobile, OS et Terminaux en 2026

Barème : 5 points | Durée conseillée : 40 min

Contexte professionnel

Vous êtes chargé(e) de cours invité(e) à l’École Supérieure de Technologie de Ngaoundéré (ESTN). Vous devez présenter à des étudiants de deuxième année l’état du marché mobile mondial en 2026, les grands acteurs et leurs implications pour un développeur logiciel africain.


Question 1 — Généralités et Marché Mobile (2 points)

  1. (0,5 pt) En 2026, l’accès à internet s’effectue « très majoritairement via les terminaux nomades ». Définissez ce qu’est une application mobile et distinguez-la d’une application de bureau (Desktop) et d’un site web sur trois critères.

  2. (0,5 pt) L’OS mobile remplit cinq rôles fondamentaux. Citez ces cinq rôles (tels que vus en cours : RAM, CPU/NPU, dispositifs, sécurité, fichiers) et expliquez brièvement l’un d’eux de votre choix.

  3. (0,5 pt) En 2026, le duopole iOS/Android persiste mais a été perturbé. Expliquez la dynamique géopolitique qui a permis à HarmonyOS de s’imposer comme troisième OS autonome et décrivez sa particularité technique vis-à-vis d’AOSP.

  4. (0,5 pt) La répartition historique du marché montrait qu’Android dominait en volume mondial et iOS dominait en valeur financière. Expliquez pourquoi cette asymétrie existe et ce qu’elle implique comme stratégie pour un développeur qui veut monétiser son application.


Question 2 — Terminaux Mobiles en 2026 (3 points)

  1. (0,5 pt) Le concept de terminal mobile a « largement dépassé le simple smartphone rectangulaire ». Citez quatre (4) formes de terminaux mobiles évoquées dans le cours (smartphones pliables, wearables…) et citez pour chacun un défi spécifique pour le développeur.

  2. (0,5 pt) Xiaomi est décrit comme le « deuxième constructeur mondial » avec l’HyperOS. En quoi l’HyperOS change-t-il l’expérience développeur par rapport à un Android « stock » ?

  3. (1,0 pt) Vous développez une application de paiement mobile destinée principalement au marché camerounais et africain. En vous appuyant sur ce que vous savez des constructeurs Transsion Holdings (Tecno, Infinix, Itel) qui dominent ce marché, développez une stratégie en quatre points techniques pour garantir que votre application soit fluide sur ces appareils.

  4. (1,0 pt) Les lunettes de réalité mixte (Smartglasses) sont mentionnées dans le cours comme une forme de wearable nécessitant de nouvelles compétences.

    • Quel OS développé par Apple est dédié à ce type d’appareils ?
    • Qu’est-ce qu’une API ARKit et dans quel type d’interaction utilisateur l’utilise-t-on ?
    • Quel est le défi principal pour un développeur qui doit adapter une application standard aux lunettes mixtes ?


PARTIE II — Types d’Applications, PWA, Embarqué & JS

Barème : 5 points | Durée conseillée : 45 min

Contexte professionnel

Vous êtes consultant(e) technique indépendant(e). Trois clients vous soumettent leurs projets : un hôpital veut un système embarqué de surveillance de patients, une ONG veut une app accessible même sans internet dans les zones rurales, et une banque veut une app cross-platform performante. Vous devez les orienter technologiquement.


Question 3 — Types d’applications et PWA (2 points)

  1. (0,5 pt) Pour l’ONG opérant en zone rurale sans connectivité stable : quelle approche technologique recommandez-vous entre une Application Native, une Application Web ou une PWA ? Justifiez votre choix en citant la fonctionnalité technique clé qui répond au besoin « sans internet ».

  2. (0,5 pt) Les Service Workers sont le cœur des PWA. Expliquez leur fonctionnement technique en répondant aux questions :

    • Où s’exécutent-ils (thread principal ou arrière-plan) ?
    • Comment permettent-ils le fonctionnement hors-ligne (offline) ?
    • Comment permettent-ils d’envoyer des notifications push même quand l’app est fermée ?
  3. (0,5 pt) Pour la banque, qui hésite entre une application native et une application hybride : dressez le tableau comparatif suivant (une ligne par technologie, comparer sur les axes : performance, coût, accès hardware, distribution).

  4. (0,5 pt) Une application hybride utilise une WebView. Expliquez la limite des WebView pour une application bancaire nécessitant une animation fluide à 120 FPS pour ses graphiques de course boursière.


Question 4 — Programmation Embarquée pour l’hôpital (2 points)

  1. (0,5 pt) L’hôpital veut monitorer en temps réel le rythme cardiaque des patients en réanimation. Pourquoi ce cas d’usage relève-t-il de la programmation embarquée et non du développement d’une app mobile classique ? Quelles sont les deux caractéristiques fondamentales qui distinguent un système embarqué dans ce contexte ?

  2. (0,5 pt) Pour ce système critique, le responsable médical demande un langage qui garantisse une sécurité mémoire absolue sans risque de crash inopiné. Quel langage vu en cours recommandez-vous en 2026, et pourquoi ce langage est-il supérieur au C pour ce cas précis ?

  3. (0,5 pt) Qu’est-ce qu’une mise à jour OTA (Over-The-Air) pour un système embarqué ? Pourquoi est-elle particulièrement risquée et comment qualifie-t-on un appareil rendu inutilisable par une mise à jour ratée ?

  4. (0,5 pt) Citez trois domaines d’application concrète de la programmation embarquée vus en cours (hors domaine médical, pour varier). Pour chacun, donnez un exemple précis de logiciel ou de système embarqué.


Question 5 — Écosystème JavaScript et outils (1 point)

  1. (0,5 pt) Expliquez la promesse « Write Once, Run Anywhere » du développement cross-platform avec JavaScript. En quoi la maîtrise de JS/TypeScript permet-elle à un développeur web de créer une application mobile sans réapprendre Kotlin ou Swift ?

  2. (0,5 pt) Citez et décrivez brièvement les deux outils de gestion de paquets JS vus en cours (gestionnaires de dépendances). Quelle est la différence entre une installation locale (sans flag) et une installation globale (-g) d’un paquet ?



PARTIE III — Frameworks, Flutter/Dart & Consommation API

Barème : 5 points | Durée conseillée : 45 min

Contexte professionnel

Vous travaillez pour MedMobile Cameroun, une startup qui développe une application Flutter connectée à une API Laravel pour la prise de rendez-vous médicaux en ligne. Votre rôle est de former les nouveaux développeurs juniors sur les fondations techniques du projet.


Question 6 — React Native, Ionic vs Flutter (2 points)

  1. (0,5 pt) Ionic est décrit comme « fondamentalement une WebView » mais avec un framework d’animation (Stencil) qui « contrefait l’intelligence du défilement natif ». Expliquez ce que cela signifie concrètement du point de vue de l’utilisateur et pourquoi cela crée des problèmes de performance sur des listes très denses.

  2. (0,5 pt) React Native utilise un « Bridge ». Expliquez ce qu’est ce Bridge, comment il communique entre le code JavaScript et les composants natifs iOS/Android, et quel est son inconvénient principal pour des animations très complexes.

  3. (0,5 pt) .NET MAUI (successeur de Xamarin) utilise C# et non JavaScript/Dart. À quel type d’entreprise ou d’écosystème technique ce framework est-il particulièrement adapté ? Citez un avantage distinctif par rapport aux solutions basées sur JavaScript.

  4. (0,5 pt) Flutter dessine ses propres pixels via son moteur Impeller. Expliquez pourquoi cela garantit une interface visuellement identique sur un iPhone 15 Pro Max et sur un vieux Tecno Spark. Quel est l’avantage de cette approche par rapport à l’approche de React Native (composants natifs OS) ?


Question 7 — Flutter, Consumption API Laravel & Asynchronisme (3 points)

  1. (1,0 pt) Une application Flutter doit afficher la liste des médecins disponibles depuis l’API Laravel (GET /api/medecins).

    • Pourquoi les requêtes réseau en Dart doivent-elles impérativement être asynchrones (async / await) ? Quel serait l’impact visuel sur l’application si elles étaient synchrones (bloquantes) ?
    • Qu’est-ce qu’un Future<T> en Dart ? Comment le widget FutureBuilder l’utilise-t-il pour gérer les trois états possibles d’une requête (attente, erreur, données reçues) ?
  2. (1,0 pt) L’API Laravel renvoie le JSON suivant pour un médecin :

    {
        "id": 42,
        "nom": "Dr. FOTSO Ernest",
        "specialite": "Cardiologie",
        "disponible": true
    }
    
    • Expliquez ce qu’est un PODO (Plain Old Dart Object) et pourquoi il est indispensable de « mapper » ce JSON vers une classe Dart typée.
    • Écrivez la classe Dart Medecin correspondant à ce JSON avec : un constructeur, les attributs typés, et une méthode statique fromJson(Map<String, dynamic> json) pour la désérialisation.
  3. (1,0 pt) L’application utilise Riverpod comme gestionnaire d’état pour stocker le token d’authentification Sanctum.

    • Expliquez pourquoi Riverpod est préféré à Provider pour les applications critiques (fiabilité mémoire, gestion des widgets disparus).
    • Où le Bearer Token reçu de l’API Laravel doit-il être stocké de manière sécurisée sur le téléphone ? Citez la bibliothèque Flutter recommandée dans le cours pour ce stockage sensible.
    • Comment ce token est-il automatiquement injecté dans les requêtes HTTP suivantes (format du Header HTTP attendu par auth:sanctum sur Laravel) ?


PARTIE IV — Travaux Pratiques : Interface de Connexion + APK + Émulateur

Barème : 5 points | Épreuve sur machine

Contexte professionnel

Vous êtes développeur(se) mobile à SantéMobile Cameroun, une startup de télémédecine. Le product owner vous demande de livrer aujourd’hui le premier prototype de l’écran de connexion Ionic de l’application MedRDV, ainsi qu’un fichier APK de debug pour les tests internes de l’équipe sur des vrais téléphones Android.


Exercice 1 — Projet Ionic et interface de connexion (2,5 points)

Travail demandé :

  1. (0,5 pt) Créez un projet Ionic nommé med-rdv avec le template sidemenu (template avec menu latéral). Donnez la commande exacte. Après création, quelle est la commande pour démarrer l’aperçu dans le navigateur ?

  2. (0,5 pt) Générez une nouvelle page nommée connexion dans le projet. Donnez la commande. Expliquez quels fichiers sont automatiquement créés par cette commande (listez les 3 ou 4 fichiers avec leurs extensions et leurs rôles respectifs).

  3. (1,5 pt) Dans connexion.page.html, implémentez l’interface de connexion MedRDV suivante :

    Maquette attendue :

    • Un <ion-header> avec <ion-toolbar color="danger"> (rouge médical) et titre « MedRDV » centré.
    • Un <ion-content class="ion-padding"> contenant :
      • Une image ou un avatar centré (<ion-avatar> ou <img>) représentant un médecin (utilisez un ion-icon name="medkit" de grande taille si pas d’image).
      • Un sous-titre <h2> centré : « Connexion au portail médical ».
      • Un <ion-list> contenant :
        • <ion-item> avec <ion-label position="floating"> : « Email professionnel », et <ion-input type="email">.
        • <ion-item> avec <ion-label position="floating"> : « Mot de passe », et <ion-input type="password">.
      • Un <ion-button expand="block" color="danger"> : « Accéder à mon espace ».
      • Un <div class="ion-text-center"> avec texte : « Première connexion ? Contactez votre administrateur. ».

Exercice 2 — Génération APK et Émulateur Android Studio (2,5 points)

Travail demandé :

  1. (0,5 pt) Avant de générer l’APK, il faut préparer le projet. Donnez dans l’ordre les deux commandes nécessaires :

    • La commande pour compiler les assets web (HTML/CSS/JS) en version de production.
    • La commande pour synchroniser ces assets compilés dans le projet Android natif de Capacitor.
  2. (0,5 pt) Donnez la commande Ionic qui permet d’ouvrir directement le projet Android natif dans Android Studio.

  3. (1,0 pt) Dans Android Studio, réalisez les étapes suivantes et décrivez-les précisément :

    • Ouvrir le Device Manager et créer un émulateur AVD de type Pixel 6 avec l’image Android 14 (API 34).
    • Lancer l’émulateur.
    • Lancer l’application sur l’émulateur via le menu Run.
    • Vérifier que l’écran de connexion MedRDV s’affiche correctement (décrire ce que vous observez).
  4. (0,5 pt) Localisez et copiez le fichier APK de debug généré :

    • Quel est le chemin exact du fichier APK généré dans Android Studio (chemin relatif depuis la racine du projet Ionic) ?
    • Quelle est la différence entre un APK debug et un APK release en termes de signature numérique et d’utilisation prévue (test interne vs distribution publique) ?

— Fin de l’examen Session 3 — Bon courage à toutes et à tous —


Barème récapitulatif :

Partie Thème Questions Total
I Marché Mobile, OS & Terminaux 2026 Q1 (2 pts) + Q2 (3 pts) 5 pts
II Types d’Apps, PWA, Embarqué & JS Q3 (2 pts) + Q4 (2 pts) + Q5 (1 pt) 5 pts
III Frameworks, Flutter/Dart & API Laravel Q6 (2 pts) + Q7 (3 pts) 5 pts
IV TP : MedRDV Connexion + APK + Émulateur Ex1 (2,5 pts) + Ex2 (2,5 pts) 5 pts
Total 20 pts

Prêt à passer à la suite ?

Vous avez terminé cette leçon sur EXAMEN NORMAL — IGL241 : TERMINAUX MOBILES & DÉVELOPPEMENT MOBILE. Continuez votre apprentissage avec la prochaine leçon ou explorez d'autres formations.