Développement Mobile : Introduction au Développement d’Applications

Mobile
Android
Kotlin
iOS
Flutter
React Native
Ionic
Lecture
Introduction au développement d’applications mobiles: plateformes, frameworks, outils et bonnes pratiques. Focus sur Android/Kotlin et solutions multiplateformes.
Auteur
Affiliations

Université de Toulon

LIS UMR CNRS 7020

Date de publication

2025-02-27

État du marché mobile en 2025

  • Parts de marché mondiales:
    • Android: ~72%
    • iOS: ~27%
    • Autres: ~1%
  • Plus de 7 milliards d’utilisateurs de smartphones
  • Le marché des applications représente plus de 200 milliards de dollars

Projet Fil Rouge

  • Thème : “Proposer une application originale de Choix Social qui utilise les atouts d’un usage mobile.”

    “L’application vise à faciliter la prise de décisions collectives en permettant aux utilisateurs de voter électroniquement sur diverses propositions, questions ou problèmes. Elle repose sur des principes de la théorie du choix social, où les préférences et les opinions de chaque individu contribuent à la décision finale.”

  • Travail en équipe sur une application mobile complète :

    • Développement en parallèle de la même applications avec chacune des solutions.
    • Utilisation d’un serveur REST ou d’une base de données NoSQL.

Rendu et évaluation

  • Rendu : Une application mobile implantée avec plusieurs solutions techniques prototype. Un document qui propose une comparaison des approches illustrées par le projet, dresse un bilan et justifie le choix d’une architecture pour un éventuel produit industriel.

  • Evaluation double :

    • Créativité : Capacité et méthodologie suivie par l’équipe pour s’approprier les spécifités du développement mobile pour proposer une application originale dans le thème demandé.
    • Ingénierie: Capacité de l’équipe à apprendre/utiliser et comparer les différentes solutions techniques.

Plateformes mobiles principales

  • Android:
    • Système d’exploitation développé par Google.
    • Utilise Java et Kotlin comme langages de programmation principaux.
    • Présence sur une grande variété de dispositifs.
  • iOS:
    • Système d’exploitation développé par Apple.
    • Utilise Swift et Objective-C comme langages de programmation principaux.
    • Exclusif aux dispositifs Apple tels que l’iPhone et l’iPad.
  • Web:
    • Application Web dans un conteneur Natif.

Approches de développement mobile

Applications natives

Avantages
  • 🚀 Performance
    • Optimisation maximale
    • Animations fluides
    • Temps de réponse minimal
  • 🔌 Intégration
    • Accès complet aux APIs
    • Support natif du système
    • Fonctionnalités avancées
  • 👥 Expérience
    • UX optimale
    • Design système natif
    • Accessibilité native
Inconvénients
  • 💰 Ressources
    • Coûts élevés
    • Équipes spécialisées
    • Double développement
  • ⏱️ Temps
    • Cycle long
    • Maintenance multiple
    • Formation spécifique
  • 🔒 Contraintes
    • Dépendance plateforme
    • Compétences distinctes
    • Distribution contrôlée

Applications multiplateformes

Avantages
  • 🎯 Développement
    • Code unique
    • Équipe unique
    • Déploiement unifié
  • 💰 Économie
    • Coûts réduits
    • Maintenance simplifiée
    • Time-to-market rapide
  • 🔄 Flexibilité
    • Mise à jour simultanée
    • Adaptation facile
    • Réutilisation du code
Inconvénients
  • Performance
    • Légèrement réduites
    • Overhead framework
    • Taille plus grande
  • 🔨 Limitations
    • APIs restreintes
    • UX compromise
    • Graphismes limités
  • 📦 Dépendances
    • Framework externe
    • Mises à jour forcées
    • Support variable

Langages de programmation

Android

Java
  • Language historique pour Android (depuis 2008)
  • Orienté objet, mature et stable
  • Grande bibliothèque standard
  • Importante communauté de développeurs
  • Support complet dans Android Studio
Kotlin
  • Language moderne adopté officiellement par Google (2019)
  • 100% interopérable avec Java
  • Syntaxe concise et sûre
  • Fonctionnalités modernes: null-safety, coroutines
  • Recommandé pour les nouveaux projets Android

iOS

Swift
  • Langage moderne créé par Apple (2014)
  • Remplace progressivement Objective-C
  • Syntaxe moderne et sécurisée
  • Performances optimisées
  • Support natif des dernières APIs iOS
Objective-C
  • Langage historique d’iOS
  • Encore présent dans de nombreuses applications
  • En cours de remplacement par Swift
  • Maintenance des applications existantes

Multiplateforme

Web Technologies
  • HTML5/CSS3/JavaScript
    • Standards du web moderne
    • Frameworks populaires: React, Angular, Vue
    • PWA (Progressive Web Apps)
Langages spécifiques
  • Dart (Flutter)
    • Optimisé pour les UI
    • Compilation native
    • Hot Reload
  • TypeScript (Ionic/Angular)
    • Typage statique
    • Orienté objet
    • Excellent support IDE

Outils de développement

Android Studio

🛠️ Caractéristiques principales
  • IDE officiel pour Android développé par Google
  • Basé sur IntelliJ IDEA
  • Support complet de Java et Kotlin
  • Émulateur Android intégré
🎯 Fonctionnalités clés
  • Layout Editor visuel
  • Profilers de performances
  • Debugger avancé
  • Gestion des SDK
  • Intégration Git

Xcode

🛠️ Caractéristiques principales
  • IDE officiel Apple pour iOS/macOS
  • Disponible uniquement sur macOS
  • Support complet Swift et Objective-C
  • Simulateur iOS intégré
🎯 Fonctionnalités clés
  • Interface Builder
  • Instruments pour profilage
  • TestFlight intégré
  • Asset Catalog
  • SwiftUI Preview

Visual Studio Code

🛠️ Caractéristiques principales
  • IDE léger et extensible
  • Multi-plateforme (Windows, macOS, Linux)
  • Excellent pour le développement web
  • Grande collection d’extensions
🎯 Extensions recommandées
  • React Native Tools
    • Débogage et IntelliSense
  • Flutter
    • Support Dart et Flutter
  • Angular Essentials
    • Suite complète pour Angular

Outils complémentaires

📱 Tests et débogage
  • Firebase Test Lab
    • Tests sur vrais appareils
  • Chrome ou Firefox DevTools
    • Débogage web et PWA
🔧 Utilitaires
  • Postman
    • Tests d’API REST
  • GitHub/GitLab
    • Gestion de version
  • Figma/Sketch
    • Design d’interface

Points Majeurs du Développement Mobile

Points Clés à Maîtriser Pour toute solution de développement mobile, quatre aspects fondamentaux doivent être étudiés et maîtrisés :

  1. Interface Utilisateur (UI)
    • Composants et layouts
    • Adaptation aux écrans
    • Navigation et flux
    • Thèmes et styles
  2. Expérience Utilisateur (UX)
    • Performance et réactivité
    • Ergonomie mobile
    • Accessibilité
    • Modes hors-ligne
  1. Gestion des Données
    • Stockage local
    • État de l’application
    • Cache et persistance
    • Synchronisation
  2. Communication Backend
    • APIs REST
    • Temps réel
    • Sécurité
    • Gestion réseau

UI Native

  • Android (XML/Jetpack Compose)
    • Composants Material Design
    • Layouts Android natifs
    • Animations fluides natives
    • Accès direct aux widgets système
  • iOS (Storyboards/SwiftUI)
    • Composants Human Interface
    • Auto Layout
    • Animations natives
    • Intégration système parfaite

UI Multiplateforme

  • Flutter
    • Design unique et cohérent
    • Widgets personnalisables
    • Rendu graphique propre
    • Performance proche du natif
  • React Native
    • Composants natifs
    • Style façon CSS
    • Hot Reload
    • Large écosystème
  • Ionic
    • Standards web (HTML/CSS)
    • Composants pré-conçus
    • Adaptation automatique
    • PWA ready

UI Hybride

  • Web embarqué
    • Interface web classique
    • WebView native
    • Plugins natifs
    • Déploiement facile
  • PWA
    • Site web responsive
    • Installation possible
    • Mode hors-ligne
    • APIs web modernes

Expérience Utilisateur (UX)

  • Facilité d’utilisation: Interface intuitive et conviviale.
  • Performances: Réactivité et fluidité de l’application.
  • Accessibilité: Assurer l’accessibilité pour tous les utilisateurs.

Gestion des Données

💾 Stockage Local
  • Fichiers
    • Stockage simple et direct
    • Cache et ressources
    • Documents utilisateur
    • Préférences d’application
  • Base de données
    • Données structurées
    • Requêtes complexes
    • Relations entre données
    • Indexation et recherche
☁️ Stockage Distant
  • Solutions Cloud
    • Services managés (Firebase, AWS)
    • APIs personnalisées (REST)
    • Temps réel (WebSocket)
    • Base de données cloud
  • Synchronisation
    • Mode hors-ligne
    • Résolution de conflits
    • Mise à jour en arrière-plan
    • Optimisation réseau

Communication Backend

🌐 APIs & Services
  • REST
    • Architecture client-serveur
    • Opérations CRUD standards
    • Format JSON/XML
    • Stateless
  • GraphQL
    • Requêtes flexibles
    • Données optimisées
    • Schema typing
    • Single endpoint
⚡ Temps Réel
  • Solutions
    • WebSockets
    • Server-Sent Events
    • Firebase Realtime
    • SignalR
  • Use Cases
    • Chat/Messaging
    • Notifications Push
    • Live Updates
    • Real-time sync
🔒 Sécurité
  • Authentification
    • OAuth 2.0
    • JWT tokens
    • API keys
    • Social auth
  • Protection
    • HTTPS/SSL
    • Rate limiting
    • Data encryption
    • Access control

Applications Natives Android

Principes Fondamentaux

📱 Définition
  • Application Native Android
    • Développée spécifiquement pour Android
    • Utilise Java ou Kotlin (recommandé)
    • Suit les guidelines Material Design
    • Accès natif aux APIs système
  • Architecture
    • Components Android (Activities, Services)
    • Cycle de vie des composants
    • Gestion des ressources
    • Support multi-densité

Caractéristiques Clés

⚡ Avantages Techniques
  • Performance
    • Exécution native
    • Optimisation GPU
    • Gestion mémoire efficace
    • Temps de démarrage rapide
  • Intégration
    • APIs système complètes
    • Hardware access
    • Background services
    • System notifications
🎯 Bénéfices Utilisateur
  • Expérience Native
    • UI/UX Android standard
    • Animations fluides
    • Gestes système
    • Multi-fenêtrage
  • Distribution
    • Google Play Store
    • In-app purchases
    • App bundles
    • Play Console analytics

Outils & Environnement

🛠️ Développement
  • Android Studio
    • IDE officiel
    • Layout Editor
    • Performance profilers
    • Debugging avancé
  • SDKs & Tools
    • Android SDK
    • Build tools
    • Emulateurs
    • Testing frameworks

Applications Flutter

Principes Fondamentaux

📱 Framework Flutter
  • Définition
    • Framework UI open-source by Google
    • Développement multiplateforme
    • Langage Dart moderne et typé
    • Interface déclarative avec widgets
  • Architecture
    • Widget Tree
    • State Management
    • Hot Reload
    • Custom rendering engine

Caractéristiques Clés

⚡ Avantages Techniques
  • Performance
    • Compilation native (ARM/x64)
    • Rendering engine dédié
    • 60/120 FPS animations
    • Custom widgets optimisés
  • Développement
    • Hot Reload instantané
    • Code unique multiplateforme
    • Widgets personnalisables
    • Tests automatisés intégrés
🎯 Bénéfices Projet
  • Productivité
    • Time-to-market rapide
    • Équipe unique
    • Maintenance simplifiée
    • Large écosystème packages
  • Déploiement
    • iOS App Store
    • Google Play Store
    • Web (PWA)
    • Desktop (Beta)

Outils & Écosystème

🛠️ Développement
  • Flutter SDK
    • CLI puissante
    • DevTools complets
    • Profilers intégrés
    • Documentation riche
  • IDE Support
    • Android Studio/IntelliJ
    • VS Code
    • DartPad (web)
    • Extensions dédiées

Les Applications avec React Native

  • Qu’est-ce que React Native ?
    • Framework open-source de Facebook pour le développement d’applications multiplateformes.
    • Utilise JavaScript et React.
  • Caractéristiques de React Native
    • Développement rapide.
    • Partage de code entre les plateformes.
    • Utilisation de composants React pour une interface utilisateur déclarative.
    • Compilation en code natif pour plusieurs plateformes.

Les Applications avec Ionic/Angular

  • Qu’est-ce que Ionic ?
    • Framework open-source pour le développement d’applications mobiles multiplateformes.
    • Utilise des technologies web standard : HTML, CSS, JavaScript/TypeScript.
  • Caractéristiques d’Ionic
    • Développement rapide : Réutilisation de compétences web existantes.
    • Composants UI : Bibliothèque de composants prêts à l’emploi pour une interface utilisateur moderne.
    • Performance : Applications réactives et performantes grâce à l’utilisation de technologies modernes comme Angular ou React.

Les Applications avec Kotlin Multiplateforme

  • Qu’est-ce que Kotlin Multiplateforme ?
    • Approche de développement multiplateforme de JetBrains utilisant le langage Kotlin.
    • Partage de code entre différentes plateformes tout en conservant des performances élevées.
  • Caractéristiques de Kotlin Multiplateforme
    • Partage de logique métier et de données entre les plateformes.
    • Utilisation de bibliothèques spécifiques à chaque plateforme pour l’interface utilisateur.
    • Compilation en code natif pour chaque plateforme cible.

Pour ce cours

  • Nous allons tous utiliser Kotlin pour le développement Android.
  • Nous allons commencer par apprendre les bases de Kotlin.
  • Nous allons explorer les principes fondamentaux du développement Android.
  • Nous allons créer des applications natives Android avec Kotlin.
  • Puis au choix pour chaque étudiant :
    • Explorer les applications multiplateformes avec Kotlin.
    • Explorer les applications multiplateformes avec Ionic/Angular ou React Native.

Réutilisation