24/10/2022
Introduction
QUESTIONS
DÉVELOPPEMENT POUR MOBILES
(ANDROID) COMMENT PROGRAMMER UN APPAREIL MOBILE?
QUEL LANGAGE DE PROGRAMMATION UTILISER?
Chapitre 1 :
Prise en main QUEL SYSTÈME D'EXPLOITATION CHOISIR?
Dr. KHALIFI Hamid
[email protected] DÉVELOPPEMENT POUR MOBILES (ANDROID) - DR. KHALIFI HAMID
Introduction Introduction
CONTRAINTES
DE PLUS EN PLUS D’ÉQUIPEMENTS
M ÉM O I R E (FA I B LE M ÉM O I R E R A M DI SPO NI B LE)
CPU (PR O CESSEU R ET CO NSO M M AT I O N DES R ESSO U R CES)
FA I B LE DÉB I T ET DI SCO NT I NU I T É DES R ÉSEAU X
B AT T ER I E ET CO NSO M M AT I O N D’ ÉNER GI E
FR A GM ENTAT I O N DES SY ST ÈM ES D’ EXPLO I TAT I O N ET M AT ÉR I ELLE
I M PO R TA NT T EM PS D’A CCÈS (EN ÉCR I T U R E) SU R DI SQU E
CYCLE DE VI E SPÉCI FI QU E DES A PPLI CAT I O NS
CO NCEPT I O N PA R T I CU LI ÈR E DES I H M (T Y PE D’ É CR A N, M O DE
PO R T R A I T O U PAY SA GE, T EXT E DE PET I T ES PO LI CES, FA I B LE
R ÉSO LU T I O N DE TO U CH É DE LA DA LLE TA CT I LE ( ~2 5 PI XELS), …
DÉVELOPPEMENT POUR MOBILES (ANDROID) - DR. KHALIFI HAMID DÉVELOPPEMENT POUR MOBILES (ANDROID) - DR. KHALIFI HAMID
Introduction Introduction
CONCURRENTS DE CE MARCHÉ C’EST QUOI ?
A PPLE AVEC IO S (A NCIENNEM ENT IPH O NE O S) A NDR OI D EST U N SY ST ÈM E D'E XPLO I TAT I O N O PEN SO U R CE
O R I ENT É DI SPO SI T I F M O B I LES (SM A R T PH O NES , TA B LET T ES, T V. . . ).
GO O GLE AVEC A NDR O ID (LA NCÉ EN JU IN 2007)
DI SPO NI B I LI T É DU CO DE .
R I M (R E SEA R CH IN M OTIO N) AVEC B LA CK B ER RY O S I M PO R TA NT E CO M M U NAU T É D’ U T I LI SAT E U RS.
M ICR O SO FT AVEC WINDOWS PH O NE I L S’A GI T DO NC D’ UN ENSEM B LE DE LO GI CI ELS QU I SER T
D’ I NT ER FA CE ENT R E LE M AT ÉR I EL (LES CO M PO SA NT S DU
SA M SU NG AVEC B A DA (A R R ÊTÉ EN 2014) T ÉLÉPH O NE, D’ UNE TA B LET TE . . . ) ET LES LO GI CI ELS A PPLI CAT I FS
(CEU X QU E VO U S A LLEZ DÉVELO PPER ) .
H P AVEC PA LM WEB O S DEVENU WEB O S
SY ST ÈM E D’ EXPLO I TAT I O N B A SÉ SU R LE NOYAU LI NU X
NO K IA AVEC SYM B IA N O S (A R R ÊTÉ EN 2011).
ENVI R O NNEM ENT DE DÉVELO PPEM ENT GR AT U I T
XI AO M I AVEC M IU I (M E YO U I) DÉR IVÉ D' A NDR O ID
DÉVELOPPEMENT POUR MOBILES (ANDROID) - DR. KHALIFI HAMID DÉVELOPPEMENT POUR MOBILES (ANDROID) - DR. KHALIFI HAMID
1
24/10/2022
Introduction Introduction
HISTOIRE L’HEURE ACTUELLE
I NI TIA LEM ENT U N O S PO U R A PPA R EIL PH OTO
IL Y A UN APPAREIL ANDROID POUR 2,5 HUMAINS
AO Û T 2005 – GO O GLE A CH ÈTE LA STA R TU P A NDR O ID INC
SUR TERRE.
NOVEM B R E 2007 – « L’O PEN H A NDSET A LLIA NCE »
3 3 PA R T E N A IR E S (SA M SU N G, M OTO R O LA , H TC, LG, IN T E L,
H UAWEI, A LCATEL, ...)
STA N DA R D E T N O R M E "A PPA R E IL M O B ILE AV EC A NDR O ID"
A N DR O ID SER A M IS À LEU R DISPO SITIO N GR ATU ITEM ENT.
EN CO NTR EPA R TIE, GO O GLE PR ÉINSTA LLE SES SERVICES
(NAVIGATEU R , M OTEU R DE R ECH ER CH E, M ESSA GER IE GM A IL).
DÉCEM B R E 2008 – A NDR O ID SDK 1.0 SU R U N T - M O B ILE G1
O CTO B R E 2010 - A NDR O ID DEVIENT R ETA B LE PO U R GO O GLE
DÉVELOPPEMENT POUR MOBILES (ANDROID) - DR. KHALIFI HAMID DÉVELOPPEMENT POUR MOBILES (ANDROID) - DR. KHALIFI HAMID
Introduction Le Système
VERSIONS :
AV R I L 2 0 0 9 : 1 . 5 ( C U P C A K E )
SEPTEMBRE 2009 : 1.6 ( DONUT) OS BASÉ SUR UN NOYAU LINUX
O C TO B R E 2 0 0 9 : 2 . 0 / 2 . 1 ( EC L A I R )
M A I 2 0 1 0 : 2 . 2 ( F R OYO )
JAVA – SDK Android
D ÉC E M B R E 2 0 1 0 : 2 . 3 . X ( G I N G E R B R E A D ) VM : Dalvik Machine Virtuelle
J U I L L E T 2 0 1 1 : 3 . X ( H O N E YC O M B)
D ÉC E M B R E 2 0 1 1 : 4 . 0 . X ( I C E S C R E A M ) VM à registres illimités (non à pile comme la JVM)
J U I N 2 0 1 2 : 4 . X . X ( J E L LY B E A N )
O C TO B R E 2 0 1 3 : 4 . 4 . X ( K I T K AT )
Optimisation mémoire
N OV E M B R E 2 0 1 4 : 5 . X . X ( LO L L I P O P ) Optimisation vitesse d’initialisation
O C TO B R E 2 0 1 5 : 6 . 0 . 1 ( M A RS H M A L LO W )
A O U T 2 0 1 6 : 7 . X . X ( N O U G AT ) Optimisation vitesse d’exécution (2x JVM classique)
A O U T 2 0 1 7 : 8 . 1 . X ( O R EO )
AOUT 2018 : 9.0.X (PIE)
Chaque processus Android possède sa propre VM
SEPTEMBRE 2019 : 10.0.X ( ANDROID 10) Xml pour les interfaces
SEPTEMBRE 2020 : 11.0.X ( ANDROID 11)
O C TO B R E 2 0 2 1 : 1 2 . 0 . X ( A N D R O I D 1 2 )
AOUT 2022 : 13.0.X (ANDROID 13)
DÉVELOPPEMENT POUR MOBILES (ANDROID) - DR. KHALIFI HAMID DÉVELOPPEMENT POUR MOBILES (ANDROID) - DR. KHALIFI HAMID
Le Système ARCHITECTURE Le Système ARCHITECTURE
DÉVELOPPEMENT POUR MOBILES (ANDROID) - DR. KHALIFI HAMID DÉVELOPPEMENT POUR MOBILES (ANDROID) - DR. KHALIFI HAMID
2
24/10/2022
Le Système ARCHITECTURE Le Système ARCHITECTURE
DÉVELOPPEMENT POUR MOBILES (ANDROID) - DR. KHALIFI HAMID DÉVELOPPEMENT POUR MOBILES (ANDROID) - DR. KHALIFI HAMID
Le Système ARCHITECTURE Le Système ARCHITECTURE
DÉVELOPPEMENT POUR MOBILES (ANDROID) - DR. KHALIFI HAMID DÉVELOPPEMENT POUR MOBILES (ANDROID) - DR. KHALIFI HAMID
Fonctionnement Généralités Fonctionnement Généralités
Les applications sont écrites en Java PRINCIPES DU DÉVELOPPEMENT EMBARQUÉ
Le code compilé "dex" ainsi que les ressources COMPILATION CROISÉE
(images, layout...) sont regroupés dans une archive au
format "apk" par les outils du SDK
Cette archive "apk" est un tout permettant la
distribution et l'installation de l'application sur exécution native
n'importe quelle plateforme Android. (compilation croisée)
édition - compilation
Déploiement spécifique - environnements dédiés
exécution dans un émulateur
Debug sur emulateur puis sur device
(compilation native)
DÉVELOPPEMENT POUR MOBILES (ANDROID) - DR. KHALIFI HAMID DÉVELOPPEMENT POUR MOBILES (ANDROID) - DR. KHALIFI HAMID
3
24/10/2022
Fonctionnement Packaging : Déploiement Fonctionnement Indépendance
Un des aspect les plus important d’Android est la réutilisabilité
ARCHIVE : APK Chaque application peut utiliser des ”morceaux d’autres
« .dex » : « .class » applications” (si elle le permettent)
Par exemple si votre application permet de retoucher des photos et
« res » : ressources de l’application (icônes, images, que vous désirez publier cette photo vous pouvez utiliser toutes les
XML , …) applications déjà présentes pour réaliser cette tâche (Facebook,
« Android-manifes.xml » : gestion de l’exécution et LinkedIn, Mail ...). Et sans utiliser le code de cette application tierce
juste en appeler la partie intéressante.
des permissions
Ainsi le système doit être capable :
De lancer n’importe quelle partie exposée d’une application sans en
DÉPLOIEMENT lancer la totalité.
Appuyez et cliquez pour installer « Puch and click for Donc les application Andoid n’ont pas de point d’entrée global
(méthode main()). Mais sont composés d’éléments indépendants ou
install » chacun peut être lancé individuellement.
DÉVELOPPEMENT POUR MOBILES (ANDROID) - DR. KHALIFI HAMID DÉVELOPPEMENT POUR MOBILES (ANDROID) - DR. KHALIFI HAMID
Fonctionnement Indépendance Fonctionnement Eléments Fondamentaux
ACTIVITÉ (ACTIVITY)
Un composant = un point d'entrée potentiel dans Une application Android est composée d’écrans.
l'application.
Un « écran » correspond à une activité « Activity »
Une application peut lancer un composant d'une
C ’est équivalent d’une fenêtre (Windows, Linux).
autre application.
Chaque activité est indépendante des autres.
Plusieurs points d'entrée potentiels On doit définir quelle est la première activité à
(pas de méthode main) exécuter lors du lancement de l'application
Une activité doit hériter de la classe :
Contrairement <> aux applications Java classique
android.app.Activity
Une application est donc un ensemble d'activités.
DÉVELOPPEMENT POUR MOBILES (ANDROID) - DR. KHALIFI HAMID DÉVELOPPEMENT POUR MOBILES (ANDROID) - DR. KHALIFI HAMID
Fonctionnement Eléments Fondamentaux Fonctionnement Eléments Fondamentaux
ACTIVITÉ (ACTIVITY) SERVICE
Exemple d'une application de SMS : Un ser vice ne possède pas d'interface utilisateur
Une activité po ur envo yer le SMS Tourne en arrière plan
Une autre po ur cho isir un co ntact Exemple :
Une autre po ur afficher un histo rique d'échanges.
Lecture de musique
Collecte de données affichables dans une activité
Pour naviguer dans l'application d’une activité à l’autre
Suivi GPS
chaque activité doit elle -même lancer l'activité suivante.
Vérification de mise à jour
Exemple :
Une actio n de l’utilisateur, bo uto n, menu o u Un ser vice s'exécute dans un processus fil d'exécution
l’application fait aller sur l’écran suivant (Thread) et donc ne bloque pas le reste du terminal quand
Le bo uto n back ramène sur l’écran précédent il tourne en fond (indépendamment de toute activité).
DÉVELOPPEMENT POUR MOBILES (ANDROID) - DR. KHALIFI HAMID DÉVELOPPEMENT POUR MOBILES (ANDROID) - DR. KHALIFI HAMID
4
24/10/2022
Fonctionnement Eléments Fondamentaux Fonctionnement Eléments Fondamentaux
LES RÉCEPTEURS (BROADCASTRECEIVER) FOURNISSEUR DE CONTENU (CONTENT PROVIDER)
Réception des évènements systèmes ou d’une autre Les fournisseurs de contenu permettent de partager du
application contenu entre les applications.
Émission et réception d’intentions ( intent) Une application s'en sert pour rendre public certaines de
Les récepteurs sont : ses données, Par exemple, il existe un Content Provider
Des éléments inactifs qui attendent un évènement gérant les Contacts d’un téléphone.
Il y a des évènements système : Le données sont donc exposées dans une classe héritant de
Batterie faible android.content.ContentProvider, qui se compose d’une :
L'utilisateur a pris une pho to … URI : Le chemin d’accès vers un ContentProvider.
Methodes :
Il est possible de définir ses propres évènements • Insert()
Ils peuvent également utiliser la Notification Manager pour • Update()
signaler quelque chose à l'utilisateur (Icone, vibration, • Delete()
alerte sonore,…) • Query()
DÉVELOPPEMENT POUR MOBILES (ANDROID) - DR. KHALIFI HAMID DÉVELOPPEMENT POUR MOBILES (ANDROID) - DR. KHALIFI HAMID
Fonctionnement Eléments Fondamentaux Fonctionnement Eléments Fondamentaux
LES INTENTIONS (INTENT) MANIFEST.XML
Les fournisseurs de contenu (Content provider) sont Spécifier les ressources utilisées
Sécuriser le droit d’accès aux ressources
activés par une requête d'un ContentResolver.
Utiliser ce qui est nécessaire
Mais les 3 autres systèmes ( Activity, Service,
Point de départ de toute application Android
BroadCast Receiver) sont activés par des messages
Permet de déclarer ce que l’application contient (activités,
asynchrone appelés "Intent". ser vices...)
Une intention dérive de android.content.Intent Précise les permissions de l’application (contrôle de la
Une intention possède une action et un contenu webcam, accès au réseaux, accès au ser vice de localisation,
droit de passer des appels...)
particulier.
Précise le nom du package java utilisant l’application.
Précise la version d’Android minimum nécessaire
Déclare les librairies utilisées
DÉVELOPPEMENT POUR MOBILES (ANDROID) - DR. KHALIFI HAMID DÉVELOPPEMENT POUR MOBILES (ANDROID) - DR. KHALIFI HAMID
Fonctionnement Première application Android
CRÉATION D’UN NOUVEAU PROJET
PREMIÈRE APPLICATION Android Studio contient un assistant de création
d’applications
ANDROID
DÉVELOPPEMENT POUR MOBILES (ANDROID) - DR. KHALIFI HAMID DÉVELOPPEMENT POUR MOBILES (ANDROID) - DR. KHALIFI HAMID
5
24/10/2022
Fonctionnement Première application Android Fonctionnement Première application Android
Android Studio propose plusieurs projets de base. L’assistant demande le nom du projet, son package,
son emplacement, et le niveau minimal de l’API.
En général, on part de celui appelé Empty Activity.
DÉVELOPPEMENT POUR MOBILES (ANDROID) - DR. KHALIFI HAMID DÉVELOPPEMENT POUR MOBILES (ANDROID) - DR. KHALIFI HAMID
Fonctionnement Première application Android Fonctionnement Première application Android
SÉLECTION DE L’API MINIMUM
SÉLECTION DE L’API MINIMUM
Ch aq u e A PI ap p or te d es fon c ti on n al i tés su p p l ém en tai re s avec
c om p atib i l i té asc en d an te . Cer tai n es fon c ti on n al i tés d evi en n en t
d ép réc i ées au f i l d u tem p s, m ais resten t gén éral em en t
d i sp on i b l es .
O n sou h ai te tou jou rs p rogram m er avec l a d er n i ère A PI
(fon c ti on s p l u s com p l ètes et m od er n es), m ai s l es u ti l i sateu rs ont
sou ven t d es sm ar tp h on es p l u s an c i en s, q u i n ’on t p as c ette A PI .
O r A n d roi d n e p rop ose au c u n e m i se à jou r m aj eu re. L es
sm ar tp h on es resten t tou te l eu r vi e avec l ’A PI q u ’ i l s on t à l a
n ai ssan c e .
Les d ével o p p eu rs d oi ven t d onc c h oi sir u n e A PI q u i c or resp on d à
l a m ajor i té d es sm ar tp h on es exi stan t su r l e m arc h é.
DÉVELOPPEMENT POUR MOBILES (ANDROID) - DR. KHALIFI HAMID DÉVELOPPEMENT POUR MOBILES (ANDROID) - DR. KHALIFI HAMID
Fonctionnement Première application Android Fonctionnement Première application Android
VUE GLOBALE ÉDITEUR GRAPHIQUE (DESIGN MODE)
DÉVELOPPEMENT POUR MOBILES (ANDROID) - DR. KHALIFI HAMID DÉVELOPPEMENT POUR MOBILES (ANDROID) - DR. KHALIFI HAMID
6
24/10/2022
Fonctionnement Première application Android Fonctionnement Première Exécution
ÉDITEUR GRAPHIQUE (TEXT MODE)
L’application est prévue pour tourner sur un appareil
(smartphone ou tablette) réel ou simulé (virtuel).
Le SDK Android permet de :
Installer l’application sur une vraie tablette ou
smartphone connectée par USB.
Simuler l’application sur un périphérique virtuel AVD
AVD = Android Virtual Device, permettent de simuler
l’exécution d’un terminal Android sur un ordinateur.
Ces terminaux sont personnalisables (version d’Android,
type de processeur, espace de stockage...).
DÉVELOPPEMENT POUR MOBILES (ANDROID) - DR. KHALIFI HAMID DÉVELOPPEMENT POUR MOBILES (ANDROID) - DR. KHALIFI HAMID
Fonctionnement Première Exécution Fonctionnement Première Exécution
CRÉATION D’OUTIL AVD CRÉATION D’OUTIL AVD
A p aram étrer : M od èl e d e tab l ette ou tél ép h on e à si m u l er,
Versi on d u systèm e A n d roi d , O r i en tati on d e l ’éc ran , O p ti on s d e
si m u l ati on (R A M , Stoc kage, SD Card , ...)
DÉVELOPPEMENT POUR MOBILES (ANDROID) - DR. KHALIFI HAMID DÉVELOPPEMENT POUR MOBILES (ANDROID) - DR. KHALIFI HAMID
Fonctionnement Première Exécution Fonctionnement Première Exécution
CRÉATION D’OUTIL AVD L’EMULATEUR : RÉSULTAT :
DÉVELOPPEMENT POUR MOBILES (ANDROID) - DR. KHALIFI HAMID DÉVELOPPEMENT POUR MOBILES (ANDROID) - DR. KHALIFI HAMID
7
24/10/2022