Académique Documents
Professionnel Documents
Culture Documents
SMB116 Intro CMT
SMB116 Intro CMT
Un rapide survol
Jean-Ferdy Susini
Maître de Conférences - CNAM
EPN 5 - Informatique
Source: Cours de Jean-Michel DOUIN, Wikipédia,
Android.com…
Paris, 06/02/2024
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
L’UE
2
L’UE
3
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
L’UE
4
Évaluation :
Examen final sur papier 2 h (note < 8 éliminatoire)
Série de TP (5*10 sur 50) pas de rendu=> 0
Si total = 0 => éliminatoire
Mini-projet avec soutenance si 0 => éliminatoire
Note finale 37,5% d’exam +37,5% TP + 25% mini-
projet
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
Évolution des «smart-devices»
Sources : Android.com, Wikipedia,
developer.apple.com, www.oracle.com et
différents autres sites…
Paris, 06/02/2024
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Un peu d’histoire
6
Un peu d’histoire
6
Afin de comprendre le monde de la programmation mobile de nos
Années 90 : téléphonie cellulaire, Programmation
jours, il n'est pas inutile de nous intéresser à l’évolution de ce
secteur de l’électronique grand public apparu il y a près de 30 ans.
propriétaire environnements totalement fermés
Parallèlement apparition des PDA (Psion, Apple, Palm,
Microsoft…)
Le Web se développe aussi à cette époque et sera le
moteur d’un très grand nombre de transformations…
Fin des années 90, évolution majeure de Java :version
1.2 rebaptisée un temps version 2.0. Décliné en 3
grandes “éditions” :
JSE : programmation des “clients lourds”
JEE : programmation des serveurs d’applications
JME : informatique embarquée
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Un peu d’histoire
6
Un peu d’histoire
6
Un peu d’histoire
Pour exploiter ces PDA, les constructeurs proposent des appareils, un O.S. et des applications ; mais il 6
est également possible pour des développeurs tiers, de programmer sur ces plateformes et de proposer
Années 90 : téléphonie cellulaire, Programmation
leurs propres applications aux utilisateurs ; ou bien même des périphériques. Cependant, le
développement reste très ardu et nécessite une bonne expertise des contraintes de l’informatique
propriétaire environnements totalement fermés
embarquée (nécessitant une expertise approfondie dans la gestion mémoire, la gestion de l’énergie…).
Un peu d’histoire
6
Un peu d’histoire
6
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Un peu d’histoire
6
Un peu d’histoire
6
Un peu d’histoire
6
Un peu d’histoire
6
Le monde Java
7
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Le monde Java
Avec la version 2 de son langage 7
Java, SUN réussi autour des années
2000 le tour de force à s’imposer
dans un très grands nombre de
domaines industriels différents et en
particulier dans le monde de
l’informatique embarquée.
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Le monde Java
7
Java Virtual
Machine
JVM
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Le monde Java
7
Java
Standard
Edition
(JSE)
JVM
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Le monde Java
7
package optionnels
Java
Standard
Edition
(JSE)
JVM
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Le monde Java
7
package optionnels
Java
Entreprise Java
Edition Standard
(JEE) Edition
(JSE)
JVM
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Le monde Java
7
package optionnels
package optionnels
Java
Entreprise Java
Edition Standard
(JEE) Edition
(JSE)
JVM
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Le monde Java
7
package optionnels
package optionnels
Java
MaisEntreprise Java
la solution technique qui dans JME
Edition
le cadre de ce cours nousStandard
intéresse le
plus est l’ensemble J2ME
(JEE) Edition
(JSE)
JVM
Le monde Java
7
package optionnels
package optionnels
Java
Entreprise Java JME
Edition Standard
(JEE) Edition
(JSE) JavaCard Virtual
Machine
Le monde Java
7
package optionnels
package optionnels
Java
Entreprise Java JME
Edition Standard
(JEE) Edition
(JSE) JavaCard Virtual
Machine
terminaux mobiles.
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Le monde Java
7
package optionnels
package optionnels
Java
Entreprise Java JME
Edition Standard
(JEE) Edition
(JSE) JavaCard
API
terminaux mobiles.
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Le monde Java
7
Cartes à puce, carte SIM,
package optionnels Terminaux de paiement
package optionnels
Java
Entreprise Java JME
Edition Standard
(JEE) Edition
(JSE) JavaCard
API
terminaux mobiles.
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Le monde Java
7
package optionnels
package optionnels
Java
Entreprise Java JME
Edition Standard
(JEE) Edition
(JSE) Compact Virtual JavaCard
Machine API
La technologie
Le secondJava Micro
environnement dédiéEdition seallons
sur lequel nous compose d’une
passer rapidement
concerne les terminaux mobiles haut de gamme et les box (box télé, internet,
machine virtuelle
routeurs…). Sonetsuccès
d’un dansjeu d’APIs
les terminaux appropriées
mobiles haut de gamme est pour
resté
assez limité.
fournir des environnements d’exécution sur mesure aux
terminaux mobiles.
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Le monde Java
7
package optionnels
package optionnels
Java
Entreprise Java JME
Edition Standard Connected Device
(JEE) Edition Configuration
(JSE) JavaCard
CDC API
La technologie
Le secondJava Micro
environnement dédiéEdition seallons
sur lequel nous compose d’une
passer rapidement
concerne les terminaux mobiles haut de gamme et les box (box télé, internet,
machine virtuelle
routeurs…). Sonetsuccès
d’un dansjeu d’APIs
les terminaux appropriées
mobiles haut de gamme est pour
resté
assez limité.
fournir des environnements d’exécution sur mesure aux
terminaux mobiles.
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Le monde Java
7
package optionnels
package optionnels
Java
Entreprise Java JME
Edition Standard Fondation
(JEE) Edition Profile
(JSE) JavaCard
CDC API
La technologie
Le secondJava Micro
environnement dédiéEdition seallons
sur lequel nous compose d’une
passer rapidement
concerne les terminaux mobiles haut de gamme et les box (box télé, internet,
machine virtuelle
routeurs…). Sonetsuccès
d’un dansjeu d’APIs
les terminaux appropriées
mobiles haut de gamme est pour
resté
assez limité.
fournir des environnements d’exécution sur mesure aux
terminaux mobiles.
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Le monde Java
7
package optionnels
Principal profile
package optionnels disponible
Java Personal
Entreprise Profile
Java JME
Edition Standard Fondation
(JEE) Edition Profile
(JSE) JavaCard
CDC API
La technologie
Le secondJava Micro
environnement dédiéEdition seallons
sur lequel nous compose d’une
passer rapidement
concerne les terminaux mobiles haut de gamme et les box (box télé, internet,
machine virtuelle
routeurs…). Sonetsuccès
d’un dansjeu d’APIs
les terminaux appropriées
mobiles haut de gamme est pour
resté
assez limité.
fournir des environnements d’exécution sur mesure aux
terminaux mobiles.
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Le monde Java
7
box, routeurs, PDA
package optionnels haut de gamme
Les terminaux embarqués, ciblés par
J2ME, couvrent un spectre assez
package
large, allant, des systèmes suroptionnels
cartes
à puce, au «Home Gateway» et aux
routeurs, ainsi que les PDA haut de
Java Personal
gamme, en passant par les Profile
Entreprise
téléphones mobiles. Java JME
Edition Standard Fondation
(JEE) Edition Profile
(JSE) JavaCard
CDC API
La technologie
Le secondJava Micro
environnement dédiéEdition seallons
sur lequel nous compose d’une
passer rapidement
concerne les terminaux mobiles haut de gamme et les box (box télé, internet,
machine virtuelle
routeurs…). Sonetsuccès
d’un dansjeu d’APIs
les terminaux appropriées
mobiles haut de gamme est pour
resté
assez limité.
fournir des environnements d’exécution sur mesure aux
terminaux mobiles.
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Le monde Java
7
package optionnels
package optionnels
Java Personal
Entreprise Profile
Java JME
Edition Standard Fondation
(JEE) Edition Profile
(JSE) KiloByte Virtual JavaCard
CDC Machine API
La technologie
Enfin, la branche de JME quiJava Micro
nous intéresse Edition
le plus dans cette se compose
UE repose d’une
sur la KilobitVM,
propose un ensemble d’API dédiées aux terminaux mobiles. Avec cette initiative, SUN parvient à
et
machine virtuelle
forcer le barrage et etd’un
des constructeurs jeu d’APIs
des opérateurs de téléphonieappropriées
mobile en leur proposantpourun
environnement complet de réalisation d’applications tierces pour les terminaux mobiles ! C’est
fournir
véritablement des
cette environnements
proposition qui réussit à faire d’exécution sur
bouger les industriels et mesure
à leur aux
faire admettre
l’intérêt d’ouvrir un marché du développement d’applications sur terminaux mobiles. C’est
terminaux
pourquoi nous allonsmobiles.
lui accorder une place particulière dans cette introduction.
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Le monde Java
7
package optionnels
package optionnels
Java Personal
Entreprise Profile
Java JME
Edition Standard Fondation Connected Less
(JEE) Edition Device Configuration
Profile
(JSE) JavaCard
CDC CLDC API
La technologie
Enfin, la branche de JME quiJava Micro
nous intéresse Edition
le plus dans cette se compose
UE repose d’une
sur la KilobitVM,
propose un ensemble d’API dédiées aux terminaux mobiles. Avec cette initiative, SUN parvient à
et
machine virtuelle
forcer le barrage et etd’un
des constructeurs jeu d’APIs
des opérateurs de téléphonieappropriées
mobile en leur proposantpourun
environnement complet de réalisation d’applications tierces pour les terminaux mobiles ! C’est
fournir
véritablement des
cette environnements
proposition qui réussit à faire d’exécution sur
bouger les industriels et mesure
à leur aux
faire admettre
l’intérêt d’ouvrir un marché du développement d’applications sur terminaux mobiles. C’est
terminaux
pourquoi nous allonsmobiles.
lui accorder une place particulière dans cette introduction.
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Le monde Java
7
package optionnels
package optionnels
La technologie
Enfin, la branche de JME quiJava Micro
nous intéresse Edition
le plus dans cette se compose
UE repose d’une
sur la KilobitVM,
propose un ensemble d’API dédiées aux terminaux mobiles. Avec cette initiative, SUN parvient à
et
machine virtuelle
forcer le barrage et etd’un
des constructeurs jeu d’APIs
des opérateurs de téléphonieappropriées
mobile en leur proposantpourun
environnement complet de réalisation d’applications tierces pour les terminaux mobiles ! C’est
fournir
véritablement des
cette environnements
proposition qui réussit à faire d’exécution sur
bouger les industriels et mesure
à leur aux
faire admettre
l’intérêt d’ouvrir un marché du développement d’applications sur terminaux mobiles. C’est
terminaux
pourquoi nous allonsmobiles.
lui accorder une place particulière dans cette introduction.
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Le monde Java
7
La configuration et le
package optionnels profile les plus déployés
(téléphones, PDA…)
package optionnels
Java Personal
Entreprise Profile
Java JME
Edition Standard Fondation
(JEE) Edition MIDP
Profile
(JSE) JavaCard
CDC CLDC API
La technologie
Enfin, la branche de JME quiJava Micro
nous intéresse Edition
le plus dans cette se compose
UE repose d’une
sur la KilobitVM,
propose un ensemble d’API dédiées aux terminaux mobiles. Avec cette initiative, SUN parvient à
et
machine virtuelle
forcer le barrage et etd’un
des constructeurs jeu d’APIs
des opérateurs de téléphonieappropriées
mobile en leur proposantpourun
environnement complet de réalisation d’applications tierces pour les terminaux mobiles ! C’est
fournir
véritablement des
cette environnements
proposition qui réussit à faire d’exécution sur
bouger les industriels et mesure
à leur aux
faire admettre
l’intérêt d’ouvrir un marché du développement d’applications sur terminaux mobiles. C’est
terminaux
pourquoi nous allonsmobiles.
lui accorder une place particulière dans cette introduction.
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Le monde Java
7
package optionnels
Le monde Java
7
package optionnels
package optionnels
Java Personal
Entreprise Profile
Java JME
Edition Standard Fondation
(JEE) Edition MIDP
Profile
(JSE) JavaCard
CDC CLDC API
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Les bibliothèques de programmation JME sont constituées, à l’image, de Java par
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Version 1 :
128 Ko pour MIDP persistant
8 Ko pour stocker le data de la Midlet persistant
32 Ko pour le fonctionnement du Runtime Java (le
tas et la pile)
Version 2 :
256 Ko persistant
8 Ko app persistant
128 Ko heap
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Version 1 :
128 Ko pour MIDP persistant
8 Ko pour stocker le data de la Midlet persistant
32 Ko pour le fonctionnement du Runtime Java (le
tas et la pile)
Version 2 :
256 Ko persistant
8 Ko app persistant
128 Ko heap
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
l’iPhone d’Apple
15
Un démarrage en 2 temps :
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
l’iPhone d’Apple
15
Un démarrage en 2 temps :
juin 2007 : iPhone première génération bouleverse
les usages et les standards d’IHM. Apple promet un
kit de dev basé sur les technos Web (HTML 5)
L’iPhone fixe un nouveau standard en terme d’IHM. L’interaction tactile multipoints devient un
standard grand publique. Mais au delà des aspects purement techniques, l’iPhone bouleverse
également les usages car Apple négocie apparemment avec les opérateurs des forfais offrant un
accès «illimité» au réseau de données cellulaire. Modifiant ainsi profondément le paysage de la
téléphonie mobile. Le ConnectedLess devient de l’histoire ancienne. Cette négociation vient au
prix d’accords d’exclusivité temporaires pour les principaux opérateurs partenaires. Désormais
connectés en permanence, on assiste à une explosion du trafic web sur mobile (annonçant la mort
du très onéreux WAP — Wireless Application Protocole et adaptation mobile des technologies
Web). Pour Apple, outre la possibilité d’écouler un très grand nombre de terminaux (limitée par
les exclusivités), la connexion permanente leur permet également de mettre à disposition leur
magasin de vente de contenus en ligne (iTunes Store) profitant de son succès avec l’iPod. Côté
applications, Apple promet également un kit de développement basés sur HTML5, l’idée étant, à
ce moment là, plus proche de petites applications web plutôt que de réelles applications natives.
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
l’iPhone d’Apple
15
Un démarrage en 2 temps :
juin 2007 : iPhone première génération bouleverse
les usages et les standards d’IHM. Apple promet un
kit de dev basé sur les technos Web (HTML 5)
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
l’iPhone d’Apple
15
Un démarrage en 2 temps :
juin 2007 : iPhone première génération bouleverse
les usages et les standards d’IHM. Apple promet un
kit de dev basé sur les technos Web (HTML 5)
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
l’iPhone d’Apple
15
Un démarrage en 2 temps :
juin 2007 : iPhone première génération bouleverse
Un an après la sortie de l’iPhone, Apple change de stratégie et abandonne l’exclusivité auprès
d’opérateurs choisis (les forfaits dits illimités sont maintenant passés dans les meurs des opérateurs).
les usages et les standards d’IHM. Apple promet un
Ils sortent alors un nouvel iPhone et une nouvelle version de son OS (pour la première fois baptisé
iOS) et ajoute un magasin exclusif d’applications. Malgré des conditions réputés trop contraignantes
kit de dev basé sur les technos Web (HTML 5)
pour les développeurs le succès est énorme. Pourtant le langage de programmation (Objective-C)
bien qu’ancien (milieu des année 80) a un usage très confidentiel (essentiellement utilisé dans NeXT
juin 2008 : IOS 2, apparition de l’AppStore. Un SDK
puis dans MacOS X) et donc maîtrisé par très peu de développeurs. Apple travail énormément sur
et un modèle économique très efficace
Xcode, son atelier logiciel, pour faciliter l’adoption par les développeurs.
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
l’iPhone d’Apple
15
Un démarrage en 2 temps :
juin 2007 : iPhone première génération bouleverse
les usages et les standards d’IHM. Apple promet un
kit de dev basé sur les technos Web (HTML 5)
juin 2008 : IOS 2, apparition de l’AppStore. Un SDK
et un modèle économique très efficace
Fixe certains standards des smart-phones : Grand
écran tactile multipoints, GPS, accéléromètres,
compas, caméra,WiFi, GPRS (connectedless ?)
Transforme profondément la conception des
applications
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
iOS
16
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
iOS
16
Bien que présenté comme un développement spécifique pour les appareils mobiles, iOS trouve ses
Système d’exploitation propriétaire développé par Apple
racines dans MacOS X, le système d’exploitation qu’Apple utilise pour ses ordinateurs (stations de
travail, ordinateurs portables…). Cet OS hérite lui même de deux branches bien distinctes puisqu’il
et équipant ses smartphones (iPhones), ses tablettes
résulte de la fusion entre les développements de l’équipe NeXT et de leur OS NextStep puis OpenStep
(qui s’inscrit dans la famille des systèmes UNIX) et de MacOS (dit classique) qui équipait les
tactiles (iPads) et ses baladeurs numériques (iPods
ordinateurs de la société jusqu’à la fin des années 90. iOS propose essentiellement une réécriture
touch) et plus récemment l’Apple TV et l’AppleWatch
complète des couches hautes de l’OS et en particulier de son Interface Homme Machine.
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
iOS
16
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
iOS
16
iOS
16
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Repenser le smartphone
17
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Repenser le smartphone
17
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Repenser le smartphone
17
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Repenser le smartphone
17
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Repenser le smartphone
17
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Repenser le smartphone
17
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Repenser le smartphone
17
Forts de toute cette expérience, les ingénieurs d’Apple ont fait un choix radicale
Développer pour un système mobile :
et ont privilégié la taille de l’écran. Ils ont alors réduit le nombre de boutons, à un
La taille de l’objet -> taille de l’écran et des touches
seul bouton en façade, servant à l’interaction avec le téléphone et 2 ou 3 boutons
sur le côtés de l’appareil ayant un rôle très précis.
ou autres systèmes de saisie...
En l’absence de clavier, il fallait donner cependant à l’utilisateur un moyen
d’interagir et le choix des ingénieurs a été de se tourner vers l’utilisation d’une
interface tactile capacitive multi-points, couvrant la totalité de l’écran et
➡ écran capacitif multi-points
permettant à l’utilisateur d’interagir directement avec ses doigts et non au moyen
d’un stylet.
surface reconfigurable en
C’est la première apparition d’un écran tactile multi-points, pour le grand public.
entrée et en sortie
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Repenser le smartphone
17
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Repenser le smartphone
17
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Repenser le smartphone
17
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Repenser le smartphone
18
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Repenser le smartphone
18
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Repenser le smartphone
18
Si on observe les interfaces issues des PDA, par exemple, on s'aperçoit comme sur ces captures d’écran,
empruntées à Windows Mobile, que les concepts de l’interface graphique embarquée reprennent pratiquement
tous les cannons des interfaces bureau (la fameuse métaphore du bureau virtuel) dans des dimensions
contraintes par la surface d’affichage réduite.
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Repenser le smartphone
18
On va ainsi retrouver un environnement richement doté en outils divers. Une barre de fenêtre avec une case à
cocher pour quitter l’application. Une barre latérale escamotable pour afficher la liste des applications, les
paramètres du système, l’aide en ligne, etc.
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Repenser le smartphone
18
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Repenser le smartphone
18
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Repenser le smartphone
18
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Repenser le smartphone
18
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Repenser le smartphone
18
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Repenser le smartphone
19
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Repenser le smartphone
19
Repenser le smartphone
19
Repenser le smartphone
19
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Repenser le smartphone
20
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Repenser le smartphone
20
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Repenser le smartphone
20
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Repenser le smartphone
20
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Repenser le smartphone
20
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Repenser le smartphone
20
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Repenser le smartphone
20
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Repenser le smartphone
20
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Repenser le smartphone
20
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Repenser le smartphone
20
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Repenser le smartphone
20
➡ Métaphore mécanique
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Repenser le smartphone
20
Architecture du système
21
Core OS
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Architecture du système
21
Les couches basses de l’OS, repose sur deux noyaux d’OS qui coexistent dans le
smartphone:
un premier noyau système chargé de la gestion radio : le Baseband. Certains parlent du
Baseband comme étant un driver de périphérique mais ce n’est pas exactement cela, le
Baseband décrit une réalité plus complexe puisqu’il regroupe un OS à part entière qui
gère les circuits implantant les fonctions radio du téléphone et un driver permettant de
communiquer entre le noyau Darwin et le noyau du Baseband.
un second noyau appelé Darwin dans la terminologie MacOS, s’appuyant sur le micro
noyau XNU avec une personnalité FreeBSD fonctionne en parallèle, c’est pour cet OS
que l’on développe des applications.
Core OS
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Architecture du système
21
Parmi les services bas niveau, on retrouve un ensemble de librairies standard permettant
d’accéder au matériel mais aussi la gestion des services principaux, le runtime Objective-C
(ou Swift maintenant) etc. Ces services sont implantés nativement en C ou en Objective-C
voir en C++.
Core Services
Core OS
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Architecture du système
21
Media Framework
Les bibliothèques de programmation de ce niveau gèrent assez spécifiquement les
contenus multimédias, et les aspects liés aux animations et l’IHM, on y retrouve les
Core Services
principales technologies au cœur de MacOS plus quelques développements spécifiques.
Core OS
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Architecture du système
Ensemble de Frameworks Objective-C 21
structurant la programmation des applications
Cocoa Touch
Media Framework
Core Services
Core OS
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Architecture du système
21
Cocoa Touch
Media Framework
Core Services
Core OS
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
Android—Introduction
Sources : Cours de Jean-Michel Douin,
Android.com, Wikipedia…
Paris, 06/02/2024
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Android
23
Android
23
On s’attachera ici à regarder les grands principes mis en œuvre par Android.
Système d'exploitation Open Source (licence Apache)
ciblé principalement sur la téléphonie mobile. Par la
suite, le projet évolue vers le support des tablettes
tactiles, des bracelets connectés, des téléviseurs, des
boutons connectés… Le développement initial était
orienté informatique embarquée mobile grand public
(téléviseurs, radio-réveils, montres, auto-radios…)
Initialement développé par la société éponyme rachetée
par Google en 2005.
premier SDK publié en novembre 2007
création de OHA (Open Handset Alliance)
http://developer.android.com/index.html
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Android
23
(téléviseurs, radio-réveils,
bien deux philosophies montres,
à la base nettement opposées avec desauto-radios…)
objectifs différents qui influencent
fortement le domaine et finissent par s’influencer l’une et l’autre.
Android
23
Android
23
Android
23
http://developer.android.com/index.html
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Android
23
Android
24
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Android
24
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Android
24
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Android
24
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Android
25
Android
Pour contrer Apple, Google (qui n’est pas un constructeur de machine) ne souhaite
pas s’enferrer avec un unique constructeur. Pour rassurer les constructeurs, Google 25
cède ses prérogatives sur Android à l’OHA, où tous les constructeurs sont
La grande caractéristique d’Android repose sur une
bienvenues. Les constructeurs pourront utiliser l’extrême souplesse de l’OS pour
personnaliser leur version et ainsi se démarquer les uns des autres.
architecture très ouverte du système. Les constructeurs
n’ont pas la main mise sur l’OS (OHA) mais peuvent le
configurer entièrement à leur gré (grande adaptabilité)
Android bénéficie pleinement des avancées de
l’expérience JavaME en s’appuyant sur des concepts
assez proches, mais bien plus aboutis :
Utilisation du langage Java optimisée
(Exécutif Dalvik, nouvelles API,
ramasse-miettes, vérifications…)
Un modèle de sécurité pragmatique
Des composants applicatifs avec un
cycle de vie propre, inspiré du Web
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Android
25
Android
25
Android
25
Android
25
Les versions
26
Version du
Version Nom de code Noyau Date de sorti Détails
Linux utilisé
version développeurs, distribuée avec le SDK avant la sortie du premier téléphone
1.0 1 Nov 2007 Android
dernière version dédiée uniquement aux smartphones. Cette version est parfois utilisée
2.3 Gingerbread 2.6.35 1 Dec 2010 sur de petites tablettes.
réservé aux tablettes tactiles et aux téléviseurs connectés, cette mise à jour comprend
3.0 Honeycomb 2.6.36 1 Feb 2011 de nombreux changements dans l’interface
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Les versions
Appréhender les différentes versions du système 26
Android, va nous permettre de mieux saisir son
évolution. Comme Android, n’est pas lié à un
constructeur nous allons ici n’aborder que
Version dul’évolution du système d’exploitation. Et nous
Version Nom de code Date de sortiquelques informations par la suite
Noyau donneront Détailssur les
Linux utilisé
constructeurs version
et donc les matériels rencontrés.
développeurs, distribuée avec le SDK avant la sortie du premier téléphone
1.0 1 Nov 2007 Android
dernière version dédiée uniquement aux smartphones. Cette version est parfois utilisée
2.3 Gingerbread 2.6.35 1 Dec 2010 sur de petites tablettes.
réservé aux tablettes tactiles et aux téléviseurs connectés, cette mise à jour comprend
3.0 Honeycomb 2.6.36 1 Feb 2011 de nombreux changements dans l’interface
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Les versions
26
Nous commençons par lister les versions du système antérieur à l’arrivée des tablettes tactiles. Dans les
tableaux qui vont suivre, nous nous attarderons sur les évolutions des grandes versions du système.
Version du
Version Nom de code Noyau Date de sorti Détails
Linux utilisé
version développeurs, distribuée avec le SDK avant la sortie du premier téléphone
1.0 1 Nov 2007 Android
dernière version dédiée uniquement aux smartphones. Cette version est parfois utilisée
2.3 Gingerbread 2.6.35 1 Dec 2010 sur de petites tablettes.
réservé aux tablettes tactiles et aux téléviseurs connectés, cette mise à jour comprend
3.0 Honeycomb 2.6.36 1 Feb 2011 de nombreux changements dans l’interface
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Les versions
26
Nous distinguerons les
principales versions du système
Version du
Version Nom de code Noyau Date de sorti Détails
Linux utilisé
version développeurs, distribuée avec le SDK avant la sortie du premier téléphone
1.0 1 Nov 2007 Android
dernière version dédiée uniquement aux smartphones. Cette version est parfois utilisée
2.3 Gingerbread 2.6.35 1 Dec 2010 sur de petites tablettes.
réservé aux tablettes tactiles et aux téléviseurs connectés, cette mise à jour comprend
3.0 Honeycomb 2.6.36 1 Feb 2011 de nombreux changements dans l’interface
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Les versions
Chaque version dispose en général d’un nom de code tiré du nom d’un plat de
dessert. À partir de la version 1.5, la règle se formalise un peu plus et le nom 26
de dessert choisi doit commencer par une lettre de l’alphabet pris dans l’ordre.
Cependant, cette règle semble abandonnée avec l’arrivée d’Android 10.
Version du
Version Nom de code Noyau Date de sorti Détails
Linux utilisé
version développeurs, distribuée avec le SDK avant la sortie du premier téléphone
1.0 1 Nov 2007 Android
dernière version dédiée uniquement aux smartphones. Cette version est parfois utilisée
2.3 Gingerbread 2.6.35 1 Dec 2010 sur de petites tablettes.
réservé aux tablettes tactiles et aux téléviseurs connectés, cette mise à jour comprend
3.0 Honeycomb 2.6.36 1 Feb 2011 de nombreux changements dans l’interface
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Les versions
Le système Android, nous le verrons, s’appuie sur un noyau Linux qu’il 26
modifie pour ses besoins propres. Le noyau Linux est pris dans une certaine
version et les modifications sont appliquées à cette version.
Version du
Version Nom de code Noyau Date de sorti Détails
Linux utilisé
version développeurs, distribuée avec le SDK avant la sortie du premier téléphone
1.0 1 Nov 2007 Android
dernière version dédiée uniquement aux smartphones. Cette version est parfois utilisée
2.3 Gingerbread 2.6.35 1 Dec 2010 sur de petites tablettes.
réservé aux tablettes tactiles et aux téléviseurs connectés, cette mise à jour comprend
3.0 Honeycomb 2.6.36 1 Feb 2011 de nombreux changements dans l’interface
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Les versions
26
La première livraison d’Android à la communauté des développeurs en 2007, n’a pour but que de
permettre aux développeurs et aux constructeurs de smartphones de découvrir l’OS. Il n’y aura pas de
téléphones commercialisés avecducette version d’Android. Seuls quelques prototypes seront disponibles
Version
Version Nom de code Noyau Date de sorti Détails
afin de tester les différents aspects.
Linux utilisé
Cette première version n’a pas de nom de code.
version développeurs, distribuée avec le SDK avant la sortie du premier téléphone
1.0 1 Nov 2007 Android
dernière version dédiée uniquement aux smartphones. Cette version est parfois utilisée
2.3 Gingerbread 2.6.35 1 Dec 2010 sur de petites tablettes.
réservé aux tablettes tactiles et aux téléviseurs connectés, cette mise à jour comprend
3.0 Honeycomb 2.6.36 1 Feb 2011 de nombreux changements dans l’interface
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Les versions
26
Version du
Version Nom de code Noyau Date de sorti Détails
La première version commercialisée
Linux utilisé possède un nom de code mais la règle alphabétique
n'a pas encore été instaurée. Cette version est
version essentiellement
développeurs, déployé
distribuée avec le SDK sur
avantun téléphone
la sortie du premier téléphone
1.0 1 Nov 2007
commercial : le HTC G1 Dream entré de fait dans la légende duAndroid monde Android.
2.6.27 version incluse dans le premier téléphone, le HTC G1/Dream
1.1 Petit Four 1 Oct 2008
dernière version dédiée uniquement aux smartphones. Cette version est parfois utilisée
2.3 Gingerbread 2.6.35 1 Dec 2010 sur de petites tablettes.
réservé aux tablettes tactiles et aux téléviseurs connectés, cette mise à jour comprend
3.0 Honeycomb 2.6.36 1 Feb 2011 de nombreux changements dans l’interface
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Les versions
26
Version du
Version Nom de code Noyau Date de sorti Détails
Linux utilisé
La première véritable version commercialisée sur plusieurs modèles de téléphones issus
version développeurs, distribuée avec le SDK avant la sortie du premier téléphone
1.0 de plusieurs constructeurs est la2007
1 Nov version Cupcake (lettre C car c’est la 3ème version
Android
d’Android). À partir de cette version, constructeurs et développeurs ont une vision claire
2.6.27
1.1 de cePetit
qu’est
Four et ce que sera le 2008 Android.version incluse dans le premier téléphone, le HTC G1/Dream
monde
1 Oct
dernière version dédiée uniquement aux smartphones. Cette version est parfois utilisée
2.3 Gingerbread 2.6.35 1 Dec 2010 sur de petites tablettes.
réservé aux tablettes tactiles et aux téléviseurs connectés, cette mise à jour comprend
3.0 Honeycomb 2.6.36 1 Feb 2011 de nombreux changements dans l’interface
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Les versions
26
La version suivante (Donut) constitue une première rupture dans le monde Android car
pour la première fois la base Linux change de version. Si tout le monde salue le choix du
noyau Linux dans le monde Android, de nombreuses adaptations ont été faites sur le
noyauVersion
standarddu
et les constructeurs vont réaliser avec cette version que ce choix n’est pas
Version sans conséquence…
Nom de code Noyau Date deJe vais ouvrir ici une parenthèse technique
sorti Détails et faire appel à vos
Linux utilisédes systèmes d’exploitation, pour tenter de vous expliquer un phénomène
connaissance
version développeurs, distribuée avec le SDK avant la sortie du premier téléphone
1.0
inhérent à l’architecture
1 Nov 2007
d’Android qui se révélera assez problématique à l’avenir… Bien
Android
sur, je n’attend pas de votre part une compréhension très précise de ce qui se joue ici, mais
1.1 le but est
Petit Four de vous1 Oct
2.6.27 donner
2008 des éléments versionde compréhension
incluse d’un problème
dans le premier téléphone, important qui
le HTC G1/Dream
pèse encore fortement dans l’évolution du système Android.
nouvelles fonctionnalités et mises à jour de l’interface graphique
1.5 Cupcake 1 Apr 2009
dernière version dédiée uniquement aux smartphones. Cette version est parfois utilisée
2.3 Gingerbread 2.6.35 1 Dec 2010 sur de petites tablettes.
réservé aux tablettes tactiles et aux téléviseurs connectés, cette mise à jour comprend
3.0 Honeycomb 2.6.36 1 Feb 2011 de nombreux changements dans l’interface
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Le noyau Android est donc basé sur le noyau Linux. Par contre, les transformations qui sont faites nécessitent de
Les versions
« figer » une version du noyau sur lequel appliquer les transformations. Or le noyau Linux est ce que l’on appelle un
noyau monolithique. Cela signifie que son noyau est un programme qui va intégrer tous les services élémentaires en
un seul gros bloc exécutable. Bien sur depuis quelques années le système a été rendu modulaire et chaque service 26
peut-être isolé et regroupé dans des modules changeables dynamiquement afin de rendre sa compilation moins
lourde et adaptable. Il n’en reste pas moins un noyau monolithique qui impose donc une gestion unique de l’espace
mémoire du noyau et donc entre autre, des adresses figées pour tous les services. Donc d’une version à une autre il
faudra recompiler tous les modules avec le noyau pour tenir compte des modifications qui apparaitront forcément
Version du
entre différentes
Version versions
Nom de code du noyau.
Noyau Date de sorti Détails
De plus, si le noyau Linux est un noyau
Linux utilisé OpenSource, depuis quelques années, afin de s’adapter à certaines
préoccupations industrielles, la licence du code source version développeurs,
a été modifiéedistribuée avec le SDK
pour passer d’uneavantlicence
la sortie duGPL
premier téléphone
(dite
1.0 1 Nov 2007 Android
contaminante et obligeant tout code source du noyau à être ouvert —c’est-à-dire à être publique, lisible et
modifiable)1.1à une licence
Petit Four
LGPL 2.6.27
(Lesser GPL) moins contraignante
1 Oct 2008
et autorisant
version incluse dans le premierdes modules
téléphone, le HTCnon OpenSource.
G1/Dream
Cette modification qui peut paraître anecdotique n’est pourtant pas sans conséquence… Les industriels ont souhaité
nouvelles fonctionnalités et mises à jour de l’interface graphique
ce changement
1.5 afinCupcake
de pouvoir apporter des 1 Aprfonctionnalités
2009 au noyau sans pour autant être obligés de publier les
sources de1.6leurs développements.
Donut 1 Sep 2009 nouvelles fonctionnalités et mises à jour de l’interface graphique
dernière version dédiée uniquement aux smartphones. Cette version est parfois utilisée
2.3 Gingerbread 2.6.35 1 Dec 2010 sur de petites tablettes.
réservé aux tablettes tactiles et aux téléviseurs connectés, cette mise à jour comprend
3.0 Honeycomb 2.6.36 1 Feb 2011 de nombreux changements dans l’interface
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Les versions
Grâce à la notion de module dans le noyau Linux, il devient possible de distribuer des drivers binaires, sans pour
autant en distribuer le source. Hors dans le processus de conception d’un téléphone, le constructeur va passer des
contrats avec des sociétés tierces proposant des « circuits électroniques » dont les drivers (les modules ajoutés à 26
Linux pour piloter ces circuits) doivent par contrat rester non publique pour ne pas violer les secrets industriels
associés aux dits circuits… Dans ces conditions le constructeur de téléphone va produire une version du système
Android grâce à un équipe de développeurs payée pour faire ce travail et qui va compiler une version du noyau
Linux avec les modules binaires spécifiques aux circuits en question.
Version du
Mais laVersion
nature monolithique
Nom de code (ilNoyau
faut recopier tout le noyau et ses modules) duDétails
Date de sorti noyau Linux va obliger à refaire le
travail à chaque nouvelle version du noyau.
Linux utilisé
version développeurs, distribuée avec le SDK avant la sortie du premier téléphone
Or la durée
1.0
de vie commerciale d’un téléphone
1 Nov 2007
est généralement de 6 mois à un an (période durant laquelle un
Android
téléphone est activement vendu). Après, sur un marché très fortement concurrentiel comme le marché Android,
toute mobilisation
1.1
d’une équipe2.6.27
Petit Four
de développeurs
1 Oct 2008
pour développer pour
version incluse dansun téléphone
le premier quilene
téléphone, HTC rapporte
G1/Dream plus rien est un
coût pour le constructeur qu’il va rechigner à faire.
nouvelles fonctionnalités et mises à jour de l’interface graphique
C’est la principale
1.5 raison pour laquelle 1ilApr
Cupcake est2009
difficile de faire migrer un téléphone Android vers des versions plus
récentes 1.6
de l’OS. Donut 1 Sep 2009 nouvelles fonctionnalités et mises à jour de l’interface graphique
dernière version dédiée uniquement aux smartphones. Cette version est parfois utilisée
2.3 Gingerbread 2.6.35 1 Dec 2010 sur de petites tablettes.
réservé aux tablettes tactiles et aux téléviseurs connectés, cette mise à jour comprend
3.0 Honeycomb 2.6.36 1 Feb 2011 de nombreux changements dans l’interface
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Les versions
26
Version du
Version Nom de code Noyau Date de sorti Détails
Linux utilisé
version développeurs, distribuée avec le SDK avant la sortie du premier téléphone
1.0 1 Nov 2007 Android
dernière version dédiée uniquement aux smartphones. Cette version est parfois utilisée
2.3 Gingerbread 2.6.35 1 Dec 2010 sur de petites tablettes.
réservé aux tablettes tactiles et aux téléviseurs connectés, cette mise à jour comprend
3.0 Honeycomb 2.6.36 1 Feb 2011 de nombreux changements dans l’interface
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Les versions
26
La version 2.2 d’Android est une première tentative d’améliorer les performances générales du
système Android en apportant unVersion « compilateur
du à la volée » (Just In Time Compiler —JIT) ) à la
Version Nom de code Noyau Date de sorti Détails
machine virtuelle Dalvik. Conscients de
Linux utilisé
l’énorme retard en termes de performances du système
Android vis à vis de son concurrent direct (iOS), les ingénieurs Android
version développeurs, cherchent
distribuée uneavant
avec le SDK direction
la sortie du premier téléphone
d’amélioration
1.0 qui permette d’envisager de rattraper
1 Nov 2007 le gap important observé par les utilisateurs.
Android
L’utilisation d’un JIT est une arme bien éprouvée dans le monde des PC de bureau. Cette
2.6.27 version incluse dans le premier téléphone, le HTC G1/Dream
technologie1.1est très Petit Four pour calmer les
attendue 1 Oct 2008
impatiences. Si un gain de performances est bien au
rendez-vous, 1.5
les projections
Cupcake
quand aux possibles1 Apr 2009
gains encore disponibles
nouvelles suretcette
fonctionnalités mises àbase
jour de l’interface graphique
technologique ne sont pas très encourageantes. Il va s’en suivre une assez longue période de
nouvelles fonctionnalités et mises à jour de l’interface graphique
réflexion et 1.6
donc de flouDonutquand au futur d’Android.
1 Sep 2009 On oscille entre la promotion du NDK (Native
Development 2.0
Kit) quiEclair
propose la possibilité
2.6.29
de développer des
1 Oct 2009
applications
nouvelles natives
fonctionnalités et mises(dans
à jour deun langage
l’interface graphique
autre que Java mais avec des contraintes lourdes pour dialoguer avec le reste du système qui lui est
correction du trop grand nombre de bugs de la 2.0
écrit en Java…)
2.1 ou des solutions visant à améliorer
Eclair 1 Jan 2010 les performances de la Dalvik VM…
vitesse améliorée (JIT), nouvelles fonctionnalités et mises à jour de l’interface
2.2 Froyo 2.6.32 1 May 2010 graphique
dernière version dédiée uniquement aux smartphones. Cette version est parfois utilisée
2.3 Gingerbread 2.6.35 1 Dec 2010 sur de petites tablettes.
réservé aux tablettes tactiles et aux téléviseurs connectés, cette mise à jour comprend
3.0 Honeycomb 2.6.36 1 Feb 2011 de nombreux changements dans l’interface
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Les versions
26
Version du
Version Nom de code Noyau Date de sorti Détails
Linux utilisé
version développeurs, distribuée avec le SDK avant la sortie du premier téléphone
1.0 1 Nov 2007 Android
réservé aux tablettes tactiles et aux téléviseurs connectés, cette mise à jour comprend
3.0 Honeycomb 2.6.36 1 Feb 2011 de nombreux changements dans l’interface
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Les versions
26
Version du
Version Nom de code Noyau Date de sorti Détails
Linux utilisé
version développeurs, distribuée avec le SDK avant la sortie du premier téléphone
1.0 1 Nov 2007 Android
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Les versions
26
Version du
Version Nom de code Noyau Date de sorti Détails
Linux utilisé
version développeurs, distribuée avec le SDK avant la sortie du premier téléphone
1.0 1 Nov 2007 Android
dernière version dédiée uniquement aux smartphones. Cette version est parfois utilisée
2.3 Gingerbread 2.6.35 1 Dec 2010 sur de petites tablettes.
réservé aux tablettes tactiles et aux téléviseurs connectés, cette mise à jour comprend
3.0 Honeycomb 2.6.36 1 Feb 2011 de nombreux changements dans l’interface
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Les versions
27
Version du
Version Nom de code Noyau Date de sorti Détails
Linux utilisé
cette nouvelle version, fortement inspirée d'Honeycomb, unifiée pour smartphones,
Ice Cream
4.0 3.0.1 1 Oct 2011 tablettes et Google TV apporte de nombreux changements
Sandwich
Modification du design UI, support zRAM (économie mémoire), API d’impression sans fil,
Amélioration du support NFC.Amélioration WebViews (Chrome) nouvelles APIs SMS,
31/10/2013 nouvelles APIs transitions (UI), framework gestion stockage des données. Amélioration
4.4 KitKat 3.4-3.10
gestion des capteurs et de l’audio, enregistrement vidéo de l’écran, amélioration des
support d’accessibilité et surtout ART !
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Les versions
27
À partir de la version 4, Android opère une première refonte de son modèle graphique et
propose une première version unifiant la version Android pour téléphone mobile
(Gingerbread) qui a continué à être
Version du mise à jour et la version 3 spécialement dédiée au
tablettes…
Version Nom de code Noyau Date de sorti Détails
Linux utilisé
cette nouvelle version, fortement inspirée d'Honeycomb, unifiée pour smartphones,
Ice Cream
4.0 3.0.1 1 Oct 2011 tablettes et Google TV apporte de nombreux changements
Sandwich
Modification du design UI, support zRAM (économie mémoire), API d’impression sans fil,
Amélioration du support NFC.Amélioration WebViews (Chrome) nouvelles APIs SMS,
31/10/2013 nouvelles APIs transitions (UI), framework gestion stockage des données. Amélioration
4.4 KitKat 3.4-3.10
gestion des capteurs et de l’audio, enregistrement vidéo de l’écran, amélioration des
support d’accessibilité et surtout ART !
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Les versions
27
Version du
Version Nom de code Noyau Date de sorti Détails
Linux utilisé
Les versions suivantes
Ice Cream
unifient le système et préparent la version, fortement inspirée d'Honeycomb, unifiée pour smartphones,
cette nouvelle
4.0
transformation 3.0.1
du modèle d’exécution1 Oct 2011
d’Android. tablettes et Google TV apporte de nombreux changements
Sandwich
Modification du design UI, support zRAM (économie mémoire), API d’impression sans fil,
Amélioration du support NFC.Amélioration WebViews (Chrome) nouvelles APIs SMS,
31/10/2013 nouvelles APIs transitions (UI), framework gestion stockage des données. Amélioration
4.4 KitKat 3.4-3.10
gestion des capteurs et de l’audio, enregistrement vidéo de l’écran, amélioration des
support d’accessibilité et surtout ART !
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Les versions
27
Version du
Version Nom de code Noyau Date de sorti Détails
Linux utilisé
cette nouvelle version, fortement inspirée d'Honeycomb, unifiée pour smartphones,
Ice Cream
4.0 3.0.1 1 Oct 2011 tablettes et Google TV apporte de nombreux changements
Sandwich
Une fonctionnalité passé quasi inaperçue sont les AppOps : une
ajoute undu
refonte système
modèle de notification améliorée,
de sécurité Google Now,
Android un système
qui ne concurrent
fera qu’un de
passage
4.1 Jelly Bean 3.0.31 1 Jul 2012 Siri et le Project Butter qui augmente la fluidité d'Android;
éphémère en guise de ballon sonde. La fonctionnalité reviendra bien
plus tard,
nouvelle plus de
interface mure dans
l'appareil Android
photo 6. L’idée
et l'introduction est de fournir
de Photosphère permettantun
unecontrôle
par l’utilisateur
prise des photos à 360°destypeautorisations
Street View, d'unqu’il
systèmeconcède à une
multi-compte application
uniquement sur à
4.2 Jelly Bean 1 Nov 2012 tablette, de Type Gesture permettant d'écrire avec le clavier rien qu'en glissant le doigt
tout moment et non plus simplement au moment du choix d’installer
et d'améliorations de Google Now…
ou non l’application sur le terminal. Les ingénieurs ont bien
3.0-3.1 conscience
Améliorationdes limites
du support de leurs
Bluetooth, OpenGLchoix initiaux
ES 3.0, en laPhotoSpère,
Amélioration matière…
Autocomplétion dans l’application de numérotation téléphonique, Amélioration de la
gestion des fichiers modification du modèle de sécurité («App Ops» non officiel),
4.3 Jelly Bean 23 Jul 2013
gestion de la vidéo 4K, «geofencing» modification du comportement WiFi.
Amélioration de l’internationalisation et modification de la gestion DRM
Modification du design UI, support zRAM (économie mémoire), API d’impression sans fil,
Amélioration du support NFC.Amélioration WebViews (Chrome) nouvelles APIs SMS,
31/10/2013 nouvelles APIs transitions (UI), framework gestion stockage des données. Amélioration
4.4 KitKat 3.4-3.10
gestion des capteurs et de l’audio, enregistrement vidéo de l’écran, amélioration des
support d’accessibilité et surtout ART !
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Les versions
27
Version du
Version Nom de code Noyau Date de sorti Détails
Linux utilisé
cette nouvelle version, fortement inspirée d'Honeycomb, unifiée pour smartphones,
Ice Cream
4.0 3.0.1 1 Oct 2011 tablettes et Google TV apporte de nombreux changements
Sandwich
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Les versions
27
Version du
Version Nom de code Noyau Date de sorti Détails
Linux utilisé
cette nouvelle version, fortement inspirée d'Honeycomb, unifiée pour smartphones,
Ice Cream
4.0 3.0.1 1 Oct 2011 tablettes et Google TV apporte de nombreux changements
Sandwich
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Les versions
27
Version du
Version Nom de code Noyau Date de sorti Détails
Linux utilisé
cette nouvelle version, fortement inspirée d'Honeycomb, unifiée pour smartphones,
Ice Cream
4.0 3.0.1 1 Oct 2011 tablettes et Google TV apporte de nombreux changements
Sandwich
Modification du design UI, support zRAM (économie mémoire), API d’impression sans fil,
Amélioration du support NFC.Amélioration WebViews (Chrome) nouvelles APIs SMS,
31/10/2013 nouvelles APIs transitions (UI), framework gestion stockage des données. Amélioration
4.4 KitKat 3.4-3.10
gestion des capteurs et de l’audio, enregistrement vidéo de l’écran, amélioration des
support d’accessibilité et surtout ART !
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Les versions
28
Version du
Version Nom de code Noyau Date de sorti Détails
Linux utilisé
IHM : Material Design, Machine d’exécution ART, support du 64 bits, Projet Volta,
3/11/2014 Économiseur de batterie, OpenGL ES 3.1, Android Extension Pack, Heads-Up
5.0 Lollipop
notification.
3.4-3.10
21 avril Support multi SIM, Version haute définition (audio) de la téléphonie
5.1.1 Lollipop
2015
Amélioration de l’autonomie, Google on Tap, Personalisation System UI Tuner,
6.0 Marshmallow 3.10-3.18 5 oct. 2015 Nouveau système de gestion des autorisations, gestion des capteurs d’empruntes
digitales, Android Pay…
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Les versions
28
Version du
Version Nom de code Noyau Date de sorti Détails
Linux utilisé
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Les versions
28
Outre le changement de l’ART, Lollipop propose la
refonte
Version du de conception d’interface graphique : material
Version Nom de code Noyau Date de sorti Détails
design
Linux utilisé pose de nouvelles lignes de conduites et une
nouvelle philosophie de conception revenant sur
IHM : Material Design, Machine d’exécution ART, support du 64 bits, Projet Volta,
certains principes
3/11/2014 introduits par
Économiseur de le version
batterie, OpenGL 4
ES(plus
3.1, Android Extension Pack, Heads-Up
5.0 Lollipop
d’utilisation systématique des Fragments…) notification.
3.4-3.10
21 avril Support multi SIM, Version haute définition (audio) de la téléphonie
5.1.1 Lollipop
2015
Amélioration de l’autonomie, Google on Tap, Personalisation System UI Tuner,
6.0 Marshmallow 3.10-3.18 5 oct. 2015 Nouveau système de gestion des autorisations, gestion des capteurs d’empruntes
digitales, Android Pay…
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Les versions
28
Version du
Version Nom de code Noyau Date de sorti Détails
Linux utilisé
IHM : Material Design, Machine d’exécution ART, support du 64 bits, Projet Volta,
3/11/2014 Économiseur de batterie, OpenGL ES 3.1, Android Extension Pack, Heads-Up
5.0 Lollipop
notification.
3.4-3.10
21 avril Support multi SIM, Version haute définition (audio) de la téléphonie
5.1.1 Lollipop Officialisation du retour de l’évolution des AppOps
2015
Amélioration de l’autonomie, Google on Tap, Personalisation System UI Tuner,
6.0 Marshmallow 3.10-3.18 5 oct. 2015 Nouveau système de gestion des autorisations, gestion des capteurs d’empruntes
digitales, Android Pay…
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Les versions
28
Version du
Version Nom de code Noyau Date de sorti Détails
Linux utilisé
IHM : Material Design, Machine d’exécution ART, support du 64 bits, Projet Volta,
3/11/2014 Économiseur de batterie, OpenGL ES 3.1, Android Extension Pack, Heads-Up
5.0 Lollipop
notification.
3.4-3.10
21 avril Support multi SIM, Version haute définition (audio) de la téléphonie
5.1.1 Lollipop
2015
Amélioration de l’autonomie, Google on Tap, Personalisation System UI Tuner,
6.0 Marshmallow 3.10-3.18 5 oct. 2015 Nouveau système de gestion des autorisations, gestion des capteurs d’empruntes
digitales, Android Pay…
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Les versions
28
Version du
Version Nom de code Noyau Date de sorti Détails
Linux utilisé
IHM : Material Design, Machine d’exécution ART, support du 64 bits, Projet Volta,
3/11/2014 Économiseur de batterie, OpenGL ES 3.1, Android Extension Pack, Heads-Up
5.0 Lollipop
notification.
3.4-3.10
21 avril Support multi SIM, Version haute définition (audio) de la téléphonie
5.1.1 Lollipop
2015
Amélioration de l’autonomie, Google on Tap, Personalisation System UI Tuner,
6.0 Marshmallow 3.10-3.18 5 oct. 2015 Nouveau système de gestion des autorisations, gestion des capteurs d’empruntes
digitales, Android Pay…
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Les versions
29
Version du
Version Nom de code Noyau Date de sorti Détails
Linux utilisé
IHM : capture des vidéos écran, support MPEG-H/HEIF. Support écran pliables,
nouvelles fonctionnalités des notifications ; OS : évolution du système de droits et
d’autorisations. Raffinement des droits d’accès au FileSystem; ; API : Intégration de
11.0.x Red Velvet Cake Linux 5.x 08/11/2020
TensorFlow et API MachineLearning.
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
7 6514 14
8
Situation reconstituée 9
13 13
12
11
à partir des chiffres de 10
9
Android Studio 10
12 8
7
6
5
11 <5
http://developer.android.com/about/dashboards/index.html
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Portions of this page are modifications based on work created and shared by the Android Open Source
Project and used according to terms described in the Creative Commons 2.5 Attribution License.
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Portions of this page are modifications based on work created and shared by the Android Open Source
Project and used according to terms described in the Creative Commons 2.5 Attribution License.
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Contrairement à une idée très souvent répandue, Android n’est pas un système Linux (au
sens GNU-Linux). Android s’appuie sur le noyau du système d’exploitation Linux mais dans
une version modifiée spécifiquement et en utilisant certains de ses services systèmes de
façon détournée. Cette spécificité rend souvent complexe les mises à jour du noyau vis à vis
de la branche principale de développement du noyau Linux. En particulier, Android ajoute
une couche d’abstraction du matériel à prendre en compte dans le développement des
drivers et un mécanisme de communication inter-processus particuliers : les Binders. Ce
mécanismeNoyau modifié écrit
IPC (Inter-Process essentiellement
Communication) endeCBeOS
est issu et enunassembleur :
système d’exploitation
très moderne du ajout
milieud’une couche
des années d’abstraction
90 qui a profondément des périphériques
transformé la façon de construire
un système d’exploitation
ajout d’undemécanisme
nos jours. End’IPC
particulier, les Binders
spécifique : lesproposent
Bindersde donner une
structuration inspirée par la programmation objet aux échanges entre processus. Ce nouveau
service joue un rôle central dans l’architecture Android.
Portions of this page are modifications based on work created and shared by the Android Open Source
Project and used according to terms described in the Creative Commons 2.5 Attribution License.
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Portions of this page are modifications based on work created and shared by the Android Open Source
Project and used according to terms described in the Creative Commons 2.5 Attribution License.
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Portions of this page are modifications based on work created and shared by the Android Open Source
Project and used according to terms described in the Creative Commons 2.5 Attribution License.
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
C’est surtout la couche du noyau Linux modifié qui est le plus responsable de ce
phénomène. Les développements spécifiques pour Android sur le noyau Linux nécessitent
des réadaptations et il n’est souvent pas possible de réutiliser tels quels les anciens
développements. De plus, bien qu’OpenSource le noyau Linux tolère l’insertion de drivers
(logiciels pilotant les périphériques) non OpenSource. Sachant que dans l’industrie mobile
les drivers sont souvent propriétaires cela complique beaucoup le travail des développeurs
et la communauté OpenSource ne peut pas y faire grand chose. On peut parfois créer des
couches d’adaptation des anciens drivers avec la nouvelle version de Linux, mais cela
résulte souvent dans des systèmes plus ou moins instables (cf. toutes les ROMs alternatives
pour téléphone que l’ont peut trouver dans les différentes communautés d’utilisateurs).
Portions of this page are modifications based on work created and shared by the Android Open Source
Project and used according to terms described in the Creative Commons 2.5 Attribution License.
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Portions of this page are modifications based on work created and shared by the Android Open Source
Project and used according to terms described in the Creative Commons 2.5 Attribution License.
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Portions of this page are modifications based on work created and shared by the Android Open Source
Project and used according to terms described in the Creative Commons 2.5 Attribution License.
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Portions of this page are modifications based on work created and shared by the Android Open Source
Project and used according to terms described in the Creative Commons 2.5 Attribution License.
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Portions of this page are modifications based on work created and shared by the Android Open Source
Project and used according to terms described in the Creative Commons 2.5 Attribution License.
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Portions of this page are modifications based on work created and shared by the Android Open Source
Project and used according to terms described in the Creative Commons 2.5 Attribution License.
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Enfin, au dessus de tout cela se trouvent les applications Android. Un certain nombre
d’applications standard ayant un rôle très précis (Gestionnaire de contacts, navigateur Web,
gestionnaire de SMS/MMS Application Home — écran d’accueil du téléphone —…). Ces
applications sont développées comme n’importe quelle application Android et donc il est
possible de leur substituer des alternatives très facilement. C’est là une des grandes forces
du système Android et de son formidable caractère personnalisable.
ART
Portions of this page are modifications based on work created and shared by the Android Open Source
Project and used according to terms described in the Creative Commons 2.5 Attribution License.
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
ART
Portions of this page are modifications based on work created and shared by the Android Open Source
Project and used according to terms described in the Creative Commons 2.5 Attribution License.
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Portions of this page are modifications based on work created and shared by the Android Open Source
Project and used according to terms described in the Creative Commons 2.5 Attribution License.
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Portions of this page are modifications based on work created and shared by the Android Open Source
Project and used according to terms described in the Creative Commons 2.5 Attribution License.
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
ART
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
ART
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
ART
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Dalvik VM
35
Dalvik VM
Voici donc l’ancienne chaîne de compilation pour la Davlik VM. 35
Dalvik VM
35
Dalvik VM
35
Dalvik VM
35
Dalvik VM
35
Dalvik VM
35
Dalvik VM
35
Dalvik VM
35
Dalvik VM
35
ART
36
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
ART
Cependant, depuis quelques années les ingénieurs Android sont 36
bien obligés de reconnaitre que cette solution reste lente vis à vis de
Le processus de compilation est
leur concurrent direct Apple dont l’objective-C produit du code
exécutable natif. Différentes solutions ont été envisagées allant
inchangé jusqu’à l’abandon pur et simple de Java mais pas forcément de sa
VM, ou le passage au Native Development Kit qui n’a pourtant
jamais eu un énorme succès.
Le bytecode Dalvik est chargé
Cependant depuis la version 4.4 d’Android les ingénieurs ont
avancé sur une nouvelle technologie : l’ART (Android RunTime).
sur le terminal et compilé àOptionnel sous Android KitKat, il devient le moteur d’exécution par
l’installation «AOT» défaut avec Lollipop.
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
ART
36
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
ART
36
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
ART
36
d’exécution
exécutable .dex au moment de (nouveau GC, sur le
l’installation de l’application
terminal.
gestion des traces et des code natif
exceptions…)
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
ART
36
ART
36
Depuis la version
Comme 3
Swift, Kotlin d’Android Studio,
va reprendre un grand nombre de il devient
concepts
issus des langages fonctionnels comme Ocaml ou Haskell et va
possibleproposer
d’utiliser Kotlin
une analyse statique (àcomme langage
la compilation) de types plusalternatif à
robuste que celle de Java, en intégrant des mécanismes d’inférence
Java. de types (les types peuvent être découverts par le compilateur,
produisant du code générique automatiquement) et la gestion des
types options (alternatives concises et statiquement vérifiée aux
Ne casse pas le processus de compilation Android…
exceptions). Ces nombreux emprunts aux langages fonctionnels font
Kotlin compile vers la JVM et est interopérable avec
que Kotlin n’est plus comme Java un langage uniquement orienté
objets. C’est un langage où coexistent plusieurs paradigmes dont
Java « l’orienté objet » et le « fonctionnel ».
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
méthode. Kotlin
Dans cet étend
exemple, On ajoute àcela
la classeàString
la surcharge d’opérateurs
de Java une méthode
md_boldify(), qui ajoutera une annotation Markdown (un langage de balise
et ajoute la gestion
simplifié) pour mettre dudes
texte notations infixes.
entre caractères gars. L’extension est alors portée
par tous les objets String de cette application.
Les coroutines, les threads et une gestion particulière de
la concurrence du parallélisme.
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
celui
>>> operator de
fun Java dispose
String.unaryMinus()
... val tmp = this.toSet()
:de fonctionnalités
String { nouvelles
comme lessb.insert(0,ch)
méthodes} d’extension
... val sb = StringBuffer()
... for(ch in tmp){
... return sb.toString()
... }
Une forme de pattern matching (déstructuration) des
>>> -"hello"
res42: kotlin.String = oleh
objets appliquées à certaines structures du langages
On définit ici un opérateur préfixé - qui permet d’inverser les caractères d’une chaîne.
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Applications Android
39
Applications Android
39
Nous avons vu qu’une application était un programme exécuté dans un processus UNIX
Une application Android se concrétise sous la forme
particulier implantant un environnement d’exécution Android. Nous allons maintenant nous
intéresser plus précisément à la structure d’un exécutable Android. Comment les fichiers
d’un fichier archive dont le nom possède
ressources de l’application sont installés sur le systèmes, etc.
l’extension .apk. Cette archive contient :
un fichier décrivant le contenu de l’archive, la nature
de l’application et ses points d’entrée : le fichier
AndroidManifest.xml (en version binaire)
le code exécutable (binaire) contenu dans
l’unique fichier classes.dex. Le code exécutable
peut éventuellement être pré-lié pour améliorer
les performances : .odex
des fichiers de ressources contenant des données
manipulées par l’application : images, sons,
descriptions d’interface graphique, polices de
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Applications Android
39
Applications Android
39
Applications Android
39
Applications Android
39
Applications Android
40
Applications Android
40
Applications Android
40
Applications Android
40
Applications Android
40
Modèle de sécurité
41
Modèle de sécurité
Nous allons maintenant nous attarder un peu sur le modèle de sécurité associé aux 41
applications Android.
S’appuie sur des services dédiés du noyau Linux :
en particulier le User Sandboxing. Protection des
accès aux fichiers et aux ressources (un utilisateur
UNIX par application).
chaque application s’exécute dans un processus
Linux (isolation entre les processus en mémoire
centrale)
chaque application s’exécute sous le contrôle du
SecurityManager de la machine virtuelle Java qui
applique la politique de sécurité spécifique
d’Android : Avant d’autoriser un accès à des
ressources critiques, des autorisations doivent avoir
été validées par l’utilisateur.
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Modèle de sécurité
Au cœur de la sécurité Android, nous avons commencé à le voir on trouve un certain
nombre de mécanismes d’isolation issus des systèmes UNIX. Il s’agit donc de mécanismes 41
éprouvés par plusieurs décennies d’utilisation (donc réputés fiables).
S’appuie sur des services dédiés du noyau Linux :
en particulier le User Sandboxing. Protection des
accès aux fichiers et aux ressources (un utilisateur
UNIX par application).
chaque application s’exécute dans un processus
Linux (isolation entre les processus en mémoire
centrale)
chaque application s’exécute sous le contrôle du
SecurityManager de la machine virtuelle Java qui
applique la politique de sécurité spécifique
d’Android : Avant d’autoriser un accès à des
ressources critiques, des autorisations doivent avoir
été validées par l’utilisateur.
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Modèle de sécurité
41
Modèle de sécurité
41
centrale)
chaque application s’exécute sous le contrôle du
SecurityManager de la machine virtuelle Java qui
applique la politique de sécurité spécifique
d’Android : Avant d’autoriser un accès à des
ressources critiques, des autorisations doivent avoir
été validées par l’utilisateur.
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Modèle de sécurité
41
Modèle de sécurité
41
Modèle de sécurité
42
Modèle de sécurité
42
Modèle de sécurité
42
Modèle de sécurité
42
Modèle de sécurité
42
Modèle de sécurité
43
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Modèle de sécurité
43
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Modèle de sécurité
43
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Modèle de sécurité
43
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Modèle de sécurité
43
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Modèle de sécurité
43
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Applications Android
44
Applications Android
44
Nous allons maintenant regarder la structure d’une application en termes de programmation.
Android propose un modèle à composants, offrant
Nous allons regarder les mécanismes d’interopérabilité proposés par Android à travers le
modèle de composants très riche sur lequel se fonde Android. Ce modèle est un des atouts
plusieurs points d’entrées dans l’application. On
majeurs par rapport à ses concurrents.
Applications Android
44
distingue 4 grands
navigation entre pages Web. types de composants :
Applications Android
44
Applications Android
44
Applications Android
44
tables
l’utilisation de ceàbus
destination d’autres
va bien au delà d’une applications.
écoute des messages système. Il permet
également d’échanger des messages entre applications par exemple.
Les traitements d’événements diffusés
(BroadcastReciever) qui permettent la
communication IPC par abonnement à un bus de
diffusion de messages.
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Applications Android
44
Les Activités
45
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Les Activités
45
Les activités sont un des composants les plus connus et les plus mis en avant dans la
Composant central de l’interface utilisateur d’une
programmation Android car ils portent la gestion de l’interaction avec l’utilisateur. Il est
donc difficile d’envisager la construction d’une application sans envisager de créer au moins
application (une application peut afficher plusieurs
une activité (même si cela est théoriquement possible).
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Les Activités
45
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Les Activités
45
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Les Activités
45
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Les Activités
45
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 27/05/2020
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 27/05/2020
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 27/05/2020
si
le processus
Le système Android, vérifie si il
existe existe déjà un processus pour
l’application qui implante
l’activité que l’on demande à
lancer
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 27/05/2020
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 27/05/2020
non
si Création du
le processus processus par
existe
clone Zigote
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 27/05/2020
non
si Création du
le processus processus par
existe
clone Zigote
oui Si le processus existe déjà le
système agit directement dans
UIThread le processus par
l’intermédiaire du UIThread.
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 27/05/2020
non
si Création du
le processus processus par
existe
clone Zigote
oui
UIThread
instanciation
Activité
L’Activity Manager d’Android (le
par l’Activity
composant système gérant les
Manager
activités) va alors «prendre la main»
dans le UIThread, afin de démarrer
l’activité demandée. En particulier,
c’est lui qui crée une nouvelle
instance de la classe que le
développeur à créée pour implanter
son activité. Ce n’est pas le
développeur qui crée cette instance.
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 27/05/2020
non
si Création du
le processus processus par
existe
clone Zigote
oui
UIThread
Démarrage Activité
instanciation
Activité
Une fois l’instance créée, on rentre
par l’Activity dans la phase de démarrage de
Manager l’activité. Cette phase comporte
plusieurs étapes durant lesquelles le
code du système et le code du
développeur de l’application vont
interagir
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 27/05/2020
non
si Création du
le processus processus par
existe
clone Zigote
oui
UIThread
Démarrage Activité
instanciation
Activité
par l’Activity onCreate() Le système va alors exécuter un ensemble
Manager d’opérations d’initialisation. Une première étape
importante pour le développeur de l’application
est lorsque le système appelle la méthode
onCreate() de son activité. L’objectif principal
de cette méthode est de permettre au développeur
d’allouer les objets qui implantent l’IHM de
l’application et requérir un certain nombre de
ressources pour l’application.
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 27/05/2020
non
si Création du
le processus processus par
existe
clone Zigote
oui
UIThread
Démarrage Activité
instanciation Lorsque la méthode onCreate() termine (et du
Activité point de vue d’Android il est indispensable
par l’Activity onCreate() qu’elle termine !), le système poursuit ses
Manager opérations d’initialisation et au bout d’un moment
appelle une seconde méthode du cycle de vie de
onStart() l’activité : la méthode onStart(). Cette méthode
permet au développeur de poursuivre
l’initialisation de l’activité, en allouant des
ressources moins pérennes. Une fois encore le
code de la méthode onStart() doit terminer
avant un délai assez court, pour ne pas bloquer
tout le processus !
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 27/05/2020
non
si Création du
le processus processus par
existe
clone Zigote
oui
UIThread
Démarrage Activité
instanciation Lorsque la méthode onStart() termine le système
Activité reprend la main et poursuit ses opérations d’initialisation.
par l’Activity onCreate() Au bout d’un moment, il arrive à la fin de ces opérations
Manager de démarrage de l’activité. C’est à ce moment que le
système appelle une autre méthode du cycle de vie de
onStart() l’activité : la méthode onResume(). L’appel de cette
méthode marque la fin de la phase d’initialisation de
l’activité. Elle permet au développeur de terminer ses
propres opérations d’initialisation. En particulier, c’est
onResume() dans cette méthode que doivent être généralement
démarrées les tâches rendant l’interface graphique
dynamique (animations, mise à jour de valeurs …)
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 27/05/2020
onStart()
onResume()
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 27/05/2020
non
si Création du Activité au premier
le processus processus par plan
existe
clone Zigote
oui
UIThread
Démarrage Activité
instanciation
Activité
par l’Activity onCreate()
Manager
onStart()
onResume()
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 27/05/2020
onPause()
non
si Création du Activité au premier
le processus processus par plan
existe
clone Zigote Au bout d’un moment l’activité peut
oui être amenée à suspendre ses
opérations. Elle quitte le premier plan
UIThread et perd l’attention de l’utilisateur
(réception d’un appel téléphonique,
Démarrage Activité l’utilisateur navigue entre les activités,
instanciation l’utilisateur met son appareil en
Activité veuille, le système s’éteint faute de
par l’Activity onCreate() batterie…). Quelque soit la raison
Manager précise de cette perte d’attention, le
système appèle alors la méthode
onStart() onPause(), afin de permettre au
développeur de l’application de
suspendre des calculs associés à
l’interface graphique (animations,
onResume()
mises à jour de valeurs). On réalise ici
en général les opérations inverses de
celles réalisées dans onResume().
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 27/05/2020
onPause()
non
si Création du Activité au premier
le processus processus par plan
existe Activité
clone Zigote partiellement masquée
oui
onResume()
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 27/05/2020
onPause()
non
si Création du Activité au premier
le processus processus par plan
existe Activité
clone Zigote partiellement masquée
oui
UIThread
Démarrage Activité
instanciation Si l’activité revient au
Activité premier plan, on retourne
par l’Activity onCreate() directement à la méthode
Manager onResume(). Par exemple si
on ferme la boîte de dialogue
onStart() masquant l’activité ou que
l’on refuse un coups de
téléphone entrant.
onResume()
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 27/05/2020
onPause()
non
si Création du Activité au premier
le processus processus par plan
existe Activité
clone Zigote partiellement masquée
oui
Si l’activité se retrouve
UIThread complètement masquée et qu’une onStop()
autre activité la remplace au
Démarrage Activité premier plan, le système appelle
instanciation la méthode onStop() qui permet
Activité au développeur de l’application
par l’Activity onCreate() de gérer la libération de certaines
Manager
onStart()
onResume()
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 27/05/2020
onPause()
non
si Création du Activité au premier
le processus processus par plan
existe Activité
clone Zigote partiellement masquée
oui
UIThread onStop()
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 27/05/2020
onPause()
non
si Création du Activité au premier
le processus processus par plan
existe Activité
clone Zigote partiellement masquée
oui
UIThread onStop()
Démarrage Activité
instanciation Après l’exécution de la méthode onRestart() Activité
le suspendue
Activité système reprend la main pour effectuer ses propresnon visible
par l’Activity onCreate()
opérations d’initialisation et on retourne dans le
Manager cycle de démarrage de l’activité. Mais le point
d’entrée ne sera pas la méthode onCreate() mais la
onStart() méthode onStart() qui réalisera des opérations
onRestart()
symétriques inverses de celles réalisées au cours du
onStop()…
onResume() Le cycle reprenant, lorsque le onResume() sera
appelé, les opérations du onPause() seront
annulées et l’activité sera de nouveau opérationnel
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 27/05/2020
onPause()
non
si Création du Activité au premier
le processus processus par plan
existe Activité
clone Zigote partiellement masquée
oui
UIThread onStop()
Démarrage Activité
instanciation Si l’activité termine (quelque soit la raison Activité suspendue
Activité terminaison explicite de la part de l’utilisateur par non visible
par l’Activity appuie sur le bouton back lorsque l’activité était en
onCreate()
Manager cours d’exécution, terminaison par un programme
qui appelle de la méthode finish() de l’activité,
terminaison à l’initiative du système par exemple
onStart() onRestart()
en cas de rotation de l’affichage…) le système va onDestroy()
arrêter l’activité et appelle la méthode
onDestroy() pour permettre au développeur de
onResume()
libérer les dernières ressources allouées à la Activité arrêtée
création de l’activité.
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 27/05/2020
onPause()
non
si Création du Activité au premier
le processus processus par plan
existe Activité
clone Zigote partiellement masquée
oui
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 27/05/2020
UIThread onStop()
Démarrage Activité
instanciation Activité suspendue
Activité non visible
par l’Activity onCreate()
Manager
onStart() onRestart()
onDestroy()
onResume()
Activité arrêtée
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 27/05/2020
onStart() onRestart()
onDestroy()
onResume()
Activité arrêtée
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 27/05/2020
Comme l’arrêt de l’activité peut se solder par un arrêt du processus de l’application Android par le onPause()
système et
non
ainsisilibérer toute la mémoire réservée
Création du par le processus, il faut
Activité un mécanisme de sauvegarde permettant aux
au premier
données de «survivre» processus
le processus à une destruction
par du processus. Pour ce faire, le système Android fournit en paramètre un
plan
existe Activité
objet ressource de typeclone
Bundle . Un
Zigote Bundle Android est une structure de donnée de type dictionnaire (tableau
partiellement masquée
associatif), dans laquelle le développeur de l’application pourra stocker ses données sous forme de couples (clé,
oui
valeur). Une propriété très importante du Bundle est que ce dernier implémente le mécanisme Parcelable
d’Android
UIThread qui est un mécanisme de sérialisation des objets spécifique au système Android et qui agit en synergie
onStop()
avec le mécanisme de communication interprocessus des Binders intégrer au noyau Android. La sérialisation est
un format d’encodage particulier des objets (pour ceux connaissent on peut voir cela un peu comme le mécanisme
Démarrage Activité
JSON des
instanciation applications Web). Il permet de transformer un objet en mémoire sous la forme d’un flux binaire.
Activité Les
suspendue
binders
Activitévont alors permettre au système Android d’extraire le Bundle après exécution de la méthode non visible
onSaveInstanceState()
par l’Activity du processus afin de le conserver à l’abri d’une éventuelle destruction du processus. Le
onCreate()
Manager
onStart() onRestart()
onDestroy()
onResume()
Activité arrêtée
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 27/05/2020
onPause()
non
si Création du Activité au premier
le processus processus par plan
existe Activité
clone Zigote partiellement masquée
oui
UIThread onStop()
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 27/05/2020
onPause()
non
si Création du Activité au premier
le processus processus par plan
existe Activité
clone Zigote partiellement masquée
oui
UIThread onStop()
Démarrage Activité
instanciation Activité suspendue
Activité non visible
par l’Activity onCreate()
Une autre méthode permet également de récupérer les
Manager informations stockée dans le Bundle après le démarrage
de l’activité par onStart(). Il s’agit d’une méthode
onStart()
symétrique à onSaveInstanceState() : la méthode
onRestart()
onRestoreInstanceState(). Il est souvent intéressant onDestroy()
onRestoreInstanceState()
d’implanter cette méthode qui est généralement appelée
entre l’appel de onStart() et onResume() afin de
onResume()
pouvoir restaurer certains éléments qui ne seraient pas Activité arrêtée
encore recréés au moment du onStart().
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 27/05/2020
onPause()
non
si Création du Activité au premier
le processus processus par plan
existe Activité
clone Zigote partiellement masquée
oui
UIThread onStop()
Démarrage Activité
instanciation Activité suspendue
Activité non visible
par l’Activity onCreate()
Manager
onStart() onRestart()
onDestroy()
onRestoreInstanceState()
onResume()
Activité arrêtée
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Interface Graphique
48
Interface Graphique
Sans entrer dans les détails de conception et de mise en œuvre de
48
l’interface graphique d’une application Android, nous allons présenter
Framework : une structure hiérarchique faite de vues et
maintenant les principaux outils proposés par ce système pour cette
de conteneurs, mettant en œuvre le canevas de
tâche.
Interface Graphique
48
Interface Graphique
48
Interface Graphique
48
Interface Graphique
48
Interface Graphique
48
Interface Graphique
48
Interface Graphique
48
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
flags, extras...
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Les Intents
54
Les Intents
54
Les Intents
54
Les Intents
54
Les Intents
54
Les Intents
54
Les Intents
54
Les Intents
55
Les Intents
55
De fait pour fonctionner ce mécanisme nécessite qu’un composant
Déclaration type des « Intents-Filters »
applicatif qui peut-être éligible pour traiter une intention donnée se
déclare comme tel dans le fichier AndroidManifest.xml de
l’application. C’est le rôle des intent-filters.
<intent-filter>
<action android:name="com.example.project.SHOW_CURRENT" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="video/mpeg" android:scheme="http" …/>
…
</intent-filter>
Les Intents
55
Les Intents
55
Les Intents
55
Le tâches Android
56
[
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Le tâches Android
56
[
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Le tâches Android
56
[
L’activité Home demande un
startActivity() sur l’activité
MAIN/LAUNCHER de
l’application Contacts
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Le tâches Android
Au cours d’une tâche, chaque fois que l’utilisateur appuie sur le bouton home, la tâche courante est
interrompue et l’utilisateur peut démarrer une nouvelle tâche à partir d’une autre application. Il peut
revenir à la tâche qu’il a abandonné grâce au gestionnaire de tâches (qui est un nouveau bouton système 56
Android apparu avec la version 3 du système) soit en redémarrant l’application qui lui a donné naissance.
Une tâche Android est une pile d’activités qui démarre
Depuis la version 3, le système Android a essayé d’aligner la notion de tâche sur la notion d’application
« à la »iOS. Cela donne un repère clair. Cette évolution s’est accentuée avec la version 5.
avec le lancement d’une application et est gérée par une
Chaque fois qu’il revient dans une tâche il repart de l’activité à son sommet (la dernière activée).
Différentes instances d’une même activité (le même composant) peuvent-être utilisées dans la même
navigation linéaire entre les activités qui la constituent.
tâche ou même des tâches différentes. Grace au gestionnaire de tâches, il est possible par un glissé du
doigt de supprimer une tâche.
Lorsqu’elle est activée, une tâche est par défaut toujours
réactivée par le sommet de la pile d’activités (sauf
paramètres contraire dans un intent)
[
L’activité Home demande un
startActivity() sur l’activité
MAIN/LAUNCHER de
l’application Contacts
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Le tâches Android
56
[ Pour faciliter le suivi de l’évolution de l’empilement des activités dans une même tâche, nous afficheront
ici l’écran des tâches Android obtenu en appuyant sur le bouton du gestionnaire de tâches ajouté avec la
version 3 d’Android.
L’activité Home demande un
startActivity() sur l’activité
MAIN/LAUNCHER de
l’application Contacts
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Le tâches Android
56
[
Dans iOS, une application correspond à un processus UNIX lancé
depuis le lanceur d’application et tout ce fait dans ce processus. La
tâche et l’application coïncident.
Dans Android, si une tâche est lancée, au lancement d’une activité
dans le lanceur d’applications, l’empilement successif des activités
fait que l’on peut passer d’un processus UNIX à l’autre.
L’activité Home demande un Pour se rapprocher de la notion d’applications, Android limite les
startActivity() sur l’activité tâches à un point d’entrée par application. Même si l’application
MAIN/LAUNCHER de dispose de plusieurs point d’entrée, une seule tâche en cours est
l’application Contacts attachée à cette application.
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Le tâches Android
56
[
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Le tâches Android
56
[
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Le tâches Android
56
[
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Le tâches Android
56
[
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Le tâches Android
56
[
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Le tâches Android
56
[
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Le tâches Android
56
[
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Le tâches Android
56
[
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Le tâches Android
56
[
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Le tâches Android
56
[
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Le tâches Android
56
[
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Le tâches Android
56
[
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Le tâches Android
56
[
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Le tâches Android
56
[
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Le tâches Android
56
[
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Le tâches Android
56
[
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Le tâches Android
56
[
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Le tâches Android
56
[
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Services
57
Services
Le deuxième grand type de composants 57
applicatifs Android est la notion de service.
Ne comporte pas d’interface graphique et prend en
charge les traitements en tâche de fond. Attention reste
géré par le UIThread !
Perdure même si l’application n’est pas au premier plan
Peut recevoir des commandes à traiter via des Intents
Peut exposer une interface regroupant des méthodes
utilisables «à distance» (par d’autres processus).
déclaration par Android Interface Definition Language
(AIDL). Communication à travers les Binders. La liaison
au service est réalisée en utilisant un Intent. Une fois la
liaison effectuée on appelle directement les méthodes de
l’interface du service.
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
Services
57
Services
57
Services
57
NeIldémarrés
comporte
existe pas
2 types de services d’interface
dans graphique
le système Android, et prend en
les services dits
et les services liés. Chacun présentant une gestion de cycle de vie
charge les traitements
un peu différente. enreçoivent
Les services démarrés tâchedesdeintentions
fond.envoyées
Attention reste
par un appel système Android startService(). Les services liés nécessitent
géré parde le
une sorte UIThread
connexion ! l’appel système boundService().
préalable avec
Lorsque la connexion a lieu, l’appelant reçoit une référence sur l’objet
représentant le service et peut alors directement appeler des méthodes sur
Perdure même si l’application n’est pas au premier plan
cet objet, même si celui-ci ne s’exécute pas dans la même application.
Services
57
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024
This document is shared by Jean-Ferdy Susini according to terms described in the Creative Commons Attribution-ShareAlike 3.0 Unported License.
J.-F. Susini 06/02/2024