Vous êtes sur la page 1sur 28

INTRODUCTION À LA

PLATEFORME ANDROID

Imene Sghaier

2016-2017
PLAN DU CHAPITRE

 Applications mobiles

19/02/2017
 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

 SDK Android

 Processus de compilation

 Déploiement d’une application

Imene Sghaier-Développement d’applications mobiles


APPLICATIONS MOBILES

 Une application mobile est un programme

19/02/2017
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


PRÉSENTATION DU SYSTÈME ANDROID

19/02/2017
 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)

Imene Sghaier-Développement d’applications mobiles


PRÉSENTATION DU SYSTÈME ANDROID

19/02/2017
 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


VERSIONS
Version Nom Date
1.0 Version connue des fin 2007

19/02/2017
développeurs : sortie
avant le premier
téléphone Android

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 : mai 2010
Yaourt glacé)

2.3 "Gingerbread" (Pain décembre 2010


d'épice)
3.0 "Honeycomb" (Rayon de janvier 2011 6
miel)
Imene Sghaier-Développement d’applications mobiles
VERSIONS
4.0 "Ice Cream Sandwich" octobre 2011
(Sandwich à la crème

19/02/2017
glacée), version unifiée
pour Smartphone,
Tablette et GoogleTV,
combinant Gingerbread
et
Honeycomb

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
7.0 « Nougat » (API 24) Mars 2016

Imene Sghaier-Développement d’applications mobiles


ARCHITECTURE DU SYSTÈME ANDROID

19/02/2017
8

Imene Sghaier-Développement d’applications mobiles


ARCHITECTURE DU SYSTÈME ANDROID

 La couche "Applications" (navigateur, gestion des


contacts, application de téléphonie...)

19/02/2017
 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 les 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 9

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

19/02/2017

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) 10

Imene Sghaier-Développement d’applications mobiles


ARCHITECTURE DU SYSTÈME ANDROID

 Dalvik est le nom de la machine virtuelle open-

19/02/2017
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- 11
time compilation: compilation à l’installation).
Imene Sghaier-Développement d’applications mobiles
ELÉMENTS D’UNE APPLICATION ANDROID
Une application Android peut être composée des éléments suivants:
 des activités (android.app.Activity): il s'agit d'une partie de

19/02/2017
l'application présentant une vue à l'utilisateur
 des services (android.app.Service): il s'agit d'une activité tâche
de fond sans vue associée
 des fournisseurs de contenus (android.content.ContentProvider)
permettent le partage d'informations au sein ou entre applications
 des widgets (android.appwidget.*): une vue accrochée au
bureau d'Android
 des Intents (android.content.Intent): permet d'envoyer un
message pour un composant externe sans le nommer explicitement
 des récepteurs d'Intents (android.content.BroadcastReceiver):
permet de déclarer être capable de répondre à des Intents
 des notifications (android.app.Notifications): permet de
notifier l'utilisateur de la survenue d'événements
12

Imene Sghaier-Développement d’applications mobiles


ELÉMENTS D’UNE APPLICATION ANDROID:
ACTIVITY, SERVICE
 Une activité (activity) gère l'affichage et les

19/02/2017
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.
 Exemple de service : jouer de la musique, rechercher
des données sur le réseau.
13
 Un service est une sous classe de android.app.Service

Imene Sghaier-Développement d’applications mobiles


ELÉMENTS D’UNE APPLICATION ANDROID:
CONTENTPROVIDER
 Un fournisseur de contenu (content provider)

19/02/2017
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) 14

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

19/02/2017
 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
15

Imene Sghaier-Développement d’applications mobiles


ELÉMENTS D’UNE APPLICATION ANDROID:
INTENT

 Un intent est une sous classe de android.content.Intent

19/02/2017
 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 Intent 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

16

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"

19/02/2017
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">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<service>...</service>
<receiver>...</receiver>
<provider>...</provider>
</application>
</manifest>
17

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

19/02/2017
 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) 18

Imene Sghaier-Développement d’applications mobiles


ELÉMENTS D’UNE APPLICATION ANDROID : LES
RESSOURCES

 Les ressources sont des éléments constituant

19/02/2017
l’application autre que le code source (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.

19

Imene Sghaier-Développement d’applications mobiles


ELÉMENTS D’UNE APPLICATION ANDROID : LES
RESSOURCES

 Les ressources d’une application Android sont


utilisées dans le code au travers de la classe

19/02/2017
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

20

Imene Sghaier-Développement d’applications mobiles


ELÉMENTS D’UNE APPLICATION ANDROID : LES
RESSOURCES

 Les chaines constantes de l'application sont situées

19/02/2017
dans res/values/strings.xml.
 Exemple

<?xml version="1.0" encoding="utf-


8"?> <resources> <string
name="hello">Hello Hello JFL
!</string> <string
name="app_name">AndroJF</string>
</resources>

 La récupération de la chaine se fait via le code :

Resources res = getResources();


String hw = res.getString(R.string.hello);
21

Imene Sghaier-Développement d’applications mobiles


ELÉMENTS D’UNE APPLICATION ANDROID : LES
RESSOURCES

Une méthode spécifique pour les objets graphiques

19/02/2017

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 !");

22

Imene Sghaier-Développement d’applications mobiles


ELÉMENTS D’UNE APPLICATION ANDROID : LES
RESSOURCES

19/02/2017
 D'autres ressources sont spécifiables dans res :
 les menus ;
 les images (R.drawable) ;
 des dimensions (R.dimen) ;
 des couleurs (R.color).

23

Imene Sghaier-Développement d’applications mobiles


LA PILE DES OUTILS DE DÉVELOPPEMENT POUR ANDROID

19/02/2017
24

Imene Sghaier-Développement d’applications mobiles


SDK ANDROID

 L'Android SDK comporte:

19/02/2017
 Une API android (diff 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
25

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-

19/02/2017
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.

26

Imene Sghaier-Développement d’applications mobiles


DÉPLOIEMENT D’UNE APPLICATION

19/02/2017
27

Imene Sghaier-Développement d’applications mobiles


RÉFÉRENCES

19/02/2017
 http://developer.android.com/
 Cours de Jean-Marc Farinone, maître de
conférences au Conservatoire National des Arts
et Métiers (CNAM) de Paris
 Cours "Développement sous Android" de Jean-
François Lalande, INSA, Institut National des
Sciences Appliquées, Centre VAL DE LOIRE

28

Vous aimerez peut-être aussi