0% ont trouvé ce document utile (0 vote)
74 vues38 pages

Exps

Transféré par

cherif nabil
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
74 vues38 pages

Exps

Transféré par

cherif nabil
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd

Développement sur Android

A
Saidi emna

Android

L'écosystème d'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. Le plugin Android Développent
Tools permet d'intégrer les fonctionnalités du SDK
à Eclipse. Il faut l'installer comme un plugin
classique en précisant l'URL du plugin. Ensuite, il
faut renseigner l'emplacement du SDK
(préalablement téléchargé et décompressé) dans
les préférences du plugin ADT.

1
Saidi emna

L'Operating System
Android est en fait un système de la famille des
Linux, pour une fois sans les outils GNU. L'OS
s'appuie sur:

• un noyau Linux (et ses drivers)

• une couche d'abstraction pour l'accès aux


capteurs (HAL)

• une machine virtuelle: Dalvik Virtual Machine


(avant Lollipop)

• un compilateur de bytecode vers le natif Android


Runtime (pour Lollipop)

• des applications (navigateur, gestion des


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

• des bibliothèques (SSL, SQL ite, OpenGL ES,


etc...)

• des API d'accès aux services Google


2
Saidi emna

Architecture d’Android
3
Saidi emna

Android est basé sur un HAL LINUX, fournissant des


une multitude de pilotes existants, la gestion de la
mémoire, gestion des processus/threads, gestion de la
sécurité et des accès réseau La couche Libraires,
écrites en C/C++, composée du Surface Manager, utilisé
pour l’affichage des diverses fenêtres. OpenGL/ES (3D)
et SGL (2D) sont les librairies graphiques du système, le
Media Framework offre les fonctionnalités pour
manipuler les formats media, ainsi que les fonts bitmap
et vector, SQLite est le système de gestion de base de
données, Webkit est le fureteur fournit par Android.

4
Saidi emna

Développement
d’applications pour
Android

5
Saidi emna

Production de logiciel

Chaîne de compilation Constitution de l'application


Android
Code Manifeste
source Bytecode Application .ap
Class Binaire
k
Java
Dalvik .dex
Java

Ressources

Téléchargement

IDE Eclipse ou Machine


Netbeans + Terminal
virtuelle
plugins Dalvik

API Android
SDK Android +
outils

Environnement de développement Environnement d'exécution

6
Saidi emna

Développer pour Android

Les interfaces et les constantes sont définies dans


des fichiers XML
 Facilite la modification
 Statique
Les ressources sont téléchargées avec l’application
Les fonctionnalités sont dans le code
 Lien avec ce qui est défini en XML
 Accès aux ressources
L’API n’est pas totalement celle de java (classes
redéfinies (par exemple Color), interfaces,

La syntaxe des fichiers XML est extensible ⇒


écouteurs …)

difficile de savoir ce qui est prédéfini


Les propriétés définies en XML peuvent être
contradictoires
L’interface ne peut être utilisée que par l’activité qui
l’a créée
Difficile de développer sans un environnement
adéquat (Eclipse ou Netbeans) en raison des
fichiers générés
La prévisualisation des interfaces par Eclipse n’est
pas toujours conforme (ascenseurs, contenu défini
dans le code …)

7
Saidi emna

Outils de développement

SDK Android
• SDK Manager : permet de télécharger et de
mettre à jour les composants du SDK

o la plateforme SDK

o un émulateur : adv. (Android Virtual


devise)

o les documentations

o l’API Google (Google maps et Cie)

o des exemples, . . .

o l’outil adb qui permet l’interaction avec


le terminal (virtuel ou non)

Un IDE : éclipse (ou Netbeans, . . .)

8
Saidi emna

o aide à la programmation (si on sait


déjà faire le boulot a la main !)

o Génération automatique de fichiers

o installation et debugge facilites

o plugin
(https://dlssl.google.com/android/eclip
se)

9
Saidi emna

Développer avec Eclipse Espace de travail

l’espace de travail ⇒ nouvel espace nouveaux


Remarque : les paramétrages d’Eclipse sont liés à

paramètres

10
Saidi emna

Développer avec Eclipse Projet Android

(Menu File → New


→ Android Project)

Nom

SDK

11
Saidi emna

Paquetage (au moins 2 niveaux)

Développer avec Eclipse

12
Saidi emna

13
Saidi emna

Créer un terminal virtuel (simulateur)


(Menu Windows → Android SDK and AVD Manager)

14
Saidi emna

Créer un terminal virtuel (simulateur)

Paramétrage:

Nom
SDK
Taille carte SD

Format d’écran

Matériel

15
Saidi emna

Terminal virtuel ou Smartphone

16
Saidi emna

Contrôle du terminal (DDMS)

17
Saidi emna

Structure d’un projet Eclipse


 src contient
les fichiers source

 gen
contient les fichiers générés par Eclipse

 res contient
les ressources (images, descriptions
d’interfaces, valeurs)

– Organisé en sous dossiers par types

 AndroidMa
nifest décrit les propriétés de l’application

18
Saidi emna

Le fichier Manifeste

Fichier XML qui contient :

• la description des composants de l’application

• les permissions requises (accès internet,


lecture/écriture)

• les besoins de l’application

• la capacité de chaque composant

• les librairies utilisées

• la version d’Android minimum, . . ..

19
Saidi emna

Le fichier AndroidManifest
• Généré par Eclipse, contient la description
de l’application

20
Saidi emna

Rubriques du fichier AndroidManifest


 Manifest

– Nom du paquetage
– Versions
– SDK

 Application

21
Saidi emna

– Nom
– Icône7
– Eléments constituant l’application (activités,
services, …)

 Permissions
– Accès aux capteurs
– Accès au réseau
– Accès à la téléphonie – …

 Instrumentation (pour les tests)

Les ressources

• Application embarquée ⇒ tout doit être dans


le fichier .apk téléchargé

 Le répertoire res contient toutes les


ressources qui seront mises dans le
apk :

22
Saidi emna

 drawable-hdpi (images en haute


définition)

 drawable-ldpi (images en basse


définition)

 drawable-mdpi (images en moyenne


définition)

 layout (description en XML des


interfaces)

 values (définitions en XML de


constantes : chaînes, tableaux, valeurs
numériques …)

 anim (description en XML d’animations)

 menus (description en XML de menus


pour l’application)

 xml (fichiers XML utilisés directement


par l’application)

 raw (tous les autres types de


ressources : sons, vidéos, …) On peut
ajouter d’autres sous répertoires

23
Saidi emna

La classe R

• C’est une classe générée par Eclipse qui


permet à l’application d’accéder aux
ressources

• Elle contient des classes internes dont les


noms correspondent aux types de
ressources (id, drawable, layout …)

24
Saidi emna

• Elle est constituée à partir des fichiers


placés dans les sous répertoires du
répertoire res

• Une propriété est créée pour :

– Chaque image placée dans drawable


– Chaque identificateur défini dans des
fichiers XML (objets d’interface, constantes)
– Chaque fichier placé dans les répertoires
xml, raw …

Utilisation des ressources

• Référencement d’une ressource dans un


fichier xml. La forme générale est
"@type/identificateur"

Par exemple :@string/machine

25
Saidi emna

Fait référence à une chaine contenue dans


un fichier XML placé dans le répertoire
res/values et définie comme suit : …

<Resources>
…..
<string Name="machine >Contenu de cette
chaine …

< /String>
</ Resources>

Référencement d’une ressource dans le


code. La forme générale est : R.type.
Identificateur
Par exemple : R.string.machaine Fait
référence à la même chaine

La classe Resources

• Permet l’accès aux ressources


répertoriées dans R

• On obtient une instance de cette classe


par getResources () de l’activité
26
Saidi emna

• Principales méthodes de la classe


Resources (le paramètre est un identifiant
défini dans R de la forme R.type. Nom) :

– Boolean getBoolean (int)


– Int getInteger (int)
– Int [] getArray (int)
– String get String (int)
– String [] getStringArray (int)
– Int getColor (int)
– float getDimension (int)
– Drawable getDrawable (int)

• Exemple: String titre = getResources


().get String (R.string.machaine);

Les
27
Saidi emna

Applications

Structure d’une application

• Activité (android.app.Activity)
Programme qui gère une interface
graphique

28
Saidi emna

• Service (android.app.Service)
Programme qui fonctionne en tâche de
fond sans interface

• Fournisseur de contenu
(android.content.ContentProvider)
Partage d’informations entre
applications

• Ecouteur d’intention diffusée


(android.content.BroadcastReceiver) :

Permet à une application de récupérer


des informations générales (réception
d’un SMS, batterie faible, …)

Eléments d’interaction

– Intention
(android.content.Intent) :
Permet à une application d’indiquer ce
qu’elle sait faire ou de chercher un
savoir-faire
– Filtre d’intentions ( : permet de
choisir la meilleure application pour
assurer un savoir-faire

29
Saidi emna

Application Android
• Une activité = un programme + une
interface

30
Saidi emna

• Un service = un programme sans


interface

• Une application =
– Une activité principale
– Eventuellement une ou plusieurs
activités secondaires
– Eventuellement un ou plusieurs
services
– Eventuellement un ou plusieurs
écouteurs d’intentions diffusées
– Eventuellement un ou plusieurs
fournisseurs de contenu

Activité Android
• Classe qui hérite de Activity ou d’une classe
dérivée de Activity (par exemple de
31
Saidi emna

MapActivity pour utiliser Google maps,


ListActivity ou TabActivity pour des interfaces
particulières)
• On surcharge certaines méthodes qui sont
appelées par Android pour définir le
comportement (même principe que les applets)
:
• onCreate lors de la création
• onDestroy lorsque l’activité se termine
• onStart lorsque l’activité démarre ou
redémarre
• onPause lorsque l’activité n’est plus en
premier plan
• onResume lorsque l’activité revient en
premier plan
• onStop lorsque l’activité n’est plus visible
• onRestart lorsque l’activité redevient visible

Cycle de vie d’une activité


• Android se réserve le droit de tuer le
processus Unix d’une activité s’il n’y a plus

32
Saidi emna

assez de ressources (mémoire). Les règles sont


les suivantes :
– Une activité en premier plan n’est tuée que si
c’est elle qui consomme trop de ressources.
– Une activité en arrière-plan ou non visible
peut être tuée.
• Lorsqu’une activité a été tuée, si on revient
dessus elle est relancée (onCreate – On peut
sauvegarder l’état (c’est-à-dire les propriétés)
d’une activité (dans onPause) pour le retrouver
lorsqu’elle elle est recréée par le paramètre
transmis à onCreate

Pensez vos interfaces pour un smartphone


33
Saidi emna

• Ecran tactile de petite taille


– Eviter les interfaces trop touffues (on ne peut
pas agrandir l’écran comme on agrandit une
fenêtre)
– Eviter les éléments cliquables trop petits (il
faut pouvoir cliquer avec le doigt même si on a
des gros doigts)
– Eviter les élément cliquables trop tassés (il
faut pouvoir cliquer sur le bon élément même
si on vise mal)
• Le défilement se fait par touché/glissé
– Pas trop d’ascenseurs (on ne peut pas faire
défiler un conteneur entier ET des éléments de
ce conteneur dans le même sens)
– Pas d’ascenseurs mal placés (si tous les
éléments sont cliquables comment faire défiler
sans cliquer ?)
• L’écran peut être tourné
• Tous les smartphones n’ont pas la même
définition d’écran

34
Saidi emna

35
Saidi emna

MMerci pour attention


e
r
ci
p
o
u
r
a
tt
e
n
ti
o
n 36
Saidi emna

37

Vous aimerez peut-être aussi