Département GI
Module : UML & développement mobile sous Android
Elément : Développement mobile sous Android
Pr. Dr. Yassine RHAZALI
Diplôme universitaire de technologie
Filière : Génie informatique
Option: Génie Logiciel
Semestre 4
1
1 Introduction à la programmation Mobile
1.1 Présentation des systèmes d’exploitation mobile
Téléphonie mobile : Smartphone
• Un smartphone, ordiphone ou téléphone intelligent, est un téléphone mobile disposant aussi des fonctions d'un assistant numérique
personnel (PDA) ;
• La saisie des données se fait par le biais d'un écran tactile ou d'un clavier ;
• Il fournit des fonctionnalités basiques comme : l'agenda, le calendrier, la navigation sur le web, la consultation de courrier électronique, de
messagerie instantanée, le GPS, etc.
2
1 Introduction à la programmation Mobile
1.1 Présentation des systèmes d’exploitation mobile
Nombre de smartphones vendus aux utilisateurs Top 5 des marques de téléphone les plus vendues en
finaux dans le monde de 2007 à 2021 premier trimestre de 2021
En 2021, les vendeurs de smartphones ont vendu environ 1,43 Presque 350 millions de smartphones ont été vendus en premier
milliard de smartphones dans le monde. trimestre de 2021 dans le monde, selon l’analyste Canalys. Des
ventes en hausse de 27 % par rapport à l’année 2020, marquée
négativement par la Covid-19.
© Statista 2022
3
1 Introduction à la programmation Mobile
1.1 Présentation des systèmes d’exploitation mobile
Nombre de téléchargements d'applications mobiles dans le monde de 2016 à 2021(en milliards)
Le nombre de téléchargements d'applications mobiles dans le monde n'a cessé d'augmenter à partir de 2016, pour dépasser les 200 milliards en
2019. Au cours de la dernière année mesurée, les consommateurs ont téléchargé 230 milliards d'apps mobiles sur leurs appareils connectés, soit
une augmentation de plus de 63 % par rapport aux 140,7 milliards de téléchargements d'apps en 2016.
© Statista 2022
4
1 Introduction à la programmation Mobile
1.1 Présentation des systèmes d’exploitation mobile
Domaines d’utilisations des applications mobiles
• L'importance des applications mobiles dans la vie quotidienne. Education
• L'importance des téléphones mobiles dans notre vie et nos activités
quotidiennes sans fin.
Jeux Banque
Quelques
domaines
d’utilisation
Réseaux
Shopping
sociaux
Communi
Cuisine
cation
5
1 Introduction à la programmation Mobile
1.1 Présentation des systèmes d’exploitation mobile
Logiciel open source
• Un logiciel libre (open source) est un logiciel informatique dont le code source est librement accessible, modifiable et partageable. Le
développement collaboratif et le partage des compétences informatiques sont généralement associés aux communautés de développeurs
Open Source.
• L'une des principales différences, opposant les logiciels libres aux logiciels propriétaires, est que le code source de ces derniers est "fermé". En
effet, l'accès au code source est impossible ou très limité. Cela signifie que les utilisateurs paient une licence juste pour utiliser le logiciel, tel
qu'il est, puisque le code source reste inaccessible.
• Par exemple, comparons deux systèmes d'exploitation professionnels que vous connaissez bien : Microsoft Windows est un logiciel
propriétaire, tandis que RedHat Enterprise Linux est un logiciel libre. Tous deux sont très populaires et largement utilisés dans les entreprises de
nos jours.
6
1 Introduction à la programmation Mobile
1.1 Présentation des systèmes d’exploitation mobile
Système d’exploitation mobile
Un système d'exploitation mobile est un système d'exploitation qui permet d'exécuter d'autres logiciels d'application sur des appareils mobiles. Il
s'agit du même type de logiciel que les célèbres systèmes d'exploitation pour ordinateurs tels que Linux et Windows, mais ils sont désormais plus
légers et plus simples dans une certaine mesure.
• Un système d'exploitation mobile est un système d'exploitation embarqué conçu pour fonctionner sur un appareil mobile. Ce type de système
d'exploitation se concentre entre autres sur la gestion de la connectivité sans fil et celle des différents types d'interface.
• Les systèmes d'exploitation que l'on trouve sur les smartphones comprennent Symbian OS, iPhone OS, BlackBerry de RIM, Windows Mobile,
Palm WebOS, Android et Maemo. Android, WebOS et Maemo sont tous dérivés de Linux. L'iPhone OS est issu de BSD et NeXTSTEP, qui sont liés
à Unix.
Réf : Sghaier- Systèmes d'exploitation pour mobiles
7
1 Introduction à la programmation Mobile
1.1 Présentation des systèmes d’exploitation mobile
Contraintes des systèmes d’exploitation mobiles
Les dispositifs mobiles ont des contraintes et des restrictions sur leur caractéristique physique telles que :
• la taille de l'écran ;
• la mémoire ;
• la puissance de traitement, etc ;
• la faible disponibilité de batterie ;
• la quantité limitée de capacités informatiques et de communication.
Ainsi, ils ont besoin de différents types de systèmes d'exploitation en fonction des capacités qu'ils supportent. Par exemple, un OS PDA est
différent d'un système d'exploitation de Smartphone.
Un système d'exploitation mobile est un logiciel embarqué responsable de la gestion des opérations, du contrôle, de la coordination de
l'utilisation du matériel entre les différents programmes d'application et le partage des ressources d'un dispositif mobile.
8
1 Introduction à la programmation Mobile
1.1 Présentation des systèmes d’exploitation mobile
Plateformes populaires de l'OS mobile
.
• Système d'exploitation Android : Le système d'exploitation Android est le système d'exploitation le plus populaire aujourd'hui. Il s'agit d'un
système d'exploitation mobile basé sur le noyau Linux et les logiciels libres. Le système d'exploitation Android a été développé par Google. Le
premier appareil Android a été lancé en 2008.
• Bada (Samsung Electronics) : Bada est un système d'exploitation mobile de Samsung qui a été lancé en 2010. Le Samsung wave a été le
premier mobile à utiliser le système d'exploitation Bada. Le système d'exploitation Bada offre de nombreuses fonctionnalités mobiles, telles
que les graphiques en 3D, l'installation d'applications et le toucher multipoint.
• Windows Mobile OS : Le système d'exploitation Windows Mobile OS est un système d'exploitation mobile qui a été développé par Microsoft.
Il a été conçu pour les PC de poche et les mobiles intelligents.
• iPhone OS / iOS : L'iOS a été développé par la société Apple pour être utilisé sur ses appareils. Le système d'exploitation iOS parmi les
systèmes d'exploitation les plus populaire aujourd'hui. C'est un système d'exploitation très sûr. Le système d'exploitation iOS n'est pas
disponible pour d'autres mobiles. 9
1 Introduction à la programmation Mobile
1.1 Présentation des systèmes d’exploitation mobile
Présentation d’Android
• Système d'exploitation mobile basé sur le noyau Linux ;
• Il a été développé par l'Open Handset Alliance, qui était dirigée par Google et d'autres entreprises ;
• Le système d'exploitation Android est basé sur Linux et peut être programmé en C/C++, mais la plupart des applications sont développées en
Java (Java accède aux bibliothèques C via JNI, abréviation de Java Native Interface) ;
• Interface utilisateur pour les écrans tactiles ;
• Utilisé sur plus de 80% de tous les smartphones ;
• Dispositifs tels que les montres, les téléviseurs, et les voitures ;
• Plus de 2 millions des applications Android dans Google Play Store ;
• Hautement personnalisable pour les périphériques / par les vendeurs ;
• Open source. 10
1 Introduction à la programmation Mobile
1.1 Présentation des systèmes d’exploitation mobile
Comparaison des principaux systèmes d'exploitation pour les appareils mobiles
11
1 Introduction à la programmation Mobile
1.1 Présentation des systèmes d’exploitation mobile
Dispositifs mobiles
PDA Smartphone Lecteurs multimédias
.
Tablette Consoles de jeu mobile Smartwatch
12
1 Introduction à la programmation Mobile
1.2 Approches de développement mobile
Types des approches de développement mobile
Il existe quatre approches pour le développement des applications mobiles :
Développement d'applications Développement d'applications
natives hybrides
Développement d'applications
Application web progressive
multiplateformes
13
1 Introduction à la programmation Mobile
1.2 Approches de développement mobile
Types des approches de développement mobile
Développement d'applications natives
• Les applications natives sont des applications spécifiquement développées pour un système d'exploitation.
• Les systèmes d'exploitation les plus connus pour le mobile sont iOS et Android.
• Si vous souhaitez développer une application native compatible avec iOS et Android, il faudra développer deux applications complètement
différentes :
• une première pour iOS, en langage Swift ou Objective-C ;
• une seconde pour Android, en langage Kotlin ou Java.
14
1 Introduction à la programmation Mobile
1.2 Approches de développement mobile
Types des approches de développement mobile
Approche native : Avantages et Inconvénients
15
1 Introduction à la programmation Mobile
1.2 Approches de développement mobile
Types des approches de développement mobile
Approche native : Exemple
16
1 Introduction à la programmation Mobile
1.2 Approches de développement mobile
Types des approches de développement mobile
Développement d'applications hybrides
• Une application mobile hybride est une application dont le code source permet de générer deux applications : l’une pour Android et l’autre
pour iOS.
• Elle s’appuie pour cela sur des technologies « Web » telles que le Javascript, HTML ou encore CSS.
• Son contenu s’exécute dans un « conteneur » natif, une webview (c’est-à-dire une page internet), grâce à un Framework (Cordova, Capacitor),
pour pouvoir être utilisée comme une application native.
• Il s’agit donc, comme toute application Web, d’un code « interprété » qui nécessite d’être traduit par la machine à chaque exécution, ce qui
réduit la performance de l’application.
17
1 Introduction à la programmation Mobile
1.2 Approches de développement mobile
Types des approches de développement mobile
Approche hybride : Avantages et Inconvénients
18
1 Introduction à la programmation Mobile
1.2 Approches de développement mobile
Types des approches de développement mobile
Approche hybride : Exemple
19
1 Introduction à la programmation Mobile
1.2 Approches de développement mobile
Types des approches de développement mobile
Développement d'applications multiplateformes
• Les applications multiplateformes (cross-platform) ressemblent beaucoup aux applications hybrides.
• Cependant, contrairement aux applications hybrides dont le code s’exécute dans une « webview » native, les applications cross-platform
produisent un même code source qui, compilé, produit deux applications natives. Cela induit une meilleure performance et une expérience
utilisateur plus proche du natif.
• Les technologies utilisées pour développer une application cross-platform sont Flutter, Appcelerator, Titanium, Xamarin, React Native ou encore
Kotlin multiplateforme.
20
1 Introduction à la programmation Mobile
1.2 Approches de développement mobile
Types des approches de développement mobile
Approche multiplateformes : Avantages et Inconvénients
21
1 Introduction à la programmation Mobile
1.2 Approches de développement mobile
Types des approches de développement mobile
Approche multiplateformes : Exemple
Le code de l'application doit être décomposé en plusieurs
parties :
• Code commun (Sahed Code) - un projet commun qui
contient du code réutilisable pour stocker les données de
la tâche ; expose une classe Modèle et une API pour gérer
l'enregistrement et le chargement des données.
• Code spécifique à la plate-forme (Platform Specific Code)
- projets spécifiques à la plate-forme qui mettent en
œuvre une interface utilisateur native pour chaque
système d'exploitation, en utilisant le code commun
comme "back end". Ref : microsoft - Xamarin
22
1 Introduction à la programmation Mobile
1.2 Approches de développement mobile
Types des approches de développement mobile
Application web progressive
• Avec l'approche de développement web, l’application s'exécute dans le navigateur du terminal mobile et utilise les technologies web standard
telles que HTML5, CSS3 et JavaScript.
• Les applications web mobiles n'ont pas accès aux fonctions de la plateforme car elles reposent uniquement sur le navigateur et sur les normes
web associées.
• Les applications web mobiles ne sont pas distribuées via un magasin d'applications. Elles sont accessibles via un lien sur un site Web ou un
signet dans le navigateur du terminal mobile de l'utilisateur.
23
1 Introduction à la programmation Mobile
1.2 Approches de développement mobile
Types des approches de développement mobile
Approche web progressive : Avantages et Inconvénients
24
1 Introduction à la programmation Mobile
1.2 Approches de développement mobile
Types des approches de développement mobile
Approche web progressive : Exemple
25
1 Introduction à la programmation Mobile
1.2 Approches de développement mobile
Critères pour sélectionner une approche afin de développer une application mobile
* *
** **
Réf : inflexsys
* : Moyennant un effort de développement supplémentaire pour adapter l'application aux standards de navigation spécifiques à chaque OS
** : Moyennant des montées de versions plus fréquentes
26
2 Architecture Android SDK
Présentation de l’architecture Android
L’architecture d'Android est composée de 5 couches :
1. Applications système et utilisateur ;
2. API du système d'exploitation Android dans le
Framework Java ;
3. Exposition des API natives ; exécution des applications ;
4. Exposer les capacités matérielles du dispositif ;
5. Noyau Linux.
Une description de chaque couche sera présentée dans les
diapositives qui suivent.
Réf : Android developer
27
2 Architecture Android SDK
Architecture Android : 1. Applications système et utilisateur
• Les applications système n'ont pas de statut particulier.
• Les applications système fournissent des capacités clés aux développeurs d'applications.
•
Exemple :
• Votre application peut utiliser une application système pour délivrer un message SMS ou passer un appel téléphonique.
28
2 Architecture Android SDK
Architecture Android : 2. Java API Framework
L'ensemble des fonctionnalités du système d'exploitation Android est mis à votre disposition par le biais d'API écrites en langage Java :
• Hiérarchie des classes de vue pour créer des écrans d'interface utilisateur ;
• Gestionnaire de notifications ;
• Gestionnaire d'activités pour les cycles de vie et la navigation.
Java API Framework
Activity Manager Window Manager Content Provider View System Package Manager
Telephony Manager Location Manager Notification Manager Resource Manager
29
2 Architecture Android SDK ANDROID RTUNTIME
Core Libraries
Android RT Dalvik VM
Architecture Android : 3. Android runtime
Chaque application s'exécute dans son propre processus avec sa propre instance du Runtime Android.
Bien qu'Android soit développé en Java, la couche d'exécution de l'architecture Android est constituée de la machine virtuelle Dalvik (DVM), des
bibliothèques Java de base et, récemment, d'une nouvelle machine virtuelle appelée Android runtime (ART).
La DVM exécute des applications programmées en Java. La DVM ne prétend pas être une machine virtuelle Java (JVM) pour des raisons de
licence, mais elle remplit la même fonction. La raison en est que Dalvik est optimisé pour fonctionner sur des appareils de petite taille avec une
mémoire limitée. Pour des raisons de performances, la DVM n'est démarrée qu'une seule fois. Chaque nouvelle instance de celle-ci est clonée
par un service système appelé Zygote. Le schéma suivant présente la structure du runtime Android :
30
2 Architecture Android SDK
Architecture Android : 3. Bibliothèques C/C++
Les bibliothèques C/C++ de base donnent accès aux principaux composants et services natifs du système Android.
Bibliothèques
SQLite Webkit OpenGL ES Freetype
Surface Manager Media Framework SSL SGL
libc
31
2 Architecture Android SDK
Architecture Android : 4.Couche d'abstraction matérielle (HAL)
Interfaces standard qui exposent les capacités matérielles des dispositifs sous forme de bibliothèques.
Exemples : Caméra, module Bluetooth
Applications
Android Framework
Native Libraires
HAL
Linux Kernel
32
2 Architecture Android SDK
Architecture Android : 5. Noyau Linux
• Threading et gestion de la mémoire de bas niveau ;
• Fonctions de sécurité ;
• Pilotes.
Noyau Linux
Display Driver Camera Driver Audio Driver Bindler (IPC) Driver Flash Memory Driver
Process Management Wifi Driver Bluetooth Driver Memory Mangement Power Management
33
3 Activity
Création d’une Activity
Méta-modèle d’une application Android
• Une application mobile est composée de plusieurs écrans (Screen), chaque écran est composé de plusieurs View.
• Une view peut être un widght ou un Layout.
34
3 Activity
Création d’une Activity
View
Si vous regardez votre appareil mobile, chaque élément de l'interface utilisateur que
vous voyez est une View.
Views
35
3 Activity
Création d’une Activity
View
Les sous-classes View sont des éléments de base de l'interface utilisateur.
• Affichage de texte (classe TextView), édition de texte (classe EditText) ;
• Boutons (classe Button), menus, autres contrôles ;
• Possibilité de défilement (ScrollView, RecyclerView) ;
• Afficher des images (ImageView) ;
• Regroupement de vues (ConstraintLayout et LinearLayout).
36
3 Activity
Création d’une Activity
Exemples de sous-classes de View
Button CheckBox
EditText RadioButton
Slider Switch
37
3 Activity
Création d’une Activity
Attributs de View
• Couleur, dimensions, positionnement ;
• Peut avoir le focus (c'est-à-dire être sélectionné pour recevoir les entrées de l'utilisateur) ;
• Peut être interactif (répondre aux clics de l'utilisateur) ;
• Peut être visible ou non ;
• Relations avec d'autres vues.
38
3 Activity
Création d’une Activity
Créer des vues (Views) et des mises en page (Layouts)
• Éditeur de mise en page d'Android Studio : représentation visuelle du XML ;
• Éditeur XML ;
• Code Java.
39
3 Activity
Création d’une Activity
Éditeur de mise en page d'Android Studio
1. Fichier de mise en page XML ;
2. Onglets Design et Texte ;
3. Volet Palette ;
4. Arbre des composants ;
5. Volets Design et Blueprint ;
6. Onglet Attributs.
40
3 Activity
Création d’une Activity
View définie en XML
Exemple d’un TextView en XML :
<TextView
android:id="@+id/show_count"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/myBackgroundColor"
android:text="@string/count_initial_value"
android:textColor="@color/colorPrimary"
android:textSize="@dimen/count_text_size"
android:textStyle="bold"
/>
41
3 Activity
Création d’une Activity
View définie en XML
android:<property_name>="<property_value>"
Exemple: android:layout_width="match_parent"
android:<property_name>="@<resource_type>/resource_id"
Exemple: android:text="@string/button_label_next"
android:<property_name>="@+id/view_id"
Exemple: android:id="@+id/show_count"
42
3 Activity
Création d’une Activity
View en JAVA
context
Dans l’Activity:
TextView myText = new TextView(this);
myText.setText("Afficher le text!");
Context est une interface permettant d'obtenir des informations globales sur l'environnement d'une application.
Obtenez le Context :
Context context = getApplicationContext() ;
Une activité est son propre contexte : TextView myText = new TextView(this).
43
3 Activity
Création d’une Activity
Etats d’une Activity
Une activité, vis-à-vis du code, est séparée en 2 morceaux: un fichier XML, et un fichier
JAVA.
Le fichier XML :
• Interface graphique de l’activity ;
• Conception de l’IHM : design et ergonomie ;
• Déclaration des éléments graphiques : View, Buttons, Layouts, …etc ;
• Déclaration des identifiants des éléments graphiques.
Le fichier Java
• Le contrôle des éléments déclarés dans le fichier XML ;
• Chaque activity est liée à un seul et unique fichier XML qui définit son interface
graphique.
44