Développement
d'applications mobiles avec
Android
Dr Soumana FOMBA
FST-USTTB
Semestre 5
03/03/2025 [Link] 1
Chapitre 3: Introduction à la
plateforme Android Studio
03/03/2025 [Link] 2
Système d’exploitation
Android
né en 2004,
racheté par Google en 2005,
publié en 2007, version 1.5,
les dernières versions :
Version Nom de Version Date de sortie
Android 13 - 22
Android 12 - 2021
Android 11 - 2020
Android 10 - 3 sept. 2019
Android 9 Pie 9 août 2018
Android 8.1 Oreo 5 déc. 2017
Android 8.0 Oreo 21503/03/202
août 2017
[Link]
3
Qu’est-ce qu’Android
Système d’exploitation complet pour mobiles (smartphones, tablettes,
voitures, télévisions, …) qui offre :
• Gestion matérielle : OS basé sur le noyau de Linux
• API : Application Programming Interface
• Applications : navigateur, courrier. . .
Évolution et obsolescence très rapides
• Ce que vous allez apprendre sera rapidement dépassé (1 an)
− syntaxiquement (méthodes, classes, ressources... )
− mais pas les grands concepts (principes, organisation)
• Autoformation permanente, c’est le lot des informaticiens.
03/03/202
4
5 [Link]
Architecture d’Android
Plusieurs couches comme un système Unix : 4 niveaux
03/03/202
5
5 [Link]
Architecture d’Android
Linux Kernel (Noyau Linux)
Cœur du système Android, basé sur le noyau Linux.
Assure la gestion de la mémoire, des processus, de l’alimentation et des
drivers matériels (écran, caméra, Wi-Fi, Bluetooth, etc.).
Fournit des services système essentiels comme la gestion des fichiers et la
sécurité.
Libraries & Android Runtime (Bibliothèques et Runtime Android)
Bibliothèques natives (C/C++) : incluent SQLite (base de données), OpenGL
ES (graphismes 2D/3D), WebKit (navigateur), SSL (sécurité), Media Framework
(audio/vidéo), etc.
Android Runtime (ART) : machine virtuelle qui exécute les applications
Android.
03/03/202
6
5 [Link]
Architecture d’Android
Application Framework (Cadre d’application)
Fournit des API et services pour les développeurs.
Contient plusieurs gestionnaires essentiels :
Activity Manager : gère le cycle de vie des applications.
Content Providers : gèrent l’accès aux bases de données et aux fichiers partagés.
Resource Manager : gère les ressources comme les images et les chaînes de texte.
Location Manager : gère la géolocalisation.
Notification Manager : gère les notifications.
Package Manager : gère l’installation et la désinstallation des applications.
Applications
La couche la plus haute, utilisée par l’utilisateur final.
Contient les applications système comme Contacts, Messages, Appareil photo,
ainsi que les applications tierces installées par l'utilisateur.
03/03/202
7
5 [Link]
Composants d’Android
Pour plus de renseignements sur l’architecture
d’Android, veuillez consulter
[Link]
[Link]/~dr/XPOSE2008/android/archi_comp.html
03/03/202
8
5 [Link]
Structures d’une application Android
Une application Android est composée de :
• Sources Java (ou Kotlin) compilés pour une machine virtuelle
« Dalvik »(version 4.4) ou « ART(Android Runtime) » depuis la version 5
• Fichiers appelés ressources :
− format XML : interfaces, textes, menu. . .
− format PNG : icônes, images...
• Manifeste = description du contenu du logiciel, il contient :
− l’identifiant de l’application(nom du package principal)
− la version de l’application
− la version minimum du SDK pour pouvoir utiliser l’application
les demandes d’autorisations
−
− les différentes activités, en mentionnant l’activité principale.
Cet ensemble est géré à l’aide d’un IDE appelé Android Studio qui
s’appuie sur le SDK Android.
03/03/202
9
5 [Link]
SDK et Android Studio
Le SDK (Software Development Kit) contient :
• les librairies Java pour créer des logiciels
• AVD (Android Virtual Device) : un émulateur de
tablettes pour tester les applications
• ADB (Android Debug Bridge) : un outil de
communication avec les matériels réels (téléphone, ..)
Android Studio offre :
• un éditeur de sources(java) et de ressources (interfaces,
string, ...)
• des outils de compilation : gradle
• des outils de test et de création d’apk (Android
PacKage) 03/03/202
10
5 [Link]
Outils à installer
Les principaux outils à installer sont :
JDK (Java Development Kit)
Android Studio
SDK Android(Software Development Kit)
03/03/202
11
5 [Link]
Installation
JDK (Java Development Kit)
• Contient le JRE
(Java Runtime Environment) : des outils
pour exécuter des applications Java
• Lien pour télécharger :
[Link]
va/javase/downloads/[Link]
Android Studio
• Lien pour télécharger :
[Link]
• Une fois installé, on peut télécharger et
installer le SDK Android à travers Android
Studio
03/03/202
12
5 [Link]
SDK Manager
C’est le gestionnaire du SDK, une application qui
permet de choisir les composants à installer et à
mettre à jour.
Le gestionnaire permet de choisir les versions à
installer.
Il faut choisir celles qui correspondent aux
matériels visés.
L’élément obligatoire à installer dans une version
est:
Android SDK Platform
03/03/202
13
5 [Link]
SDK Manager
03/03/202
14
5 [Link]
Dossier du SDK
Le gestionnaire installe plusieurs Go dans différents
sous-dossiers :
• Tools : indispensable, contient le gestionnaire,
• Platform-tools : indispensable, contient adb,
• Platform : indispensable, contient les librairies,
• System images : pour créer des AVD,
03/03/202
15
5 [Link]
Configuration
Dans les variables d’environnement du système,
ajouter ou éditer la variable JAVA_HOME, en y
mettant le chemin de votre JDK.
03/03/202
16
5 [Link]
Configuration
Dans Android Studio, installer les suggestions
(mises à jour): FileProject Structure : Onglet
Suggestions.
Dans Android Studio, spécifier le chemin du JDK
installé : FileProject Structure: Onglet SDK
Location
03/03/202
17
5 [Link]
Première application
Android Studio contient un assistant de création
d’applications FileNewNew Project (Empty
Activity)
03/03/202
18
5 [Link]
Première application
03/03/202
19
5 [Link]
Première application
Informations à renseigner
• Nom de l’application: HelloWord
• Nom du package principal: [Link]
• Chemin pour stocker le projet
• Langage à utiliser: Java (à la place Kotlin)
• Version minimum d’Android que doit avoir les
appareils devant utiliser l’application
03/03/202
20
5 [Link]
Résultat de l’assistant
03/03/202
21
5 [Link]
Résultat de l’assistant
L’assistant crée de nombreux éléments visibles dans la
colonne de gauche de l’IDE :
• manifests : description et liste des classes de
l’application
• java : les sources, rangés par package,
• res : ressources = fichiers XML et images de l’interface :
−layout : interfaces
−menu : menus contextuels ou d’application
−mipmap et drawable : images, icônes de l’interface
−values : valeurs de configuration, textes. . .
• Gradle scripts : c’est l’outil de compilation du projet.
03/03/202
22
5 [Link]
Exécution de l’application
On peut tester l’application sur un dispositif
virtuel (smartphone ou tablette).
Pour cela, il faut installer un émulateur avec
l’assistant AVD Manager.
Il faut choisir la catégorie (phone, tablet,..) et les
dimensions souhaitées.
L’utilisation d’un émulateur nécessite l’activation
de VT-x (Virtualization Technology) dans le BIOS.
03/03/202
23
5 [Link]
Exécution de l’application
On peut aussi tester l’application à travers un
dispositif réel(smartphone, tablette,..)
Pour tester les applications avec un téléphone(ou
une tablette) réel il faut:
• accepter les Sources inconnues (dans les
Paramètres/Sécurité du téléphone)
• activer les Options pour les développeurs
(taper 7 fois sur Numéro Build dans A propos
du téléphone)
• activer le débogage par USB dans les Options
pour les développeurs
03/03/202
24
5 [Link]
Editeurs spécifiques
Les ressources (interfaces, menus, textes…) sont
définies à l’aide de fichiers XML.
Android Studio fournit des éditeurs spécialisés pour
ces fichiers, par exemple :
• Formulaires pour :
−res/values/[Link] : textes de l’interface.
• Éditeurs graphiques pour :
−res/layout/*.xml : l’interface.
03/03/202
25
5 [Link]
Exemple de layout en XML
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="[Link]
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world" />
</RelativeLayout>
Notez le namespace(espace de noms) des éléments et le
préfixe de chaque attribut.
03/03/202
26
5 [Link]
Reconstruction du projet
Chaque modification d’un code source ou d’une
ressource fait reconstruire le projet
automatiquement.
On peut reconstruire manuellement à partir du
menu Build/Rebuild Project.
Il est souvent nécessaire de nettoyer le projet
en cas de mauvaises compilations ou des mises
à jours : Build/Clean Project.
Ces actions lancent l’exécution de Gradle.
On peut aussi invalider le cache : File/Invalide
Caches / Restart 03/03/202
5 [Link]
27
Gradle
Gradle est un outil de construction de projet comme
Ant ou Maven en Java.
Gradle se sert de deux fichiers nommés [Link]
pour construire le projet.
Un script [Link] pour le projet, contenant les
dépendances générales
Un autre script [Link] pour l’application, pour
compiler l’application
03/03/202
28
5 [Link]
Récapitulatif
Android : Un Système d’exploitation pour mobile
Android Studio : IDE (environnement de
développement intégré)
SDK : contient les outils nécessaires pour
développer des applications android
Gradle : outil de reconstruction du projet
Une application android contient:
des sources java,
ressources (interfaces, menu, texte,..)
On peut tester les applications sur un dispositif virtuel
(AVD) ou réel (ADB). 03/03/202
29
5 [Link]
Chap 4: Les activités
03/03/202
30
5 [Link]
Qu’est-ce qu’une Activité ?
L’interface d’une application Android est composée
d’écrans (ou de fenêtres).
Chaque écran correspond à une Activité.
Les pop-ups (boites de dialogue) ne sont pas des
activités. Ils se superposent à l’écran d’une Activité.
Android permet de naviguer entre les Activités
03/03/202
31
5 [Link]
Exemple : application Contacts
Il y a une première Activité qui affiche la liste des
contacts de l’utilisateur.
Le click sur un contact permet de lancer une
nouvelle Activité contenant les détails de ce
contact.
Le click sur le bouton Ajouter, permet de lancer une
autre Activité contenant un formulaire d’ajout d’un
nouveau contact.
En étant dans une Activité, le bouton back permet de
retourner à l’activité précédente.
03/03/202
32
5 [Link]
Composants d’une Activité ?
Une activité est constituée du contexte de l'application
et d'une seule et unique interface graphique
Context : informations sur l'état actuel de l'application,
constitue un lien avec le système Android ainsi que les
autres activités de l'application. 03/03/202
5 [Link]
33
Etats d’une Activité ?
Quand une activité se lance, elle se met tout en haut de
ce qu'on appelle la pile d'activités.
03/03/202
34
5 [Link]
Etats d’une Activité ?
Une activité peut se trouver dans 4 états qui se différencient surtout
par leur visibilité :
Etat Visibilité Description
Active L'activité est visible l'activité est lancée par l'utilisateur, elle
(«active» ou en totalité. s'exécute au premier plan ;
«running»)
Suspendue L'activité est l'activité est lancée par l'utilisateur, elle
(«paused») partiellement s'exécute et est visible, mais elle n'est plus au
visible à l'écran premier plan. Une notification ou une autre
activité lui a volé le focus et une partie du
premier plan ;
Arrêtée L'activité est tout l'activité a été lancée par l'utilisateur, mais
(«stopped») simplement n'est plus au premier plan et est invisible.
invisible pour L'activité ne peut interagir avec l'utilisateur
l'utilisateur.
qu'avec une notification ;
Morte Invisible. Pas l'activité n'est pas lancée ou a été tuée!
lancée 03/03/202
35
5 [Link]
Cycle de vie d’une Activité ?
Le cycle de vie indique
les différentes étapes
que va traverser une
activité pendant sa vie,
de sa naissance à sa
mort.
Chaque étape est
représentée par une
méthode.
onSaveInstanceState()
Cycle de vie d’une activité
Lorsque l’activité est lancée, le système Android
appelle les méthodes onCreate, onStart et
onResume.
Lorsque l’activité s’arrête, le système Android
appelle les méthodes onPause, onStop et
onDestroy.
Lorsque l’activité n’est plus au premier plan, mais
qu’elle est tout de même affichée, onPause est
appelée. Lorsque l’activité retourne au premier
plan, onResume est appelée.
Lorsque l’activité n’est plus affichée, onPause et
onStop sont appelées. Lorsque l’activité est de
nouveau affichée, onRestart, onStart et onResume
sont appelées.
Cycle de vie d’une activité
onSaveInstanceState est appelé lorsque le système
tue l’application afin de sauvegarder l’état de
l’activité. Cet état sera passé en paramètre à la
méthode onCreate, afin que vous puissiez restaurer
l’état de l’activité.
Le système Android s’occupe lui-même de
sauvegarder et restaurer l’état des vues des layouts,
à condition que ces vues aient chacune un ID unique
dans le layout.
Le changement de configuration comme le
changement d’orientation de l’écran provoque un
redémarrage de l’activité.
Création d’une Activité
Pour créer une activité, on va créer une classe java et la faire
hériter de la classe Activity.
On peut également faire hériter de la classe AppCompatActivity
qui hérite à son tour de la classe Activity.
La méthode onCreate définit, entre autres, ce qui doit être
affiché sur l’écran.
On peut aussi utiliser les autres méthodes onStart, onResume,...
selon le besoin.
Ces méthodes sont automatiquement appelées par le système
android une fois le lancement de l’activité demarrée
L’interface est mise en place par setContentView(identifiant de
ressource).
La méthode findViewById( int idRessource) : permet de récupérer
un composant à partir de l’interface graphique
03/03/202
à travers son id.
39
5 [Link]
Exemple de création d’une Activité
Le fichier res/layout/activity_hello.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="[Link]
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/message"/>
</LinearLayout>
La classe HelloActivity
public class HelloActivity extends AppCompatActivity {
TextView txtMessage;
@Override
protected void onCreate(Bundle savedInstanceState) {
[Link](savedInstanceState);
setContentView([Link].activity_hello); 03/03/202
40
5 [Link]
txtMessage=findViewById([Link]);
[Link]("Hello world !!!"); } }
Création d’une Activité
@Override signifie que cette méthode redéfinie celle héritée de la
superclasse.
Chaque Activité doit être déclarée dans [Link]
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="[Link]
package="[Link]">
<application
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round«
android:theme="@style/[Link]">
<activity
android:name=".MonActivity />
</application>
</manifest>
03/03/202
41
5 [Link]
Démarrage d’une Activité
Une seule Activité peut être démarrée automatiquement lors du
lancement de l’application.
Dans ce cas, l’Activité doit être déclarée dans [Link]
comme suit:
<manifest …>
<application …>
<activity
android:name=".HelloActivity"
android:exported="true">
<intent-filter>
<action android:name="[Link]" />
<category android:name="[Link]" />
</intent-filter>
</activity>
</application>
</manifest>
Un <intent-filter> déclare les conditions de démarrage
03/03/202
5 [Link]
42
d’une activité,
ici il dit que c’est l’activité principale.
Démarrage d’une Activité par programme
Une Activité peut être démarrée par un
programme java, notamment par une autre
Activité.
Dans ce cas, on utilise ce qu’on appelle des
Intents.
Une Intent est une demande destinée à une
Activité.
La méthode startActivity(intent) va lancer l’activité
MonActivite en appelant sa méthode onCreate()
03/03/202
43
5 [Link]
Exemple: Lancement d’une activité en java
Le fichier res/layout/activity_hello.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="[Link]
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/message"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Lancer une autre activité ici!"
android:id="@+id/bt_lancer"/>
</LinearLayout>
03/03/202
44
5 [Link]
Exemple: Lancement d’une activité en java
Le fichier [Link]
public class HelloActivity extends AppCompatActivity {
TextView txtMessage;
Button btLancer;
@Override
protected void onCreate(Bundle savedInstanceState) {
[Link](savedInstanceState);
setContentView([Link].activity_hello);
txtMessage=findViewById([Link]);
btLancer=findViewById([Link].bt_lancer)
[Link]("Hello world !!!");
[Link](new [Link]() {
@Override
public void onClick(View view) {
Intent intent = new Intent([Link], [Link]);
startActivity(intent);
}
});
}
03/03/202
45
} 5 [Link]
Récapitulatif
Une activité est composée d’une classe java qui hérite de
la classe Activity et d’une interface graphique
Une activité peut se trouver dans 4 états (actif,
suspendu, arrêté, mort)
Des méthodes (onCreate, onStart, onResume,..) sont
appelées lors du passage d’un état à un autre.
Toutes les activités de l’application doivent être
déclarées dans [Link]
Les Intents permettent de lancer une activité depuis un
code java.
03/03/202
46
5 [Link]