La plate-forme Android
MODULE: DÉVELOPPEMENT MOBILE
NIVEAU: 3EME ANNÉE INGÉNIEUR
OPTION: SÉCURITÉ ANNÉE 2024/2025
Historique
 La plateforme a été créée par une start-up américaine appelée
Android Inc.
 En août 2005, Google a racheté cette start-up.
 En 2007, Google a fondé un groupe appelé OHA (Open Handset
Alliance), qui regroupe une trentaine d'entreprises (opérateurs mobiles,
fabricants, industriels, éditeurs de logiciels, etc.).
 Ce groupe a été créé pour encourager l'innovation dans les appareils
mobiles grâce à une plateforme ouverte et complète.
 Cette initiative a conduit à la sortie du premier kit de développement
(SDK) en 2007.
Historique
 En septembre 2008, Google lance la première version officielle
d'Android, Android 1.0, qui équipe le HTC Dream, le tout premier
smartphone sous Android
 1.1(février2009),1.5(Avril2009),1.6(septembre2009),2.0(octobre2009),
2.0.1(Octobre2009)…
 La dernière version stable d'Android est Android 15, officiellement
déployée par Google le 15 octobre 2024
Architecture Android
Application
(couche applicative)
Application framework
(framework applicatif)
Bibliothèques
C, C++
Android runtime
(Moteur Android)
Linux Kernel
 Le noyau Linux (le cœur du système d'exploitation
Android) fait l’interface avec le matériel sous-
jacent. Il gère les processus, la mémoire et les
droits d’utilisateurs
 Seulement le noyau linux pas le système entier
 Le code des fonctionnalités est spécifique au
matériel.
 Contient aussi les pilotes des dispositifs matériels
(USB, Affichage, Bluetooth…)
Architecture Android
Application
(couche applicative)
Application framework
(framework applicatif)
Bibliothèques
C, C++
Android runtime
(Moteur Android)
Linux Kernel
 Android runtime :Environnement d’exécution
Android, ou moteur d’exécution c’est-à-dire
un programme qui permet l’exécution
d’autres programmes, on trouve :
 Des bibliothèques de base du Java, et certaines
spécifiques à Android
 la machine virtuelle Dalvik qui fonctionne
conjointement avec les bibliothèques (permet
d'exécuter les applications Android en optimisant
l'utilisation de la mémoire et des ressources).
 La MV Dalvik convertit le code Java en un format
exécutable sur les appareils Android et permet
l'exécution simultanée de plusieurs applications.
Architecture Android
Les bibliothèques C, C++ offrent des accès bas niveau
aux applications :
 bibliothèques systèmes (accès aux fonctions de
base du système), ex: la version du système
 bibliothèques de manipulation des médias (audio,
vidéo ...), ex: charger un audio ou le lire
 moteur du gestionnaire de bases de données
SQLite, ex: db.execSQL, db.rawQuery
 OpenGL (pour les graphiques 2D ou 3D) ...
Ses bibliothèques sont open-source.
Application
(couche applicative)
Application framework
(framework applicatif)
Bibliothèques
C, C++
Android runtime
(Moteur Android)
Linux Kernel
Architecture Android
 Exemple de quelques bibliothèques:
 Bibliothèques systèmes (accès aux fonctions de base du système) :Exemple : libc (C
Standard Library)
La bibliothèque libc fournit des fonctionnalités de base telles que la gestion de la
mémoire (malloc, free), les entrées/sorties (printf, scanf), et la gestion des fichiers
(fopen, fread).
 Bibliothèques de manipulation des médias (audio, vidéo...) : Exemple : FFmpeg.
FFmpeg est une bibliothèque open-source permettant d'encoder, de décoder et de
lire des fichiers audio et vidéo. Elle est largement utilisée dans les lecteurs multimédias
comme VLC et les applications de montage vidéo.
Architecture Android
Dans le framework applicatif il y a :
 des bibliothèques Java qui appellent les
bibliothèques C et C++.
 Elles permettent aux applications d’interagir
avec le système Android,
 Exemples de bibliothèques : Window Manager
(gestionnaire de fenêtres), Location Manager
(gestionnaire de géolocalisation), Content
Providers (gestionnaires de contenu)…
Application
(couche applicative)
Application framework
(framework applicatif)
Bibliothèques
C, C++
Android runtime
(Moteur Android)
Linux Kernel
Architecture Android
La couche des applications: Il s’agit ici des
applications standards préinstallées(pour la plus
part) sur les appareils :
 gestion des e-mails,
 appareil photo,
 gestion des contacts ...
 et aussi des applications développées par des
tiers.
 Vos applications…
Application
(couche applicative)
Application framework
(framework applicatif)
Bibliothèques
C, C++
Android runtime
(Moteur Android)
Linux Kernel
Compilation et exécution
 Avec java
 Avec Android
Dalvik & ART
 Avec Android
La version de Java qui permet le développement d’applications mobiles est une version
réduite dépourvue de certaines fonctionnalités inutiles. Par exemple, la bibliothèque Swing
n’est pas intégrée.
 1. Dalvik (Android ≤ 4.4 KitKat) : Compilation Just-In-Time (JIT)
 Utilise une machine virtuelle basée sur des fichiers DEX (optimisés pour les mobiles).
 Compilation à la demande (JIT - Just-In-Time) : le code est traduit en langage machine
au moment de l'exécution, ce qui peut ralentir les performances.
 Moins efficace en termes de vitesse d'exécution et consommation d'énergie.
Dalvik & ART
 2. ART (Android 5.0 Lollipop et +) : Compilation Ahead-Of-Time (AOT)
• Compile les applications une seule fois, lors de l’installation (AOT - Ahead-Of-Time).
• Exécution plus rapide et moins de consommation de CPU et de batterie.
• Occupe plus d’espace de stockage car les apps sont déjà compilées.
Dalvik vs ART
 La différence est simple :
• Dalvik (JIT - Just-In-Time) : Quand tu ouvres une application, Android traduit son code en
langage machine à la volée, ligne par ligne. Cela prend du temps et consomme plus de
batterie.
• ART (AOT - Ahead-Of-Time) : Quand tu installes l’application, Android traduit tout le code
en une seule fois. Ensuite, quand tu l’ouvres, elle démarre plus vite car elle est déjà prête
à être exécutée.
 👉 Dalvik = plus rapide à installer, mais plus lent à exécuter (traduit le bytecode .dex au
moment de l’exécution).
ART
👉 = plus long à installer, mais plus rapide et économe en énergie (traduit le
bytecode .dex lors de l’installation,
Composition d'une application
Android
Sources Java (ou Kotlin) compilées pour la machine virtuelle ART
Ressources :
•XML : interface, textes.
•PNG : icônes, images.
•…
Manifeste (AndroidManifest.xml) :
•Définit le package de l'application.
•Déclare les composants (Activités, Services).
•Spécifie les permissions (Internet, GPS…).
•Indique le niveau minimum du SDK requis.
Environnement de développement :
•Utilisation de l'IDE Android Studio (IntelliJ IDE).
•S'appuie sur le SDK Android (bibliothèques et outils).
SDK Android
Le SDK Android contient :
 Bibliothèques : pour utiliser les fonctionnalités Android (UI, réseau, base de données...).
 Outils de développement : compilateur, débogueur, et émulateur Android.
 API Android : pour accéder aux services du système (caméra, GPS, notifications...).
 Build Tools : pour générer les APK (fichiers d'installation).
 Documentation et exemples de code.
Gradle ?
 C'est un outil d'automatisation qui organise tout le processus de
compilation, de gestion des dépendances et de déploiement.
 Gradle sert à :
Compiler le code et créer les APK.
Ajouter facilement des bibliothèques au projet.
Gérer les versions (release).
Faciliter le déploiement sur les appareils Android.
Composants d’une app Android
 Une application Android est composée d’un ensemble de 4
éléments qui interagissent entre eux.
 Ces éléments sont : « Activité », « Service », « Broadcast Reciever » et
« Content Provider ».
Composants d’une app Android
1. Activité
 Gère le cycle de vie de l'application et l'interaction avec l'utilisateur via une
interface graphique.
 L’activité est la forme disponible sur l’écran
 Elle offre à l’utilisateur l’interface (écran) pour interagir avec l’application.
 Chaque écran de l’application représente une activité.
 Une application Android est composée d’une ou de plusieurs activités
 Une seule activité est lancée à la fois.
Composants d’une app Android
1. Activité
 Dans « Java », chaque activité est une classe qui étend par héritage la classe
«AppCompatActivity ».
 Lors du démarrage d’une activité, 3 méthodes sont appelées automatiquement :
« onCreate », « onStart » et « onResume ».
 Lorsque l’on quitte l’activité, 3 méthodes sont appelées automatiquement : «
onPause », « onStop » et « onDestroy ».
 Ces méthodes sont définies dans la classe «AppCompatActivity » et devront être
redéfinies si c'est nécessaire.
Composants d’une app Android
1. Activité
 L’ensemble du code « Java » est généralement écrit dans la méthode «
onCreate ».
 La sauvegarde des données importantes quant à elle est effectuée dans
la méthode « onPause ».
 En effet quand une activité n’a plus « le focus », elle est mise en pause
d’où l’appel à la méthode « onPause ». Il est donc préférable de
sauvegarder les informations critiques avant de se mettre en pause!
 Quand l’activité « onPause » termine sa période de repos, le système
appelle la méthode « onResume ».
Composants d’une app Android
1. Activité : cycle de vie
Composants d’une app Android
1. Activité : Description des états
 Création (onCreate())
 L’activité est créée mais pas encore visible.
 Initialisation des composants (UI, variables, etc.).
 Démarrage (onStart())
 L’activité devient visible à l’utilisateur mais n’est pas encore en avant-
plan.
 Reprise (onResume())
 L’activité est au premier plan et l’utilisateur peut interagir avec elle.
Composants d’une app Android
1. Activité : Description des états
 Pause (onPause())
 L’activité perd le focus (ex : ouverture d’une autre activité en
superposition).
 Elle est toujours partiellement visible.
 Arrêt (onStop())
 L’activité n’est plus visible (cachée par une autre ou mise en arrière-plan).
 Les ressources lourdes peuvent être libérées.
 Destruction (onDestroy())
 L’activité est fermée et retirée de la mémoire.
Composants d’une app Android
1. Activité : Description des états
 Redémarrage (onRestart()) :
 Quand une activité passe de l’état arrêté à actif sans être recréée
entièrement.
Schéma simplifié :
onCreate() → onStart() → onResume() → (activité active) → onPause() → onStop()
→ onDestroy()
Composants d’une app Android
1. Activité : Cycle typique :
 Création : onCreate() → onStart() → onResume()
 Interruption : onPause() → onStop() → onDestroy()
 Reprise : onRestart() → onStart() → onResume()
Activité : les méthodes du cycle de
vie
•onCreate() : Appelée lors de la création de l'activité. Sert à initialiser les composants.
•onStart() : Appelée lorsque l'activité devient visible pour l'utilisateur.
•onResume() : Appelée lorsque l'activité commence à interagir avec l'utilisateur (focus).
•onPause() : Appelée lorsque l'activité perd le focus, mais reste partiellement visible.
•onStop() : Appelée lorsque l'activité n'est plus visible pour l'utilisateur.
•onDestroy() : Appelée juste avant que l'activité soit détruite.
•onRestart() : Appelée lorsque l'activité est relancée après avoir été arrêtée.
Composants d’une app Android
1. Activité : La pile
 Les activités sont ordonnées en utilisant la notion de pile.
 La pile est du type « LIFO » (Last In First Out).
Composants d’une app Android
2. Service
 N’est pas un composant graphique
 Fonctionne en arrière-plan (tâche de fond).
 Permet de réaliser une tâche d’une très longue durée sans une interaction
avec l’utilisateur : écouter de la musique en arrière-plan.
 Un service s’exécutant en arrière-plan est prioritaire qu’une application
exécutée dans le même plan.
Composants d’une app Android
2. Service
• États d'un Service :
 Started (Démarré) :
 Lancé avec startService() par une activité. (fonctionne seul)
 Fonctionne en arrière-plan indéfiniment, même si l’activité est détruit.
 Exemple : Téléchargement d'un fichier.
 Bound (Associé) :
 Lancé avec bindService() lorsqu'un composant se lie au service.
 Offre une interface client-serveur pour échanger des données.
 Se termine lorsque tous les composants détachent leur liaison.
 Exemple : Application de musique. L'activité envoie des commandes (lecture, pause)
au service audio.
Composants d’une app Android
3. Broadcast Receiver
 récepteur de messages envoyés par Android ou d’autres applications.
(antenne qui capte un message envoyé par Android).
 Réagit à des événements spécifiques via des Intents.
 Utilise des filtres d’intention pour écouter uniquement certains événements.
 Fonctionne même si l’application n’est pas active. (notification FB)
Exemple : Batterie Faible 🔋
 Android envoie un Intent "batterie faible" (ACTION_BATTERY_LOW)
 Les applications ayant un Broadcast Receiver pour cet événement le reçoivent
 Elles réagissent : réduire la luminosité, désactiver le WiFi, etc.
Composants d’une app Android
4. Content Provider
 Gère l’accès aux données d’une application de manière sécurisée.
 Partage de données avec d'autres applications de manière sécurisée.
 Utilisé pour lire et écrire des données dans des bases de données,
Exemples courants :
 Accéder aux contacts, photos, vidéos, et SMS d'un appareil.
 Partager des données entre applications (ex : partager une image depuis la galerie
vers une application de messagerie).
Les ressources d’une app android
 Ensemble d’éléments embarqués dans l’application
 Des éléments dont l’app a besoin pour fonctionner : son, images, vidéos
…
 Noms de fichiers obligatoirement en minuscule (chiffres, ou ‘_’)
 Contenue dans un dossier res
 réparties dans plusieurs sous-répertoires selon leur nature (certaine ne sont
pas crée par défaut).
Répertoire Description
res/drawable/ Les images sous la forme de fichiers png, jpeg, ou gif, ou bien de fichiers
XML pour décrire les dessins simples (cercles, carrés...)
res/layout/ Fichiers XML qui définissent la mise en page d'une interface utilisateur
res/menu/ Description XML des menus
res/raw/ Fichiers généraux : clip audio, fichier CSV(Comma-Separated Values)
res/values/ Fichiers XML contenant des valeurs simples, telles que des chaînes, des
entiers et des couleurs.
Les ressources d’une app android
 Les applications Android doivent s'adapter à divers supports.
 L'utilisation des ressources permet cette adaptation.
 Les ressources sont organisées de manière compréhensible par
Android.
 Android sélectionne automatiquement le fichier adéquat selon le
matériel utilisé.
 Les noms des répertoires de ressources contiennent des suffixes
(quantificateurs).
Les ressources d’une app android
 Exemple : hdpi dans res/drawable-hdpi indique une ressource optimisée
pour une densité d'écran spécifique.
 Certains répertoires de ressources sont utilisés uniquement dans des
situations spécifiques.
 Exemple : hdpi (high dot per inch) pour les écrans haute résolution.
 Android sélectionne automatiquement le répertoire approprié
parmi ceux disponibles.
 Si aucune correspondance exacte n'est trouvée, Android choisit
l'option la plus proche.
Les ressources d’une app android
D'autres suffixes correspondent à
 La langue, et éventuellement la région, du système de l'utilisateur.
Par exemple : en, fr, fr-rFR, fr-rCA ...
 La taille de l'écran : small, normal, large, xlarge
 L'orientation de l'écran : port ou land
 La version d'Android. Il s'agit du niveau de l'API, par exemple : v11
ou v14 ...
Les interfaces utilisateurs
organiser son interface avec des layouts
 Structurer les widgets avec des layouts
Qu'est-ce qu'un Layout ?
 Un layout est un conteneur qui définit la structure et l'organisation
des éléments (widgets) de l'interface.
 Rôle :
• Organiser les vues à l'écran.
• Gérer les espaces et alignements.
 Exemples courants :LinearLayout, RelativeLayout, ConstraintLayout,
etc.
LinearLayout
 Caractéristiques :
 Disposition linéaire (horizontale ou verticale).
 Utilise l'attribut android:orientation pour définir la direction.
 Avantages : Simple à utiliser pour des interfaces linéaires.
 Exemple XML :
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<!-- Widgets ici -->
</LinearLayout>
RelativeLayout
Caractéristiques :
 Positionnement des vues relatif aux autres vues ou au parent.
 Permet de créer des interfaces dynamiques sans imbriquer trop de
layouts.
 Attributs fréquents
 android:layout_alignParentTop
 android:layout_below
 Avantages :
 Flexibilité dans le positionnement.
 Moins d'imbrication possible.
ConstraintLayout
 Présentation :
 Layout moderne et puissant pour concevoir des interfaces complexes.
 Basé sur des contraintes entre les vues.
 Avantages :
 Réduit la profondeur de la hiérarchie des vues.
 Permet des designs responsives adaptés à tous les écrans.
 Outils :
 Éditeur visuel dans Android Studio pour positionner les contraintes.
ConstraintLayout
 app:layout_constraintTop_toTopOf="parent" → Le haut du bloc A
est aligné avec le haut du parent.
 app:layout_constraintStart_toStartOf="parent" → Le côté
gauche (Start) de A est aligné avec le côté gauche du parent.
 app:layout_constraintEnd_toStartOf="@id/blockB" → Le côté droit
de A est aligné avec le côté gauche de B.
ConstraintLayout
 app:layout_constraintTop_toTopOf="@id/blockA" → Le haut de B
est aligné avec le haut de A.
 app:layout_constraintStart_toEndOf="@id/blockA" → Le côté
gauche de B est aligné avec le côté droit de A (donc B est à droite de A).
 app:layout_constraintEnd_toEndOf="parent" → Le côté droit de B
est aligné avec le côté droit du parent.
ConstraintLayout
 app:layout_constraintTop_toBottomOf="@id/blockA" → Le haut de
C est aligné avec le bas de A (donc C est sous A).
 app:layout_constraintStart_toStartOf="parent" → Le côté
gauche de C est aligné avec le côté gauche du parent.
Inclure un layout dans plusieurs
activités
Introduction aux Widgets
 Définition :
 Les widgets sont les composants interactifs de l'interface (boutons, champs de
texte, images, etc.).
 Chaque widget possède un nombre important d'attributs XML et de méthodes
Java.
 Rôle :
 Permettre l’interaction avec l’utilisateur.
 Afficher des informations et recevoir des entrées.
 Exemples :
 TextView, Button, EditText, ImageView, etc.
Les Widgets de Base
 TextView :Affiche du texte statique ou dynamique.
 EditText :Champ de saisie pour l’utilisateur.
 Button :Bouton cliquable pour lancer une action.
 ImageView :Affiche une image.
Les Widgets de Base
XML & Java
 En XML
 En Java
Les Widgets de Base
 EditText = TextView éditable
Quelques Widgets Avancés
 ListView / RecyclerView :
 Affichage de listes ou grilles d’éléments avec gestion optimisée de la
mémoire.
 Widgets de sélection :
 CheckBox, RadioButton, Switch pour choisir des options.
 WebView :Intègre du contenu web directement dans l’application.
Gérer les évènements sur les
widgets
 Comment gérer les interactions entre l'interface graphique et l'utilisateur?
 Il existe plusieurs façons d'interagir avec une interface graphique. Par
exemple:
 Cliquer sur un bouton,
 entrer un texte,
 sélectionner une portion de texte, etc.
 Ces interactions s'appellent des évènements.
Gérer les évènements sur les
widgets; Les listeners
 Un Listener (écouteur en français) est une interface qui permet d'écouter et
de réagir aux événements déclenchés par l'utilisateur (clics, pressions
longues, changements de texte, etc.).
 Exemple : OnClickListener → Réagit au clic sur un bouton
Gérer les évènements sur les
widgets; Les listeners
 View.OnLongClickListener pour les clics qui durent longtemps, avec la méthode
boolean onLongClick(View vue).
 Cette méthode doit retourner true une fois que l'action associée a été effectuée.
Gérer les évènements sur les
widgets; Les listeners
 View.OnKeyListener pour gérer l'appui sur une touche. On y associe la méthode
boolean onKey(View vue, int code, KeyEvent event).
 Cette méthode doit retourner true une fois que l'action associée a été effectuée.

chapitre_02_la_plateforme_android_autosaved (1).pptx

  • 1.
    La plate-forme Android MODULE:DÉVELOPPEMENT MOBILE NIVEAU: 3EME ANNÉE INGÉNIEUR OPTION: SÉCURITÉ ANNÉE 2024/2025
  • 2.
    Historique  La plateformea été créée par une start-up américaine appelée Android Inc.  En août 2005, Google a racheté cette start-up.  En 2007, Google a fondé un groupe appelé OHA (Open Handset Alliance), qui regroupe une trentaine d'entreprises (opérateurs mobiles, fabricants, industriels, éditeurs de logiciels, etc.).  Ce groupe a été créé pour encourager l'innovation dans les appareils mobiles grâce à une plateforme ouverte et complète.  Cette initiative a conduit à la sortie du premier kit de développement (SDK) en 2007.
  • 3.
    Historique  En septembre2008, Google lance la première version officielle d'Android, Android 1.0, qui équipe le HTC Dream, le tout premier smartphone sous Android  1.1(février2009),1.5(Avril2009),1.6(septembre2009),2.0(octobre2009), 2.0.1(Octobre2009)…  La dernière version stable d'Android est Android 15, officiellement déployée par Google le 15 octobre 2024
  • 4.
    Architecture Android Application (couche applicative) Applicationframework (framework applicatif) Bibliothèques C, C++ Android runtime (Moteur Android) Linux Kernel  Le noyau Linux (le cœur du système d'exploitation Android) fait l’interface avec le matériel sous- jacent. Il gère les processus, la mémoire et les droits d’utilisateurs  Seulement le noyau linux pas le système entier  Le code des fonctionnalités est spécifique au matériel.  Contient aussi les pilotes des dispositifs matériels (USB, Affichage, Bluetooth…)
  • 5.
    Architecture Android Application (couche applicative) Applicationframework (framework applicatif) Bibliothèques C, C++ Android runtime (Moteur Android) Linux Kernel  Android runtime :Environnement d’exécution Android, ou moteur d’exécution c’est-à-dire un programme qui permet l’exécution d’autres programmes, on trouve :  Des bibliothèques de base du Java, et certaines spécifiques à Android  la machine virtuelle Dalvik qui fonctionne conjointement avec les bibliothèques (permet d'exécuter les applications Android en optimisant l'utilisation de la mémoire et des ressources).  La MV Dalvik convertit le code Java en un format exécutable sur les appareils Android et permet l'exécution simultanée de plusieurs applications.
  • 6.
    Architecture Android Les bibliothèquesC, C++ offrent des accès bas niveau aux applications :  bibliothèques systèmes (accès aux fonctions de base du système), ex: la version du système  bibliothèques de manipulation des médias (audio, vidéo ...), ex: charger un audio ou le lire  moteur du gestionnaire de bases de données SQLite, ex: db.execSQL, db.rawQuery  OpenGL (pour les graphiques 2D ou 3D) ... Ses bibliothèques sont open-source. Application (couche applicative) Application framework (framework applicatif) Bibliothèques C, C++ Android runtime (Moteur Android) Linux Kernel
  • 7.
    Architecture Android  Exemplede quelques bibliothèques:  Bibliothèques systèmes (accès aux fonctions de base du système) :Exemple : libc (C Standard Library) La bibliothèque libc fournit des fonctionnalités de base telles que la gestion de la mémoire (malloc, free), les entrées/sorties (printf, scanf), et la gestion des fichiers (fopen, fread).  Bibliothèques de manipulation des médias (audio, vidéo...) : Exemple : FFmpeg. FFmpeg est une bibliothèque open-source permettant d'encoder, de décoder et de lire des fichiers audio et vidéo. Elle est largement utilisée dans les lecteurs multimédias comme VLC et les applications de montage vidéo.
  • 8.
    Architecture Android Dans leframework applicatif il y a :  des bibliothèques Java qui appellent les bibliothèques C et C++.  Elles permettent aux applications d’interagir avec le système Android,  Exemples de bibliothèques : Window Manager (gestionnaire de fenêtres), Location Manager (gestionnaire de géolocalisation), Content Providers (gestionnaires de contenu)… Application (couche applicative) Application framework (framework applicatif) Bibliothèques C, C++ Android runtime (Moteur Android) Linux Kernel
  • 9.
    Architecture Android La couchedes applications: Il s’agit ici des applications standards préinstallées(pour la plus part) sur les appareils :  gestion des e-mails,  appareil photo,  gestion des contacts ...  et aussi des applications développées par des tiers.  Vos applications… Application (couche applicative) Application framework (framework applicatif) Bibliothèques C, C++ Android runtime (Moteur Android) Linux Kernel
  • 10.
    Compilation et exécution Avec java  Avec Android
  • 11.
    Dalvik & ART Avec Android La version de Java qui permet le développement d’applications mobiles est une version réduite dépourvue de certaines fonctionnalités inutiles. Par exemple, la bibliothèque Swing n’est pas intégrée.  1. Dalvik (Android ≤ 4.4 KitKat) : Compilation Just-In-Time (JIT)  Utilise une machine virtuelle basée sur des fichiers DEX (optimisés pour les mobiles).  Compilation à la demande (JIT - Just-In-Time) : le code est traduit en langage machine au moment de l'exécution, ce qui peut ralentir les performances.  Moins efficace en termes de vitesse d'exécution et consommation d'énergie.
  • 12.
    Dalvik & ART 2. ART (Android 5.0 Lollipop et +) : Compilation Ahead-Of-Time (AOT) • Compile les applications une seule fois, lors de l’installation (AOT - Ahead-Of-Time). • Exécution plus rapide et moins de consommation de CPU et de batterie. • Occupe plus d’espace de stockage car les apps sont déjà compilées.
  • 13.
    Dalvik vs ART La différence est simple : • Dalvik (JIT - Just-In-Time) : Quand tu ouvres une application, Android traduit son code en langage machine à la volée, ligne par ligne. Cela prend du temps et consomme plus de batterie. • ART (AOT - Ahead-Of-Time) : Quand tu installes l’application, Android traduit tout le code en une seule fois. Ensuite, quand tu l’ouvres, elle démarre plus vite car elle est déjà prête à être exécutée.  👉 Dalvik = plus rapide à installer, mais plus lent à exécuter (traduit le bytecode .dex au moment de l’exécution). ART 👉 = plus long à installer, mais plus rapide et économe en énergie (traduit le bytecode .dex lors de l’installation,
  • 14.
    Composition d'une application Android SourcesJava (ou Kotlin) compilées pour la machine virtuelle ART Ressources : •XML : interface, textes. •PNG : icônes, images. •… Manifeste (AndroidManifest.xml) : •Définit le package de l'application. •Déclare les composants (Activités, Services). •Spécifie les permissions (Internet, GPS…). •Indique le niveau minimum du SDK requis. Environnement de développement : •Utilisation de l'IDE Android Studio (IntelliJ IDE). •S'appuie sur le SDK Android (bibliothèques et outils).
  • 15.
    SDK Android Le SDKAndroid contient :  Bibliothèques : pour utiliser les fonctionnalités Android (UI, réseau, base de données...).  Outils de développement : compilateur, débogueur, et émulateur Android.  API Android : pour accéder aux services du système (caméra, GPS, notifications...).  Build Tools : pour générer les APK (fichiers d'installation).  Documentation et exemples de code.
  • 16.
    Gradle ?  C'estun outil d'automatisation qui organise tout le processus de compilation, de gestion des dépendances et de déploiement.  Gradle sert à : Compiler le code et créer les APK. Ajouter facilement des bibliothèques au projet. Gérer les versions (release). Faciliter le déploiement sur les appareils Android.
  • 17.
    Composants d’une appAndroid  Une application Android est composée d’un ensemble de 4 éléments qui interagissent entre eux.  Ces éléments sont : « Activité », « Service », « Broadcast Reciever » et « Content Provider ».
  • 18.
    Composants d’une appAndroid 1. Activité  Gère le cycle de vie de l'application et l'interaction avec l'utilisateur via une interface graphique.  L’activité est la forme disponible sur l’écran  Elle offre à l’utilisateur l’interface (écran) pour interagir avec l’application.  Chaque écran de l’application représente une activité.  Une application Android est composée d’une ou de plusieurs activités  Une seule activité est lancée à la fois.
  • 19.
    Composants d’une appAndroid 1. Activité  Dans « Java », chaque activité est une classe qui étend par héritage la classe «AppCompatActivity ».  Lors du démarrage d’une activité, 3 méthodes sont appelées automatiquement : « onCreate », « onStart » et « onResume ».  Lorsque l’on quitte l’activité, 3 méthodes sont appelées automatiquement : « onPause », « onStop » et « onDestroy ».  Ces méthodes sont définies dans la classe «AppCompatActivity » et devront être redéfinies si c'est nécessaire.
  • 20.
    Composants d’une appAndroid 1. Activité  L’ensemble du code « Java » est généralement écrit dans la méthode « onCreate ».  La sauvegarde des données importantes quant à elle est effectuée dans la méthode « onPause ».  En effet quand une activité n’a plus « le focus », elle est mise en pause d’où l’appel à la méthode « onPause ». Il est donc préférable de sauvegarder les informations critiques avant de se mettre en pause!  Quand l’activité « onPause » termine sa période de repos, le système appelle la méthode « onResume ».
  • 21.
    Composants d’une appAndroid 1. Activité : cycle de vie
  • 23.
    Composants d’une appAndroid 1. Activité : Description des états  Création (onCreate())  L’activité est créée mais pas encore visible.  Initialisation des composants (UI, variables, etc.).  Démarrage (onStart())  L’activité devient visible à l’utilisateur mais n’est pas encore en avant- plan.  Reprise (onResume())  L’activité est au premier plan et l’utilisateur peut interagir avec elle.
  • 24.
    Composants d’une appAndroid 1. Activité : Description des états  Pause (onPause())  L’activité perd le focus (ex : ouverture d’une autre activité en superposition).  Elle est toujours partiellement visible.  Arrêt (onStop())  L’activité n’est plus visible (cachée par une autre ou mise en arrière-plan).  Les ressources lourdes peuvent être libérées.  Destruction (onDestroy())  L’activité est fermée et retirée de la mémoire.
  • 25.
    Composants d’une appAndroid 1. Activité : Description des états  Redémarrage (onRestart()) :  Quand une activité passe de l’état arrêté à actif sans être recréée entièrement. Schéma simplifié : onCreate() → onStart() → onResume() → (activité active) → onPause() → onStop() → onDestroy()
  • 26.
    Composants d’une appAndroid 1. Activité : Cycle typique :  Création : onCreate() → onStart() → onResume()  Interruption : onPause() → onStop() → onDestroy()  Reprise : onRestart() → onStart() → onResume()
  • 27.
    Activité : lesméthodes du cycle de vie •onCreate() : Appelée lors de la création de l'activité. Sert à initialiser les composants. •onStart() : Appelée lorsque l'activité devient visible pour l'utilisateur. •onResume() : Appelée lorsque l'activité commence à interagir avec l'utilisateur (focus). •onPause() : Appelée lorsque l'activité perd le focus, mais reste partiellement visible. •onStop() : Appelée lorsque l'activité n'est plus visible pour l'utilisateur. •onDestroy() : Appelée juste avant que l'activité soit détruite. •onRestart() : Appelée lorsque l'activité est relancée après avoir été arrêtée.
  • 28.
    Composants d’une appAndroid 1. Activité : La pile  Les activités sont ordonnées en utilisant la notion de pile.  La pile est du type « LIFO » (Last In First Out).
  • 29.
    Composants d’une appAndroid 2. Service  N’est pas un composant graphique  Fonctionne en arrière-plan (tâche de fond).  Permet de réaliser une tâche d’une très longue durée sans une interaction avec l’utilisateur : écouter de la musique en arrière-plan.  Un service s’exécutant en arrière-plan est prioritaire qu’une application exécutée dans le même plan.
  • 30.
    Composants d’une appAndroid 2. Service • États d'un Service :  Started (Démarré) :  Lancé avec startService() par une activité. (fonctionne seul)  Fonctionne en arrière-plan indéfiniment, même si l’activité est détruit.  Exemple : Téléchargement d'un fichier.  Bound (Associé) :  Lancé avec bindService() lorsqu'un composant se lie au service.  Offre une interface client-serveur pour échanger des données.  Se termine lorsque tous les composants détachent leur liaison.  Exemple : Application de musique. L'activité envoie des commandes (lecture, pause) au service audio.
  • 31.
    Composants d’une appAndroid 3. Broadcast Receiver  récepteur de messages envoyés par Android ou d’autres applications. (antenne qui capte un message envoyé par Android).  Réagit à des événements spécifiques via des Intents.  Utilise des filtres d’intention pour écouter uniquement certains événements.  Fonctionne même si l’application n’est pas active. (notification FB) Exemple : Batterie Faible 🔋  Android envoie un Intent "batterie faible" (ACTION_BATTERY_LOW)  Les applications ayant un Broadcast Receiver pour cet événement le reçoivent  Elles réagissent : réduire la luminosité, désactiver le WiFi, etc.
  • 32.
    Composants d’une appAndroid 4. Content Provider  Gère l’accès aux données d’une application de manière sécurisée.  Partage de données avec d'autres applications de manière sécurisée.  Utilisé pour lire et écrire des données dans des bases de données, Exemples courants :  Accéder aux contacts, photos, vidéos, et SMS d'un appareil.  Partager des données entre applications (ex : partager une image depuis la galerie vers une application de messagerie).
  • 33.
    Les ressources d’uneapp android  Ensemble d’éléments embarqués dans l’application  Des éléments dont l’app a besoin pour fonctionner : son, images, vidéos …  Noms de fichiers obligatoirement en minuscule (chiffres, ou ‘_’)  Contenue dans un dossier res  réparties dans plusieurs sous-répertoires selon leur nature (certaine ne sont pas crée par défaut). Répertoire Description res/drawable/ Les images sous la forme de fichiers png, jpeg, ou gif, ou bien de fichiers XML pour décrire les dessins simples (cercles, carrés...) res/layout/ Fichiers XML qui définissent la mise en page d'une interface utilisateur res/menu/ Description XML des menus res/raw/ Fichiers généraux : clip audio, fichier CSV(Comma-Separated Values) res/values/ Fichiers XML contenant des valeurs simples, telles que des chaînes, des entiers et des couleurs.
  • 34.
    Les ressources d’uneapp android  Les applications Android doivent s'adapter à divers supports.  L'utilisation des ressources permet cette adaptation.  Les ressources sont organisées de manière compréhensible par Android.  Android sélectionne automatiquement le fichier adéquat selon le matériel utilisé.  Les noms des répertoires de ressources contiennent des suffixes (quantificateurs).
  • 35.
    Les ressources d’uneapp android  Exemple : hdpi dans res/drawable-hdpi indique une ressource optimisée pour une densité d'écran spécifique.  Certains répertoires de ressources sont utilisés uniquement dans des situations spécifiques.  Exemple : hdpi (high dot per inch) pour les écrans haute résolution.  Android sélectionne automatiquement le répertoire approprié parmi ceux disponibles.  Si aucune correspondance exacte n'est trouvée, Android choisit l'option la plus proche.
  • 36.
    Les ressources d’uneapp android D'autres suffixes correspondent à  La langue, et éventuellement la région, du système de l'utilisateur. Par exemple : en, fr, fr-rFR, fr-rCA ...  La taille de l'écran : small, normal, large, xlarge  L'orientation de l'écran : port ou land  La version d'Android. Il s'agit du niveau de l'API, par exemple : v11 ou v14 ...
  • 37.
    Les interfaces utilisateurs organiserson interface avec des layouts  Structurer les widgets avec des layouts
  • 38.
    Qu'est-ce qu'un Layout?  Un layout est un conteneur qui définit la structure et l'organisation des éléments (widgets) de l'interface.  Rôle : • Organiser les vues à l'écran. • Gérer les espaces et alignements.  Exemples courants :LinearLayout, RelativeLayout, ConstraintLayout, etc.
  • 39.
    LinearLayout  Caractéristiques : Disposition linéaire (horizontale ou verticale).  Utilise l'attribut android:orientation pour définir la direction.  Avantages : Simple à utiliser pour des interfaces linéaires.  Exemple XML : <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <!-- Widgets ici --> </LinearLayout>
  • 40.
    RelativeLayout Caractéristiques :  Positionnementdes vues relatif aux autres vues ou au parent.  Permet de créer des interfaces dynamiques sans imbriquer trop de layouts.  Attributs fréquents  android:layout_alignParentTop  android:layout_below  Avantages :  Flexibilité dans le positionnement.  Moins d'imbrication possible.
  • 41.
    ConstraintLayout  Présentation : Layout moderne et puissant pour concevoir des interfaces complexes.  Basé sur des contraintes entre les vues.  Avantages :  Réduit la profondeur de la hiérarchie des vues.  Permet des designs responsives adaptés à tous les écrans.  Outils :  Éditeur visuel dans Android Studio pour positionner les contraintes.
  • 42.
    ConstraintLayout  app:layout_constraintTop_toTopOf="parent" →Le haut du bloc A est aligné avec le haut du parent.  app:layout_constraintStart_toStartOf="parent" → Le côté gauche (Start) de A est aligné avec le côté gauche du parent.  app:layout_constraintEnd_toStartOf="@id/blockB" → Le côté droit de A est aligné avec le côté gauche de B.
  • 43.
    ConstraintLayout  app:layout_constraintTop_toTopOf="@id/blockA" →Le haut de B est aligné avec le haut de A.  app:layout_constraintStart_toEndOf="@id/blockA" → Le côté gauche de B est aligné avec le côté droit de A (donc B est à droite de A).  app:layout_constraintEnd_toEndOf="parent" → Le côté droit de B est aligné avec le côté droit du parent.
  • 44.
    ConstraintLayout  app:layout_constraintTop_toBottomOf="@id/blockA" →Le haut de C est aligné avec le bas de A (donc C est sous A).  app:layout_constraintStart_toStartOf="parent" → Le côté gauche de C est aligné avec le côté gauche du parent.
  • 45.
    Inclure un layoutdans plusieurs activités
  • 46.
    Introduction aux Widgets Définition :  Les widgets sont les composants interactifs de l'interface (boutons, champs de texte, images, etc.).  Chaque widget possède un nombre important d'attributs XML et de méthodes Java.  Rôle :  Permettre l’interaction avec l’utilisateur.  Afficher des informations et recevoir des entrées.  Exemples :  TextView, Button, EditText, ImageView, etc.
  • 47.
    Les Widgets deBase  TextView :Affiche du texte statique ou dynamique.  EditText :Champ de saisie pour l’utilisateur.  Button :Bouton cliquable pour lancer une action.  ImageView :Affiche une image.
  • 48.
    Les Widgets deBase XML & Java  En XML  En Java
  • 49.
    Les Widgets deBase  EditText = TextView éditable
  • 50.
    Quelques Widgets Avancés ListView / RecyclerView :  Affichage de listes ou grilles d’éléments avec gestion optimisée de la mémoire.  Widgets de sélection :  CheckBox, RadioButton, Switch pour choisir des options.  WebView :Intègre du contenu web directement dans l’application.
  • 51.
    Gérer les évènementssur les widgets  Comment gérer les interactions entre l'interface graphique et l'utilisateur?  Il existe plusieurs façons d'interagir avec une interface graphique. Par exemple:  Cliquer sur un bouton,  entrer un texte,  sélectionner une portion de texte, etc.  Ces interactions s'appellent des évènements.
  • 52.
    Gérer les évènementssur les widgets; Les listeners  Un Listener (écouteur en français) est une interface qui permet d'écouter et de réagir aux événements déclenchés par l'utilisateur (clics, pressions longues, changements de texte, etc.).  Exemple : OnClickListener → Réagit au clic sur un bouton
  • 53.
    Gérer les évènementssur les widgets; Les listeners  View.OnLongClickListener pour les clics qui durent longtemps, avec la méthode boolean onLongClick(View vue).  Cette méthode doit retourner true une fois que l'action associée a été effectuée.
  • 54.
    Gérer les évènementssur les widgets; Les listeners  View.OnKeyListener pour gérer l'appui sur une touche. On y associe la méthode boolean onKey(View vue, int code, KeyEvent event).  Cette méthode doit retourner true une fois que l'action associée a été effectuée.