Chapitre 1 android

Institut Supérieur des Etudes Technologiques de Nabeul
Institut Supérieur des Etudes Technologiques de NabeulMaître Technologue en Informatique Industrielle à Institut Supérieur des Etudes Technologiques de Nabeul
IINTRODUCTIONNTRODUCTION ÀÀ LALA
PLATEFORMEPLATEFORME AANDROIDNDROID
© Imene Sghaier
2016-2017
ISET NabeulISET Nabeul
SEM2 & Mastère SEM1SEM2 & Mastère SEM1
2
 Objectifs spécifiques
 S’introduire à la plateforme Android, l’architecture du
système, ses versions, sa pile développement et le
processus de développement sous Android
 Eléments de contenu
•Applications mobiles et système Android
•Présentation du système Android
•Versions
•Architecture du système Android
•Eléments d’une application android
•La pile des outils de développement pour Android
•Processus de compilation
•Déploiement d’une application
 Volume Horaire :
 Cours : 1.5 heure
OBJECTIFS ET ÉLÉMENTS DE CONTENU
Imene Sghaier-Développement Mobile Avancé
APPLICATIONS MOBILES ET SYSTÈME ANDROID
 Une application mobile est un programme
téléchargeable de façon gratuite ou payante et
exécutable à partir du système d’exploitation
d’un dispositif mobile (PDA, smartphone,
tablette…).
 Elles sont pour la plupart distribuées depuis
des plateformes de téléchargement (parfois elles-
mêmes contrôlées par les fabricants de
smartphones) telles que l'App Store (plateforme
d'Apple), le Google Play (plateforme
de Google / Android), ou encore le Windows
Phone Store(plateforme de Microsoft).
3
Imene Sghaier-Développement d’Applications Mobiles
APPLICATIONS MOBILES ET SYSTÈME ANDROID
 Android est un système d'exploitation temps réel,
mobile et open source conçue spécifiquement et
pas exclusivement pour des systèmes embarqués
légers comme smartphones, PDA, tablettes…
 Android désigne à la fois:
 Un environnement de développement (API)
 Un environnement d’exécution (le plus souvent)
4
Imene Sghaier-Développement d’Applications Mobiles
APPLICATIONS MOBILES ET SYSTÈME ANDROID
 Android s'appuie sur deux piliers:
 le langage Java
 le SDK qui permet d'avoir un environnement de
développement facilitant la tâche du développeur
 Le kit de développement donne accès à des
exemples, de la documentation mais surtout à
l'API de programmation du système et à un
émulateur pour tester ses applications.
 Stratégiquement, Google utilise la licence Apache
pour Android ce qui permet la redistribution du
code sous forme libre ou non et d'en faire un
usage commercial.
5
Imene Sghaier-Développement d’Applications Mobiles
PLAN DU CHAPITRE
 Applications mobiles et système Android
 VersionsVersions
 Architecture du système Android
 Eléments d’une application android
 La pile des outils de développement pour
Android
 Processus de compilation
 Déploiement d’une application
6
Imene Sghaier-Développement d’Applications Mobiles
VERSIONS
Version Nom Date
1.0 Version connue des
développeurs : sortie
avant le premier
téléphone Android
fin 2007
1.1 "Petit Four" début 2009
1.5 "Cupcake" (Petit Gâteau) avril 2009
1.6 "Donut" (Beignet) septembre 2009
2.1 "Eclair" janvier 2010
2.2 "FroYo" (Frozen Yogourt :
Yaourt glacé)
mai 2010
2.3 "Gingerbread" (Pain
d'épice)
décembre 2010
3.0 "Honeycomb" (Rayon de
miel)
janvier 2011 7
Imene Sghaier-Développement d’Applications Mobiles
VERSIONS
4.0 "Ice Cream Sandwich"
(Sandwich à la crème
glacée), version unifiée
pour Smartphone,
Tablette et GoogleTV,
combinant Gingerbread
et
Honeycomb
octobre 2011
4.1 "Jelly Bean" (API 16) juillet 2012
4.2.2 API 17 février 2013
4.3 API 18 juillet 2013
4.4 "KitKat" (API 19) octobre 2013
5.0 "Lollipop" (API 21) octobre 2014
5.1.1 "Lollipop" (API 22) mars 2015
6.0 "Marshmallow" (API 23) octobre 2015
7.0 " Nougat" (API 24) Mars 2016
8.0 "Oreo" (API 25) Aout 2017
8
Imene Sghaier-Développement d’Applications Mobiles
PLAN DU CHAPITRE
 Applications mobiles et système Android
 Versions
 Architecture du système AndroidArchitecture du système Android
 Eléments d’une application android
 La pile des outils de développement pour
Android
 Processus de compilation
 Déploiement d’une application
9
Imene Sghaier-Développement d’Applications Mobiles
ARCHITECTURE DU SYSTÈME ANDROID
10
Imene Sghaier-Développement d’Applications Mobiles
http://code.google.com/android/what-is-android.html
ARCHITECTURE DU SYSTÈME ANDROID
 La couche "Applications" (navigateur, gestion des
contacts, application de téléphonie...)
 La couche "Application Framework" : cette couche
permet au programmeur de construire de nouvelles
applications. Cette couche fournit la gestion :
 des Views (IHM)
 des ContentProviders (fournisseurs de contenus) qui
permettent l'accessibillité aux données des autres
applications (ex : les contacts) et donc le partages de
données
 des ressources qui sont les fichiers non codes comme les
images, les écrans (Resource Manager)
 des notifications (affichage d'alerte dans la barre de titre)
 des Activities pour l'enchaînement des écrans 11
Imene Sghaier-Développement d’Applications Mobiles
ARCHITECTURE DU SYSTÈME ANDROID
 La couche "Libraries" (bibliothèques) qui représente la
couche logicielle basse pour utiliser
 les formats multimédia : images, audio et vidéo enregistrement
comme rendu
 les dessins 2D et 3D, bitmap et vectoriel,
 une base de données SQL (SQLite)
 SSL
 L'environnement d'exécution Android Runtime (à partir
de lollilop) qui compile le bytecode vers le natif
 Toute application est exécutée dans son propre processus,
dans sa propre Dalvik Virtual Machine (avant lollilop),
donc plusieurs instances de la DVM peuvent être lancées
efficacement.
 Le noyau Linux sur lequel la Dalvik virtual machine
s'appuie pour gérer le multithreading, la mémoire. Le
noyau Linux apporte les services de sécurité, la gestion
des processus, etc.
 une couche d'abstraction pour l'accès aux capteurs (HAL) 12
Imene Sghaier-Développement d’Applications Mobiles
ARCHITECTURE DU SYSTÈME ANDROID
 Dalvik est le nom de la machine virtuelle open-
source utilisée sur les systèmes Android. Cette
machine virtuelle exécute des fichiers .dex (dalvic
executable), plus ramassés que les .class classiques.
Ce format évite par exemple la duplication des
String constantes.
 La machine virtuelle utilise elle-même moins
d'espace mémoire et l'adressage des constantes se
fait par un pointeur de 32 bits.
 Dalvik n'est pas compatible avec une JVM du type
Java SE ou même Java ME. La librairie d'accès est
donc redéfinie entièrement par Google.
 A partir de Lollipop (5.0), Android dispose d'ART
comme JVM pour Android. Elle compile
l'application au moment du déploiement (Ahead-of-
time compilation: compilation à l’installation).
13
Imene Sghaier-Développement d’Applications Mobiles
PLAN DU CHAPITRE
 Applications mobiles et système Android
 Versions
 Architecture du système Android
 Eléments d’une applicationEléments d’une application androidandroid
 La pile des outils de développement pour
Android
 Processus de compilation
 Déploiement d’une application
14
Imene Sghaier-Développement d’Applications Mobiles
ELÉMENTS D’UNE APPLICATION ANDROID
Une application Android peut être composée des éléments suivants:
 Activités (android.app.Activity): il s'agit d'une partie de
l'application présentant une vue à l'utilisateur
 Services (android.app.Service): il s'agit d'une activité tâche de
fond sans vue associée
 Fournisseurs de contenus (android.content.ContentProvider)
permettent le partage d'informations au sein ou entre applications
 Widgets (android.appwidget.*): une vue accrochée au bureau
d'Android
 Intents (android.content.Intent): permet d'envoyer un message
pour un composant externe sans le nommer explicitement
 Récepteurs d'Intents (android.content.BroadcastReceiver):
permet de déclarer être capable de répondre à des Intents
 Notifications (android.app.Notifications): permet de notifier
l'utilisateur de la survenue d'événements
15
Imene Sghaier-Développement d’Applications Mobiles
ELÉMENTS D’UNE APPLICATION ANDROID:
ACTIVITY, SERVICE
 Une activité (activity) gère l'affichage et les interactions
utilisateurs sur un écran . Les activités sont indépendantes
les unes des autres.
 Une activité est une sous classe de android.app.Activity
 Une application peut avoir plusieurs activités pouvant
lancer cette application
 Un service (service) est un composant qui est exécuté en
tâche de fond. Il ne fournit pas d'interface graphique.
 Un service est une sous classe de android.app.Service
 Exemple de service : jouer de la musique, rechercher des
données sur le réseau.
16
Imene Sghaier-Développement d’Applications Mobiles
ELÉMENTS D’UNE APPLICATION ANDROID:
CONTENTPROVIDER
 Un fournisseur de contenu (content provider) gère
des données partageables. C'est le seul moyen
d'accéder à des données partagées entre applications
 Exemple de fournisseur de contenu : les
informations de contacts de l'utilisateur du
smartphone
 On peut créer un fournisseur de contenus pour des
données qu'on veut partager
 On récupère un fournisseur de contenu pour des
données partageables en demandant le
ContentResolver du système et en donnant ensuite,
dans les requêtes, l'URI des données (A voir dans le
TP)
17
Imene Sghaier-Développement d’Applications Mobiles
ELÉMENTS D’UNE APPLICATION ANDROID:
BROADCASTRECEIVER
 Un récepteur d'informations est une sous classe de
android.content.BroadcastReceiver
 Un récepteur d'informations est un composant à l'écoute
d'informations qui lui sont destinées. Un tel récepteur
indique le type d'informations qui l'intéressent et pour
lesquelles il se mettra en écoute.
 Exemple : appel téléphonique entrant, réception d'un SMS,
réseau Wi-Fi connecté, informations diffusées par des
applications.
 Les informations peuvent être envoyées par le système
(réception de la liste des réseaux Wi-Fi, ...)
 L'application réceptrice d'informations (c'est à dire
possédant un récepteur d'informations) n'a pas besoin
d'être lancée. Si elle ne l'est pas, Android la démarre
automatiquement
 Un récepteur n'est pas une IHM mais peut en lancer une
(éventuellement petite dans la barre de notification), ou
peut lancer un service traitant l'arrivée de l'information 18
Imene Sghaier-Développement d’Applications Mobiles
ELÉMENTS D’UNE APPLICATION ANDROID: INTENT
 Un intent est une sous classe de android.content.Intent
 Un événement (intent) est une "intention" à faire
quelque chose contenant des informations destinées à
un composant Android. C'est un message asynchrone
 Les activités, services et récepteurs d'informations
utilisent les Intents pour communiquer entre eux
 Un Intent ne contient pas obligatoirement explicitement
le composant qui va le gérer. Dans ce cas c'est un Intent
implicite. Si l'Intent indique explicitement la classe du
composant qui va le gérer c'est un Intent explicite
19
Imene Sghaier-Développement d’Applications Mobiles
ELÉMENTS D’UNE APPLICATION ANDROID: LE FICHIER
MANIFEST
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="andro.jf"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon"
android:label="@string/app_name">
<activity android:name=".Main"
android:label="@string/app_name">
<<intentintent--filterfilter>>
<action<action android:nameandroid:name="="android.intent.action.MAINandroid.intent.action.MAIN" />" />
<<categorycategory android:nameandroid:name="="android.intent.category.LAUNCHERandroid.intent.category.LAUNCHER" />" />
</</intentintent--filterfilter>>
</activity>
<service>...</service>
<receiver>...</receiver>
<provider>...</provider>
</application>
</manifest>
20
Imene Sghaier-Développement d’Applications Mobiles
ELÉMENTS D’UNE APPLICATION ANDROID : LE FICHIER
MANIFEST
 Toute application doit contenir le fichier XML
AndroidManifest.xml
 Ce fichier déclare, entre autre, les différents composants
de l'application
 Parmi les composants, seuls les récepteurs d'évènements
(BroadcastReceiver) ne sont pas forcément dans le
manifeste.
 Les autres (Activity, Service, ContentProvider) doivent
l'être sinon ils ne seront jamais lancés quel que soit le code
écrit !!
 Ce fichier contient aussi :
 les permissions nécessaires à l'application (accès internet, accès
en lecture/écriture aux données partagées)
 le numéro minimum de la version API utilisée, des logiciels et
matériels utilisés par l'application (caméra) et des bibliothèques
supplémentaires à l'API de base (Google maps library) 21
Imene Sghaier-Développement d’Applications Mobiles
 Les ressources sont des éléments constituant
l’application autre que le code source (chaines ce
caractères constantes, fichiers image, vidéo, du texte...)
 Les ressources sont disposées dans des sous-répertoires
de « res » en fonction de leur type
 Ces ressources sont référencées dans la classe
spéciale R.
 Cela veut dire que cette fameuse classe définira des
constantes de type int permettant l’identification de
chacune de ces ressources. Ces ID sont utiles à de
nombreux endroits dans l’API Android.
22
ELÉMENTS D’UNE APPLICATION ANDROID : LES
RESSOURCES
Imene Sghaier-Développement d’Applications Mobiles
 Les ressources d’une application Android sont
utilisées dans le code au travers de la classe
statique R.
 Toutes les ressources sont accessibles au travers
de R, dès qu'elles sont déclarées dans le fichier XML
ou que le fichier associé est déposé dans le
répertoire adéquat (images, chaine de caractères...)
 Les ressources sont utilisées de la manière
suivante :
android.R.type_ressource.nom_ressource
23
ELÉMENTS D’UNE APPLICATION ANDROID : LES
RESSOURCES
Imene Sghaier-Développement d’Applications Mobiles
 Les chaines constantes de l'application sont situées
dans res/values/strings.xml.
 Exemple
24
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello!</string>
<string ame="app_name">AndroFirstApp</string>
</resources>
 La récupération de la chaine se fait avec le code :
Resources res = getResources();
String hw = res.getString(R.string.hello);
ELÉMENTS D’UNE APPLICATION ANDROID : LES
RESSOURCES
Imene Sghaier-Développement d’Applications Mobiles
 Une méthode spécifique pour les objets graphiques
permet de les récupérer à partir de leur id, ce qui
permet d'agir sur ces instances même si elles ont été
créées via leur définition XML
TextView texte = (TextView)findViewById(R.id.le_texte);
texte.setText("Here we go !");
25
ELÉMENTS D’UNE APPLICATION ANDROID : LES
RESSOURCES
Imene Sghaier-Développement d’Applications Mobiles
 D'autres ressources sont spécifiables
dans res :
 les menus ;
 les images (R.drawable) ;
 des dimensions (R.dimen) ;
 des couleurs (R.color).
26
ELÉMENTS D’UNE APPLICATION ANDROID : LES
RESSOURCES
Imene Sghaier-Développement d’Applications Mobiles
PLAN DU CHAPITRE
 Applications mobiles et système Android
 Versions
 Architecture du système Android
 Eléments d’une application android
 La pile des outils de développement pourLa pile des outils de développement pour
AndroidAndroid
 Processus de compilation
 Déploiement d’une application
27
Imene Sghaier-Développement d’Applications Mobiles
LA PILE DES OUTILS DE DÉVELOPPEMENT POUR ANDROID
28
Imene Sghaier-Développement d’Applications Mobiles
JDK Java Standard Edition
SDK Android
AVD Manager
Android Studio
LA PILE DES OUTILS DE DÉVELOPPEMENT POUR ANDROID
 L'Android SDK comporte:
 Une API android (différents composants Activity,
Service, ContentProvider, BroadCastReceiver…)
 Un environnement de développement
 Une machine virtuelle java adaptée à Android
(ART)
 Un environnement debuggueur DDMS (Dalvic
Debug Monitor Service)
 Des emulateurs virtuels (Android Virtual Device)
 L'Android SDK compile l'ensemble du
développement (code Java, données, fichier de
ressources, fichier XML) dans un paquetage
Android : un .apk
29
Imene Sghaier-Développement d’Applications Mobiles
PLAN DU CHAPITRE
 Applications mobiles et système Android
 Versions
 Architecture du système Android
 Eléments d’une application android
 La pile des outils de développement pour Android
 Processus de compilationProcessus de compilation
 Déploiement d’une application
30
Imene Sghaier-Développement d’Applications Mobiles
PROCESSUS DE COMPILATION
 Les fichiers .class contiennent du java byte-code, mais
les dispositifs Android n’utilisent pas ce format de byte-
code.
 Android possède son propre format de byte-code
nommé Dalvik.
 Dalvik byte-codes comme le JVM byte-codes sont des
codes machine pour des processeurs théoriques.
 Le processus de compilation convertit les fichiers
.class et les librairies .jar en un seul fichier de classes
d’extension .dex qui contient le Dalvik byte-codes.
31
Imene Sghaier-Développement d’Applications Mobiles
PLAN DU CHAPITRE
 Applications mobiles et système Android
 Versions
 Architecture du système Android
 Eléments d’une application android
 La pile des outils de développement pour Android
 Processus de compilation
 Déploiement d’une applicationDéploiement d’une application
32
Imene Sghaier-Développement d’Applications Mobiles
DÉPLOIEMENT D’UNE APPLICATION ANDROID
33
Imene Sghaier-Développement d’Applications Mobiles
1 sur 33

Recommandé

chapitre-1-introduction-plateforme-android (2).pdf par
chapitre-1-introduction-plateforme-android (2).pdfchapitre-1-introduction-plateforme-android (2).pdf
chapitre-1-introduction-plateforme-android (2).pdfolfaharrabi2
14 vues28 diapositives
Chapitre 1-introduction-plateforme-android par
Chapitre 1-introduction-plateforme-androidChapitre 1-introduction-plateforme-android
Chapitre 1-introduction-plateforme-androidSalah Gharbi
98 vues28 diapositives
01 programmation mobile - android - (introduction) par
01 programmation mobile - android - (introduction)01 programmation mobile - android - (introduction)
01 programmation mobile - android - (introduction)TECOS
1.6K vues42 diapositives
Ch1. Développement mobile par
Ch1. Développement mobileCh1. Développement mobile
Ch1. Développement mobileHaifa Chorfi
160 vues26 diapositives
Projet de fin d étude (1) par
Projet de fin d étude (1)Projet de fin d étude (1)
Projet de fin d étude (1)Sanaa Guissar
3K vues37 diapositives

Contenu connexe

Similaire à Chapitre 1 android

Android Studio, premier contact par
Android Studio, premier contactAndroid Studio, premier contact
Android Studio, premier contactJasmine Conseil
560 vues28 diapositives
Intro Android par
Intro AndroidIntro Android
Intro AndroidPatrick Bashizi
680 vues33 diapositives
Introduction_Android_-_Complet.pdf par
Introduction_Android_-_Complet.pdfIntroduction_Android_-_Complet.pdf
Introduction_Android_-_Complet.pdfmed_univ78
8 vues140 diapositives
Cours android par
Cours androidCours android
Cours androidAd Hafsa
800 vues107 diapositives
1-android.pdf par
1-android.pdf1-android.pdf
1-android.pdfFethiBenYahia1
27 vues48 diapositives
Hackathon Android Abidjan par
Hackathon Android  AbidjanHackathon Android  Abidjan
Hackathon Android AbidjanBacely YoroBi
657 vues45 diapositives

Similaire à Chapitre 1 android(20)

Introduction_Android_-_Complet.pdf par med_univ78
Introduction_Android_-_Complet.pdfIntroduction_Android_-_Complet.pdf
Introduction_Android_-_Complet.pdf
med_univ788 vues
Cours android par Ad Hafsa
Cours androidCours android
Cours android
Ad Hafsa800 vues
cours Android.pptx par YaminaGh1
cours Android.pptxcours Android.pptx
cours Android.pptx
YaminaGh1126 vues
Android workshop - Bootcamp du Mauriapp Challenge 2016 par Hadina RIMTIC
Android workshop - Bootcamp du Mauriapp Challenge 2016Android workshop - Bootcamp du Mauriapp Challenge 2016
Android workshop - Bootcamp du Mauriapp Challenge 2016
Hadina RIMTIC 563 vues
Ch2. Développement mobile par Haifa Chorfi
Ch2. Développement mobileCh2. Développement mobile
Ch2. Développement mobile
Haifa Chorfi146 vues
Développement Android par Franck SIMON
Développement AndroidDéveloppement Android
Développement Android
Franck SIMON27.7K vues
Android pour les debutants par Amira Hakim
Android pour les debutantsAndroid pour les debutants
Android pour les debutants
Amira Hakim739 vues

Plus de Institut Supérieur des Etudes Technologiques de Nabeul

Plus de Institut Supérieur des Etudes Technologiques de Nabeul(20)

Dernier

Caprinov2023 2023, une amélioration de la situation, des prix de vente à prés... par
Caprinov2023 2023, une amélioration de la situation, des prix de vente à prés...Caprinov2023 2023, une amélioration de la situation, des prix de vente à prés...
Caprinov2023 2023, une amélioration de la situation, des prix de vente à prés...Institut de l'Elevage - Idele
14 vues32 diapositives
Caprinov2023 Distribution quotidienne des fourrages quelles stratégies pour ... par
Caprinov2023 Distribution quotidienne des fourrages  quelles stratégies pour ...Caprinov2023 Distribution quotidienne des fourrages  quelles stratégies pour ...
Caprinov2023 Distribution quotidienne des fourrages quelles stratégies pour ...Institut de l'Elevage - Idele
13 vues25 diapositives
Caprinov2023 Réussite à l’IA des chèvres : effet de la diversité des trajecto... par
Caprinov2023 Réussite à l’IA des chèvres : effet de la diversité des trajecto...Caprinov2023 Réussite à l’IA des chèvres : effet de la diversité des trajecto...
Caprinov2023 Réussite à l’IA des chèvres : effet de la diversité des trajecto...Institut de l'Elevage - Idele
18 vues20 diapositives
Caprinov2023 Quand l’eau ne coule plus de source. Une démarche pour sécuriser... par
Caprinov2023 Quand l’eau ne coule plus de source. Une démarche pour sécuriser...Caprinov2023 Quand l’eau ne coule plus de source. Une démarche pour sécuriser...
Caprinov2023 Quand l’eau ne coule plus de source. Une démarche pour sécuriser...Institut de l'Elevage - Idele
31 vues22 diapositives
GAV2023 - Entre inflation et décapitalisation, une conjoncture mouvementée par
GAV2023 - Entre inflation et décapitalisation, une conjoncture mouvementéeGAV2023 - Entre inflation et décapitalisation, une conjoncture mouvementée
GAV2023 - Entre inflation et décapitalisation, une conjoncture mouvementéeInstitut de l'Elevage - Idele
7 vues20 diapositives
Caprinov2023 Adaptation des systèmes caprins de NA et PdL au changement clima... par
Caprinov2023 Adaptation des systèmes caprins de NA et PdL au changement clima...Caprinov2023 Adaptation des systèmes caprins de NA et PdL au changement clima...
Caprinov2023 Adaptation des systèmes caprins de NA et PdL au changement clima...Institut de l'Elevage - Idele
29 vues27 diapositives

Dernier(16)

INTRODUCTION A LA FINANCE DE MARCHE.pdf par badrfathallah2
INTRODUCTION A LA FINANCE DE MARCHE.pdfINTRODUCTION A LA FINANCE DE MARCHE.pdf
INTRODUCTION A LA FINANCE DE MARCHE.pdf

Chapitre 1 android

  • 1. IINTRODUCTIONNTRODUCTION ÀÀ LALA PLATEFORMEPLATEFORME AANDROIDNDROID © Imene Sghaier 2016-2017 ISET NabeulISET Nabeul SEM2 & Mastère SEM1SEM2 & Mastère SEM1
  • 2. 2  Objectifs spécifiques  S’introduire à la plateforme Android, l’architecture du système, ses versions, sa pile développement et le processus de développement sous Android  Eléments de contenu •Applications mobiles et système Android •Présentation du système Android •Versions •Architecture du système Android •Eléments d’une application android •La pile des outils de développement pour Android •Processus de compilation •Déploiement d’une application  Volume Horaire :  Cours : 1.5 heure OBJECTIFS ET ÉLÉMENTS DE CONTENU Imene Sghaier-Développement Mobile Avancé
  • 3. APPLICATIONS MOBILES ET SYSTÈME ANDROID  Une application mobile est un programme téléchargeable de façon gratuite ou payante et exécutable à partir du système d’exploitation d’un dispositif mobile (PDA, smartphone, tablette…).  Elles sont pour la plupart distribuées depuis des plateformes de téléchargement (parfois elles- mêmes contrôlées par les fabricants de smartphones) telles que l'App Store (plateforme d'Apple), le Google Play (plateforme de Google / Android), ou encore le Windows Phone Store(plateforme de Microsoft). 3 Imene Sghaier-Développement d’Applications Mobiles
  • 4. APPLICATIONS MOBILES ET SYSTÈME ANDROID  Android est un système d'exploitation temps réel, mobile et open source conçue spécifiquement et pas exclusivement pour des systèmes embarqués légers comme smartphones, PDA, tablettes…  Android désigne à la fois:  Un environnement de développement (API)  Un environnement d’exécution (le plus souvent) 4 Imene Sghaier-Développement d’Applications Mobiles
  • 5. APPLICATIONS MOBILES ET SYSTÈME ANDROID  Android s'appuie sur deux piliers:  le langage Java  le SDK qui permet d'avoir un environnement de développement facilitant la tâche du développeur  Le kit de développement donne accès à des exemples, de la documentation mais surtout à l'API de programmation du système et à un émulateur pour tester ses applications.  Stratégiquement, Google utilise la licence Apache pour Android ce qui permet la redistribution du code sous forme libre ou non et d'en faire un usage commercial. 5 Imene Sghaier-Développement d’Applications Mobiles
  • 6. PLAN DU CHAPITRE  Applications mobiles et système Android  VersionsVersions  Architecture du système Android  Eléments d’une application android  La pile des outils de développement pour Android  Processus de compilation  Déploiement d’une application 6 Imene Sghaier-Développement d’Applications Mobiles
  • 7. VERSIONS Version Nom Date 1.0 Version connue des développeurs : sortie avant le premier téléphone Android fin 2007 1.1 "Petit Four" début 2009 1.5 "Cupcake" (Petit Gâteau) avril 2009 1.6 "Donut" (Beignet) septembre 2009 2.1 "Eclair" janvier 2010 2.2 "FroYo" (Frozen Yogourt : Yaourt glacé) mai 2010 2.3 "Gingerbread" (Pain d'épice) décembre 2010 3.0 "Honeycomb" (Rayon de miel) janvier 2011 7 Imene Sghaier-Développement d’Applications Mobiles
  • 8. VERSIONS 4.0 "Ice Cream Sandwich" (Sandwich à la crème glacée), version unifiée pour Smartphone, Tablette et GoogleTV, combinant Gingerbread et Honeycomb octobre 2011 4.1 "Jelly Bean" (API 16) juillet 2012 4.2.2 API 17 février 2013 4.3 API 18 juillet 2013 4.4 "KitKat" (API 19) octobre 2013 5.0 "Lollipop" (API 21) octobre 2014 5.1.1 "Lollipop" (API 22) mars 2015 6.0 "Marshmallow" (API 23) octobre 2015 7.0 " Nougat" (API 24) Mars 2016 8.0 "Oreo" (API 25) Aout 2017 8 Imene Sghaier-Développement d’Applications Mobiles
  • 9. PLAN DU CHAPITRE  Applications mobiles et système Android  Versions  Architecture du système AndroidArchitecture du système Android  Eléments d’une application android  La pile des outils de développement pour Android  Processus de compilation  Déploiement d’une application 9 Imene Sghaier-Développement d’Applications Mobiles
  • 10. ARCHITECTURE DU SYSTÈME ANDROID 10 Imene Sghaier-Développement d’Applications Mobiles http://code.google.com/android/what-is-android.html
  • 11. ARCHITECTURE DU SYSTÈME ANDROID  La couche "Applications" (navigateur, gestion des contacts, application de téléphonie...)  La couche "Application Framework" : cette couche permet au programmeur de construire de nouvelles applications. Cette couche fournit la gestion :  des Views (IHM)  des ContentProviders (fournisseurs de contenus) qui permettent l'accessibillité aux données des autres applications (ex : les contacts) et donc le partages de données  des ressources qui sont les fichiers non codes comme les images, les écrans (Resource Manager)  des notifications (affichage d'alerte dans la barre de titre)  des Activities pour l'enchaînement des écrans 11 Imene Sghaier-Développement d’Applications Mobiles
  • 12. ARCHITECTURE DU SYSTÈME ANDROID  La couche "Libraries" (bibliothèques) qui représente la couche logicielle basse pour utiliser  les formats multimédia : images, audio et vidéo enregistrement comme rendu  les dessins 2D et 3D, bitmap et vectoriel,  une base de données SQL (SQLite)  SSL  L'environnement d'exécution Android Runtime (à partir de lollilop) qui compile le bytecode vers le natif  Toute application est exécutée dans son propre processus, dans sa propre Dalvik Virtual Machine (avant lollilop), donc plusieurs instances de la DVM peuvent être lancées efficacement.  Le noyau Linux sur lequel la Dalvik virtual machine s'appuie pour gérer le multithreading, la mémoire. Le noyau Linux apporte les services de sécurité, la gestion des processus, etc.  une couche d'abstraction pour l'accès aux capteurs (HAL) 12 Imene Sghaier-Développement d’Applications Mobiles
  • 13. ARCHITECTURE DU SYSTÈME ANDROID  Dalvik est le nom de la machine virtuelle open- source utilisée sur les systèmes Android. Cette machine virtuelle exécute des fichiers .dex (dalvic executable), plus ramassés que les .class classiques. Ce format évite par exemple la duplication des String constantes.  La machine virtuelle utilise elle-même moins d'espace mémoire et l'adressage des constantes se fait par un pointeur de 32 bits.  Dalvik n'est pas compatible avec une JVM du type Java SE ou même Java ME. La librairie d'accès est donc redéfinie entièrement par Google.  A partir de Lollipop (5.0), Android dispose d'ART comme JVM pour Android. Elle compile l'application au moment du déploiement (Ahead-of- time compilation: compilation à l’installation). 13 Imene Sghaier-Développement d’Applications Mobiles
  • 14. PLAN DU CHAPITRE  Applications mobiles et système Android  Versions  Architecture du système Android  Eléments d’une applicationEléments d’une application androidandroid  La pile des outils de développement pour Android  Processus de compilation  Déploiement d’une application 14 Imene Sghaier-Développement d’Applications Mobiles
  • 15. ELÉMENTS D’UNE APPLICATION ANDROID Une application Android peut être composée des éléments suivants:  Activités (android.app.Activity): il s'agit d'une partie de l'application présentant une vue à l'utilisateur  Services (android.app.Service): il s'agit d'une activité tâche de fond sans vue associée  Fournisseurs de contenus (android.content.ContentProvider) permettent le partage d'informations au sein ou entre applications  Widgets (android.appwidget.*): une vue accrochée au bureau d'Android  Intents (android.content.Intent): permet d'envoyer un message pour un composant externe sans le nommer explicitement  Récepteurs d'Intents (android.content.BroadcastReceiver): permet de déclarer être capable de répondre à des Intents  Notifications (android.app.Notifications): permet de notifier l'utilisateur de la survenue d'événements 15 Imene Sghaier-Développement d’Applications Mobiles
  • 16. ELÉMENTS D’UNE APPLICATION ANDROID: ACTIVITY, SERVICE  Une activité (activity) gère l'affichage et les interactions utilisateurs sur un écran . Les activités sont indépendantes les unes des autres.  Une activité est une sous classe de android.app.Activity  Une application peut avoir plusieurs activités pouvant lancer cette application  Un service (service) est un composant qui est exécuté en tâche de fond. Il ne fournit pas d'interface graphique.  Un service est une sous classe de android.app.Service  Exemple de service : jouer de la musique, rechercher des données sur le réseau. 16 Imene Sghaier-Développement d’Applications Mobiles
  • 17. ELÉMENTS D’UNE APPLICATION ANDROID: CONTENTPROVIDER  Un fournisseur de contenu (content provider) gère des données partageables. C'est le seul moyen d'accéder à des données partagées entre applications  Exemple de fournisseur de contenu : les informations de contacts de l'utilisateur du smartphone  On peut créer un fournisseur de contenus pour des données qu'on veut partager  On récupère un fournisseur de contenu pour des données partageables en demandant le ContentResolver du système et en donnant ensuite, dans les requêtes, l'URI des données (A voir dans le TP) 17 Imene Sghaier-Développement d’Applications Mobiles
  • 18. ELÉMENTS D’UNE APPLICATION ANDROID: BROADCASTRECEIVER  Un récepteur d'informations est une sous classe de android.content.BroadcastReceiver  Un récepteur d'informations est un composant à l'écoute d'informations qui lui sont destinées. Un tel récepteur indique le type d'informations qui l'intéressent et pour lesquelles il se mettra en écoute.  Exemple : appel téléphonique entrant, réception d'un SMS, réseau Wi-Fi connecté, informations diffusées par des applications.  Les informations peuvent être envoyées par le système (réception de la liste des réseaux Wi-Fi, ...)  L'application réceptrice d'informations (c'est à dire possédant un récepteur d'informations) n'a pas besoin d'être lancée. Si elle ne l'est pas, Android la démarre automatiquement  Un récepteur n'est pas une IHM mais peut en lancer une (éventuellement petite dans la barre de notification), ou peut lancer un service traitant l'arrivée de l'information 18 Imene Sghaier-Développement d’Applications Mobiles
  • 19. ELÉMENTS D’UNE APPLICATION ANDROID: INTENT  Un intent est une sous classe de android.content.Intent  Un événement (intent) est une "intention" à faire quelque chose contenant des informations destinées à un composant Android. C'est un message asynchrone  Les activités, services et récepteurs d'informations utilisent les Intents pour communiquer entre eux  Un Intent ne contient pas obligatoirement explicitement le composant qui va le gérer. Dans ce cas c'est un Intent implicite. Si l'Intent indique explicitement la classe du composant qui va le gérer c'est un Intent explicite 19 Imene Sghaier-Développement d’Applications Mobiles
  • 20. ELÉMENTS D’UNE APPLICATION ANDROID: LE FICHIER MANIFEST <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="andro.jf" android:versionCode="1" android:versionName="1.0"> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".Main" android:label="@string/app_name"> <<intentintent--filterfilter>> <action<action android:nameandroid:name="="android.intent.action.MAINandroid.intent.action.MAIN" />" /> <<categorycategory android:nameandroid:name="="android.intent.category.LAUNCHERandroid.intent.category.LAUNCHER" />" /> </</intentintent--filterfilter>> </activity> <service>...</service> <receiver>...</receiver> <provider>...</provider> </application> </manifest> 20 Imene Sghaier-Développement d’Applications Mobiles
  • 21. ELÉMENTS D’UNE APPLICATION ANDROID : LE FICHIER MANIFEST  Toute application doit contenir le fichier XML AndroidManifest.xml  Ce fichier déclare, entre autre, les différents composants de l'application  Parmi les composants, seuls les récepteurs d'évènements (BroadcastReceiver) ne sont pas forcément dans le manifeste.  Les autres (Activity, Service, ContentProvider) doivent l'être sinon ils ne seront jamais lancés quel que soit le code écrit !!  Ce fichier contient aussi :  les permissions nécessaires à l'application (accès internet, accès en lecture/écriture aux données partagées)  le numéro minimum de la version API utilisée, des logiciels et matériels utilisés par l'application (caméra) et des bibliothèques supplémentaires à l'API de base (Google maps library) 21 Imene Sghaier-Développement d’Applications Mobiles
  • 22.  Les ressources sont des éléments constituant l’application autre que le code source (chaines ce caractères constantes, fichiers image, vidéo, du texte...)  Les ressources sont disposées dans des sous-répertoires de « res » en fonction de leur type  Ces ressources sont référencées dans la classe spéciale R.  Cela veut dire que cette fameuse classe définira des constantes de type int permettant l’identification de chacune de ces ressources. Ces ID sont utiles à de nombreux endroits dans l’API Android. 22 ELÉMENTS D’UNE APPLICATION ANDROID : LES RESSOURCES Imene Sghaier-Développement d’Applications Mobiles
  • 23.  Les ressources d’une application Android sont utilisées dans le code au travers de la classe statique R.  Toutes les ressources sont accessibles au travers de R, dès qu'elles sont déclarées dans le fichier XML ou que le fichier associé est déposé dans le répertoire adéquat (images, chaine de caractères...)  Les ressources sont utilisées de la manière suivante : android.R.type_ressource.nom_ressource 23 ELÉMENTS D’UNE APPLICATION ANDROID : LES RESSOURCES Imene Sghaier-Développement d’Applications Mobiles
  • 24.  Les chaines constantes de l'application sont situées dans res/values/strings.xml.  Exemple 24 <?xml version="1.0" encoding="utf-8"?> <resources> <string name="hello">Hello!</string> <string ame="app_name">AndroFirstApp</string> </resources>  La récupération de la chaine se fait avec le code : Resources res = getResources(); String hw = res.getString(R.string.hello); ELÉMENTS D’UNE APPLICATION ANDROID : LES RESSOURCES Imene Sghaier-Développement d’Applications Mobiles
  • 25.  Une méthode spécifique pour les objets graphiques permet de les récupérer à partir de leur id, ce qui permet d'agir sur ces instances même si elles ont été créées via leur définition XML TextView texte = (TextView)findViewById(R.id.le_texte); texte.setText("Here we go !"); 25 ELÉMENTS D’UNE APPLICATION ANDROID : LES RESSOURCES Imene Sghaier-Développement d’Applications Mobiles
  • 26.  D'autres ressources sont spécifiables dans res :  les menus ;  les images (R.drawable) ;  des dimensions (R.dimen) ;  des couleurs (R.color). 26 ELÉMENTS D’UNE APPLICATION ANDROID : LES RESSOURCES Imene Sghaier-Développement d’Applications Mobiles
  • 27. PLAN DU CHAPITRE  Applications mobiles et système Android  Versions  Architecture du système Android  Eléments d’une application android  La pile des outils de développement pourLa pile des outils de développement pour AndroidAndroid  Processus de compilation  Déploiement d’une application 27 Imene Sghaier-Développement d’Applications Mobiles
  • 28. LA PILE DES OUTILS DE DÉVELOPPEMENT POUR ANDROID 28 Imene Sghaier-Développement d’Applications Mobiles JDK Java Standard Edition SDK Android AVD Manager Android Studio
  • 29. LA PILE DES OUTILS DE DÉVELOPPEMENT POUR ANDROID  L'Android SDK comporte:  Une API android (différents composants Activity, Service, ContentProvider, BroadCastReceiver…)  Un environnement de développement  Une machine virtuelle java adaptée à Android (ART)  Un environnement debuggueur DDMS (Dalvic Debug Monitor Service)  Des emulateurs virtuels (Android Virtual Device)  L'Android SDK compile l'ensemble du développement (code Java, données, fichier de ressources, fichier XML) dans un paquetage Android : un .apk 29 Imene Sghaier-Développement d’Applications Mobiles
  • 30. PLAN DU CHAPITRE  Applications mobiles et système Android  Versions  Architecture du système Android  Eléments d’une application android  La pile des outils de développement pour Android  Processus de compilationProcessus de compilation  Déploiement d’une application 30 Imene Sghaier-Développement d’Applications Mobiles
  • 31. PROCESSUS DE COMPILATION  Les fichiers .class contiennent du java byte-code, mais les dispositifs Android n’utilisent pas ce format de byte- code.  Android possède son propre format de byte-code nommé Dalvik.  Dalvik byte-codes comme le JVM byte-codes sont des codes machine pour des processeurs théoriques.  Le processus de compilation convertit les fichiers .class et les librairies .jar en un seul fichier de classes d’extension .dex qui contient le Dalvik byte-codes. 31 Imene Sghaier-Développement d’Applications Mobiles
  • 32. PLAN DU CHAPITRE  Applications mobiles et système Android  Versions  Architecture du système Android  Eléments d’une application android  La pile des outils de développement pour Android  Processus de compilation  Déploiement d’une applicationDéploiement d’une application 32 Imene Sghaier-Développement d’Applications Mobiles
  • 33. DÉPLOIEMENT D’UNE APPLICATION ANDROID 33 Imene Sghaier-Développement d’Applications Mobiles