NFA024-2014-TP-intro - Jean

Download Report

Transcript NFA024-2014-TP-intro - Jean

- TP Programmation Android NFA024
Conservatoire National des Arts et Métiers
vendredi 07 mars 2014
Installation :
Pour programmer des applications Android, il faut tout d’abord veiller à disposer du SDK classic de
Java Standard Edition sur la machine de développement. Si ce SDK n’est pas présent, il faut l’installer à
partir du lien suivant : http://www.oracle.com/technetwork/java/javase/downloads/
index.html.
Ensuite, la solution la plus simple consiste à installer le SDK android dans sa version bundle, téléchargeable
à l’adresse suivante : http://developer.android.com/sdk/index.html
En téléchargeant le bundle SDK depuis cette page vous récupérez d’un seul coups :
— L’IDE Eclipse et le plugin ADT (le tout étant configuré pour une utilisation immédiate)
— Le SDK Android proprement dit avec ces différents outils (pour un développement en ligne de
commande ou avec un autre IDE)
— Les outils d’interaction avec la plate-forme Android
— La dernière version de la plate-forme Android parue à ce jour (actuellement la version 4.4.2 API lvl
19)
— La dernière version de l’image ROM utile pour construire de machine virtuelle et l’émulateur Android afin de tester les développements (les autre ROM et ou API level seront à télécharger séparéent
en utilisant le gestionnaire du SDK)
Utilisation avec Android Studio
Il est possible de télécharger une version bundle du SDK intégrant le logiciel
IDE Android Studio sur la même page. Cet IDE évolue très vite (des mises à
jours sont postées toutes les semaines). Mais il est conseillé pour le moment
des rester sur une version antérieure assez stable (0.4.6 ppar exemple). Les
versions 0.5.x nécessitantnt plus d’attention.
Utilisation avec Netbeans
Pour les utilisateurs de Netbeans, en plus du SDK Android, il conviendra d’installer un plugin dédié
(moins évolué que le plugin eclipse). Pour ce faire, dans le menu Tools choisir l’item Plugin. Un fenêtre
1
This document is shared by Jean-Ferdy Susini according to terms described in
the Creative Commons Attribution-ShareAlike 3.0 Unported License.
apparait comportant plusieurs Onglets. Choisir l’onglet Settings. Puis cliquer sur le bouton Add. Remplir
le champ name avec NBAndroid et le champ URL avec l’url suivante : http://nbandroid.org/
updates/updates.xml. Validez et retournez dans l’onglet Available Plugin. Dans la liste, cochez les
plugins :
— Android
— et Android Test Runner for NetBeans (choisissez les versions correspondant à votre version de Netbeans)
clickez sur Install.
Dans les préférences, la section Miscellaneous contient un nouvel onglet Android. Choisir cet onglet et
entrez le chemin vers le SDK android.
Le gestionnaire de SDK
Une fois les archives décompressées, il devient possible de travailler avec le SDK sous au moins 2
formes :
— en ligne de commande (bash ou autre sous Unix ou CMD sous Windows)
— à travers l’interface de votre IDE (Eclipse, Netbeans, Android Studio)
En ligne de commande sous bash :
> android
La ligne de commande sous Windows
une fois le SDK installé (archive décompressée), ouvrez une fenêtre de l’explorateur Windows, et baladez vous jusqu’au répertoire tools dans le répertoire du SDK. Par exemple, sur la capture qui suit le chmin
d’accès est C:\Documents and Settings\SUSINI\Bureau\android sdk windows\tools
2
This document is shared by Jean-Ferdy Susini according to terms described in
the Creative Commons Attribution-ShareAlike 3.0 Unported License.
copié le chemin d’accès il va nous permettre de configurer une variable de la ligne de commande :
Dans le panneau de configuration ! choisir le tableau système ! Avancé ! Variables d’environnement :
!
La ligne de commande sous Windows
Sous Unix (Linux ou MacOS) on se contentera d’ajouter les chemins dans un fichier . profile du
répertoire utilisateur. Si le terminal est de type bash ou compatible (configuration par défaut).
PATH=$PATH : / CheminDaccesAuSDK / t o o l s : / CheminDaccesAuSDK / p l a t f o r m
e x p o r t PATH
tools
Configurer le SDK :
Lancer depuis votre IDE le SDK Manager d’Android. Il est possible de le lancer par la ligne de commande en entrant la commande : Le SDK Manager vous permet de mettre à jour régulièrement votre SDK
et d’installer différentes versions de la plate-forme android.
Il est recommandé d’installer :
— les Android SDK tools et Android SDK platform-tools doivent être toujours à jour et installés.
— la dernière version de l’API lvl 19 (la documentation et les support ARM et x86)
— on recommande également pour cette UE l’API lvl 10.
— les autres éléments sont facultatifs (attention cela fini par occuper beaucoup d’espace disque).
3
This document is shared by Jean-Ferdy Susini according to terms described in
the Creative Commons Attribution-ShareAlike 3.0 Unported License.
Une machine virtuelle :
Pour tester une application, il est recommander de créer un émulateur Android afin de ne pas recourir
systématiquement à chaque test élémentaire du programme à un véritable téléphone. (De plus l’utilisation
de machines virtuelles nous permettra de tester plusieurs configurations matérielles différentes sans avoir à
disposer physiquement des ces matériels). Nous allons donc pour cela créer des machines virtuelles. Mais il
4
This document is shared by Jean-Ferdy Susini according to terms described in
the Creative Commons Attribution-ShareAlike 3.0 Unported License.
permet surtout de créer des machines virtuelles émulant différentes configurations de téléphones Android. . .
Dans le menu Tools, choisir l’item Manage AVDs. . .
Une fenêtre apparait avec une liste (initialement vide) de machine virtuelles. Nous allons en créer une :
dans l’onglet Android Virtual Devices, choisir le bouton New. . .
Une nouvelle fenêtre apparait, permettant de configurer une machine virtuelle. Exemple :
Si vous possédez une WebCam, il est possible de l’utiliser pour simuler la caméra d’un téléphone (utile
pour les application avec lecture de code barre, les applications photo ou vidéo, la réalité augmentée. . . ) : Il
est aussi intéressant de créer une SDCard Virtuelle ou de la partager entre différentes VM.
Après cela une VM sera disponible dans la liste :
5
This document is shared by Jean-Ferdy Susini according to terms described in
the Creative Commons Attribution-ShareAlike 3.0 Unported License.
Fermez la fenêtre et quittez l’Android SDK Manager, pour revenir à votre IDE.
création d’un projet
Créez un nouveau projet Android dans votre IDE.
Il est possible de créer un projet directement en utilisant la ligne de commande :
> android create project
target 2
name H e l l o A n d r o i d W o r l d \
p a t h / home / l i c e n c e p / H e l l o A n d r o i d W o r l d
a c t i v i t y HelloAndroidWorldMain \
p a c k a g e f r . cnam . d e p t i n f o . f i p . t p . haw
Le projet Android a la structure suivante :
— un dossier src : contenant les codes sources Java de votre application. Dans le cas de cette première
application, le dossier contiendra une hiérarchie correspondant au nom de package choisi à la création
du projet et on trouvera un fichier java contenant la classe définissant l’activité Android spécifiée à
la création du projet (dans le cas de la ligne de commande
fr/cnam/deptinfo/fip/tp/haw/HelloAndroidWorldMain.java)
— un dossier res : contenant les ressources associées au projet. Ce dossier est généralement divisé lui
même en plusieurs sous dossiers :
— un sous-dossier drawable contenant entre autre l’icône de l’application (image qui sera utilisée
pour afficher l’application dans la liste des applications installées sur le téléphone)
— un sous-dossier layout contenant des fichiers XML représentant des interface graphiques statiques associées aux différentes activités de l’application. Par défaut, la première activité créée
est activité est associée au fichier main.xml.
6
—
—
—
—
—
This document is shared by Jean-Ferdy Susini according to terms described in
the Creative Commons Attribution-ShareAlike 3.0 Unported License.
— un sous-dossier values contenant la déclarations de valeurs constantes utilisées par l’application. Par exemple, des chaines de caractères associées au projet sont définies dans le fichier XML
strings.xml (exemple : app name )
dossier gen contenant des fichiers intermédiaires automatiquement générés par le processus de compilation d’un projet Android. En particulier on trouvera la définition de la classe R dans le fichier
R.java servant à attribuer un identifiant unique au différentes ressources du projet (y compris les
éléments des interfaces graphiques)
Le fichier AndroidManifest.xml qui est un fichier très important car il renferme les méta-données
décrivant l’application
Un fichier default.properties qui sera complètement assemblé par le processus de compilation
(il est préférable de ne pas l’éditer car il est généré automatiquement)
Un fichier local.properties utilisé conjointement entre Ant et un système de gestion de version
de code source comme subversion par exemple.
un fichier proguard.cfg utilisé pour configurer l’outil proguard qui est un obfuscateur de code
java dont le développement a été inspiré par les besoins des développeurs J2ME. Non seulement,
cet outil permet de faire de l’obfuscation de code mais il permet surtout de rendre très compacte ce
dernier et plus performant.
Si vous utilisez la ligne de commande ou Netbeans vous trouverez également les fichiers gérant le processus
de compilation suivant :
— build.xml contenant les directives de compilation de l’outil Ant
— build.properties permettant de redéfinir certaines constantes utilisées par Ant au cours d’une
compilation
HelloAndroidWorld /
H e l l o A n d r o i d W o r l d / A n d r o i d M a n i f e s t . xml
HelloAndroidWorld / b u i l d . p r o p e r t i e s
H e l l o A n d r o i d W o r l d / b u i l d . xml
HelloAndroidWorld / d e f a u l t . p r o p e r t i e s
H e l l o A n d r o i d W o r l d / gen
H e l l o A n d r o i d W o r l d / gen / f r
H e l l o A n d r o i d W o r l d / gen / f r / cnam
H e l l o A n d r o i d W o r l d / gen / f r / cnam / d e p t i n f o
H e l l o A n d r o i d W o r l d / gen / f r / cnam / d e p t i n f o / f i p
H e l l o A n d r o i d W o r l d / gen / f r / cnam / d e p t i n f o / f i p / t p
H e l l o A n d r o i d W o r l d / gen / f r / cnam / d e p t i n f o / f i p / t p / haw
H e l l o A n d r o i d W o r l d / gen / f r / cnam / d e p t i n f o / f i p / t p / haw / R . j a v a
HelloAndroidWorld / l i b s
HelloAndroidWorld / l o c a l . p r o p e r t i e s
HelloAndroidWorld / proguard . cfg
HelloAndroidWorld / r e s
HelloAndroidWorld / r e s / drawable
H e l l o A n d r o i d W o r l d / r e s / d r a w a b l e / a p p i c o n . png
HelloAndroidWorld / r e s / l a y o u t
H e l l o A n d r o i d W o r l d / r e s / l a y o u t / main . xml
HelloAndroidWorld / r e s / values
H e l l o A n d r o i d W o r l d / r e s / v a l u e s / s t r i n g s . xml
HelloAndroidWorld / s r c
HelloAndroidWorld / s r c / f r
7
This document is shared by Jean-Ferdy Susini according to terms described in
the Creative Commons Attribution-ShareAlike 3.0 Unported License.
HelloAndroidWorld /
HelloAndroidWorld /
HelloAndroidWorld /
HelloAndroidWorld /
HelloAndroidWorld /
HelloAndroidWorld /
src
src
src
src
src
src
/
/
/
/
/
/
fr
fr
fr
fr
fr
fr
/ cnam
/ cnam /
/ cnam /
/ cnam /
/ cnam /
/ cnam /
deptinfo
deptinfo
deptinfo
deptinfo
deptinfo
/
/
/
/
fip
fip / tp
f i p / t p / haw
f i p / t p / haw / H e l l o A n d r o i d W o r l d M a i n . j a v a
Lancez l’application sur une machine virtuelle ou sur votre smartphone (si vous avez un smartphone
Android et son cable USB).
compilation en ligne de commande :
> a n t debug
on peut installer une application par la ligne de commande :
> adb i n s t a l l b i n / H e l l o A n d r o i d W o r l d debug . apk
Premiers pas dans le code Android
Dans cette section nous allons mettre en œuvre les outils permettant le déverminage sur la plateforme
Android. En particulier, nous allons nous intéresser au processus logcat d’Android qui centralise et mémorise
l’ensemble des message de ⌧logging d’Android.
Utilisez la vue DDMS sous Eclipse ou utilisez le mode Debug dans Net beans.
En ligne de commande le logcat est obtenu grâce au couteau suisse abd :
> adb l o g c a t A c t i v i t y M a n a g e r : I HELLO TAG : I ⇤ : S
La classe android.util.Log permet d’écrire des messages dans le ⌧logcat android afin de tracer
l’exécution d’une application.
Plusieurs méthodes sont disponible pour formater des messages triés par importance :
— v(String tag, String msg) (verbose)
— d(String tag, String msg) (debug)
— i(String tag, String msg) (information)
— w(String tag, String msg) (warning)
— e(String tag, String msg) (error)
Implémentez la methode onDestroy de l’activité principale et ajouter un message de ⌧log : Log.i()
dans les méthodes onCreate et onDestroy.
On cherche ensuite à instrumenter l’ensemble des méthodes permettant de tracer le cycle de vie de
l’activité. Comment procédez vous ? Pendant l’exécution de l’application, simulez un appel téléphonique
(vue ⌧emulator control sous Eclipse), retrouver le focus de votre application en raccrochant. il est possible
de simuler un élément du téléphone (capteur, GPS, appel entrant. . . ) à l’aide de la console de l’émulateur
qui est accessible par un protocole textuel sur le port 5554 :
> t e l n e t l o c a l h o s t 5554
Trying : : 1 . . .
t e l n e t : connect to address : : 1 : Connection refused
Trying 1 2 7 . 0 . 0 . 1 . . .
Connected to l o c a l h o s t ( 1 2 7 . 0 . 0 . 1 ) .
Escape c h a r a c t e r i s ’ ˆ ] ’ .
8
This document is shared by Jean-Ferdy Susini according to terms described in
the Creative Commons Attribution-ShareAlike 3.0 Unported License.
A n d r o i d C o n s o l e : t y p e ’ h e l p ’ f o r a l i s t o f commands
OK
help
A n d r o i d c o n s o l e command h e l p :
help | h |?
event
geo
gsm
cdma
kill
network
power
quit | exit
redir
sms
avd
window
qemu
sensor
p r i n t a l i s t o f commands
s i mu l a te hardware events
Geo l o c a t i o n commands
GSM r e l a t e d commands
CDMA r e l a t e d commands
k i l l the emulator instance
manage n e t w o r k s e t t i n g s
power r e l a t e d commands
quit control session
manage p o r t r e d i r e c t i o n s
SMS r e l a t e d commands
control v i r t u a l device execution
manage e m u l a t o r window
QEMU s p e c i f i c commands
manage e m u l a t o r s e n s o r s
t r y ’ h e l p <command>’ f o r command s p e c i f i c h e l p
OK
gsm c a l l 0140272000
Par exemple, ici nous simulons un appel entrant du 0140272000.
Cette interface est très utile pour simuler la saisie de texte au clavier (event text), la modification de
coordonnées GPS (event geo). . .
Pour tuer l’application, une solution consiste à utiliser adb pour tuer le processus :
>adb s h e l l ’ p s | g r e p ˆ [ uU ] ’
USER
PID
PPID VSIZE RSS
u0 a38
378
38
167268 33040
u0 a20
406
38
154624 20632
u0 a21
432
38
170576 41220
u0 a15
610
38
160776 18384
u0 a47
733
38
153888 20928
u0 a17
1116 38
152772 16432
u0 a14
1339 38
153892 21344
u0 a24
1356 38
162496 24912
u0 a0
1601 38
171160 22748
u0 a30
1632 38
151716 16164
u0 a33
1645 38
154924 17492
u0 a0
1942 38
176096 29360
u0 a48
2094 38
153788 20680
>adb s h e l l k i l l 2094
WCHAN
ffffffff
ffffffff
ffffffff
ffffffff
ffffffff
ffffffff
ffffffff
ffffffff
ffffffff
ffffffff
ffffffff
ffffffff
ffffffff
PC
40037 e b c
40037 e b c
40037 e b c
40037 e b c
40037 e b c
40037 e b c
40037 e b c
40037 e b c
40037 e b c
40037 e b c
40037 e b c
40037 e b c
40037 e b c
S
S
S
S
S
S
S
S
S
S
S
S
S
NAME
com . a n d r o i d . s y s t e m u i
com . a n d r o i d . i n p u t m e t h o d .
com . a n d r o i d . l a u n c h e r
com . a n d r o i d . e x c h a n g e
com . e x a m p l e . t e s t
com . a n d r o i d . l o c a t i o n . f u
com . a n d r o i d . g a l l e r y
com . a n d r o i d . mms
android . process . acore
com . s v o x . p i c o
com . a n d r o i d . q u i c k s e a r c h
com . a n d r o i d . c o n t a c t s
f r . cnam . d e p t i n f o . f i p . t p
Pour simuler le pivot de l’écran, il est possible d’utiliser le raccourcis clavier Ctrl+F12.
Modifier votre activité pour que celle puisse s’arrêter lorsque l’utilisateur la quitte.
9