Android: Les Bases
Assane SECK
Ingénieur-Informaticien
1
Sommaire
Hitorique
Architecture
Avantage
Dalvik VM / Android Runtime
Composants
Activity
CONTENT PROVIDERS
INTENTS
SERVICES
Structure projet Android
AndroidManifest
Versionning
Emulateurs
2
Historique
En 2003 était le nom d’une PME, rachetée par Google en 2005
Objectif de OS plus intelligent: Interaction et Géolocalisation
En Janvier 2007, Apple dévoilait l'iPhone
En Novembre 2007 l'Open Handset Alliance (OHA) avec 35
Entreprises dont Google l’Initiateur
Le logiciel vedette est appelé Android.
3
Architecture
4
Avantages
Open source
Le contrat de licence pour Android respecte les principes de l'open source, c'est-à-dire que
vous pouvez à tout moment télécharger les sources et les modifier selon vos goûts
Gratuit (ou presque)
Facile à développer
Toutes les API mises à disposition facilitent et accélèrent grandement le travail. Ces APIs sont
très complètes et très faciles d'accès
Facile à vendre
Le Play Store (anciennement Android Market) est une plateforme immense et très visitée ; c'est
donc une mine d'opportunités pour quiconque possède une idée originale ou utile
Flexible
Le système est extrêmement portable, il s'adapte à beaucoup de structures différentes. Les
smartphones, les tablettes, la présence ou l'absence de clavier ou de trackball, différents
processeurs... On trouve même des fours à micro-ondes qui fonctionnent à l'aide d'Android !
5 Ingénieux
Dalvik VM
La plus part des téléphones portables ont des mémoires inférieures à
des ordinateurs
JVM optimisée pour mobile
La Dalvik VM execute de fichiers .dex, contrairement à des fichiers
.class avec une JVM normale (Compilation a chaque execution)
Dan Bornstein et son équipe chez Google
L’ART (Android Runtime) compilation juste à l’installation
Dalvik est un petit village au nord de l’Islande
6
Structure d’un projet Android
7
Composants
Activity
Content providers
Intents
Services
Broadcast Receivers
Autres
Stockage, services système, réseau, multimédia, GPS,
phone services,...
8
Activity
Partie importante de l’interface graphique Android
Peut être considéré comme un «dialogue» ou une
«fenêtre»
9
CONTENT PROVIDERS
Niveau d’abstraction pour données stockées sur le device
Est accessible à travers différentes applications
L’utilisation est recommandée
10
INTENTS
Messages système qui forment la «colle» d’Android
Un message que l’on passe à Android pour lui dire "je
veux que tu fasses... quelque chose (Ouvrir une activité,
etc)
Peut être utilisé pour:
Envoyer et recevoir des event ou actions
Changements de matériels, d’état, données entrantes,
événement,...
Lancer des activités
Il est possible de réagir aux intents
11
SERVICES
Les activity ont une durée de vie courte
Les services ont une durée de vie plus longue
S’éxecute indépendamment d’une Activity
Exemples:
Mise à jour RSS
Lecture de musique en fond
12
Autres...
Stockage: fichiers packagé avec l’application (icones, fichiers
d’aide,...),
bases de données et fonctionnalités pour stockage de fichier sur
support SD ou autre.
Réseau: les devices sont souvent connectés. Android dispose de
différents moyens d’utiliser ceci au travers de sockets, HTTPClient
ou le navigateur webkit.
Multimédia: playback et enregistrement audio/video, prise de
photos,...
Localisation: GPS, réseau, passif...
Services téléphoniques: appels, SMS, etc.
13
AndroidManifest.xml
Fichier XML qui décrit l’application.
Quels composants sont utilisés et comment sont-ils
interconnectés
Activities
Services
...
14
bin/
Contient l’application une fois compilée
bin/classes/ contient les classes Java
bin/classes.dex contient l’exécutable compilé depuis les
classes Java
bin/yourapp.ap_ contient les ressources au format ZIP
bin/yourapp.apk est l’application effective.
15
gen/
Code source généré par les outils Android
Forme le lien entre les ressources et le code Java
R.java : Ce fichier est automatiquement généré par le
SDK Android à chaque pré-compilation.
BuildConfig.java: Sera automatiquement mis à jour lors
de la création de la version finale de l’Apk afin de
desactiver les logs.
16
libs/
Librairies Java (JARs)
Fichiers .so Utilisé principalement avec Ant
Mettre toutes librairies éventuelles dans ce répertoire
pour une meilleure réorganisation
17
src/
Code source Java de l’application
Ce dossier contient les sources de votre application
(code JAVA) et les packages.
com.example.projet: un package de votre application.
Vous pouvez avoir plusieurs packages dans votre
application.
MainActivity.java : Notre activité principale dans cet
exemple.
18
res/
Resources du projet
Fichiers statiques package dans l’application
res/drawable-xxx/ : Contient vos images dans les
différentes résolutions (basse, moyenne, haute et trés
haute).
res/layout/ : spécifications interface graphique
res/menu/ : spécifications XML pour les menus
res/values/ : strings, dimensions, couleurs et autres
ic_launcher.png : L’icône de votre application.
assets : Contient des données non internationalisées qui
seront utilisées dans votre application (images, vidéos,
licence…etc).
19
Qu’est-ce le manifest ?
L’élément racine de l’application
Déclaration d’activités, services,...
Comment ces différents morceaux s’interconnectent
Exemple: launcher
20
Exemple basique de manifest
21
Element root du manifest
Package de l’application
Forme la base de l’application
Il est possible de référencer relativement les classes en utilisant un point
Example : .SampleActivity
Le package name doit être unique. L’Android Market n’accepte pas les
applications qui ont le même package name.
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.projet">
...
</manifest>
22
Permissions, applications et
instrumentations
uses-permission : quelles sont les permissions que
l’application utilise ?
permission : de quelles permissions l’application a-t-elle
besoin?
instrumentation : code qui devrait être exécuté à
certains moments clés
(activities, logging, JUnit, etc.)
uses-library : librairies supplémentaires
uses-sdk : quel SDK est utilisé?
dernier élément important: l’élément application
23
Permissions, applications et
instrumentations
24
Element application
Peut contenir différentes activity
android:name classée, en partant du package name (avec
un point) ou en utilisant le nom entier
android: label titre pour l’activity
intent-filter: sous quelle condition l’activity peut-elle être
lancée
action: La classe de traitement pour la condition
category: Spécifie la catégorie de l’action
25
Element application
26
Element application
Autres:
receivers : des non-activités qui doivent être appelées à
un moment clé, en fonction d’un intent. Exemple:
réception d’un SMS.
providers : Un contentProvider sert à stocker et
récupérer des données et ainsi les rendre accessibles à
toutes les applications. Partager des données entres
différentes applications. Exemple: la gestion des contacts
services: Si votre application souhaite effectuer des
opérations ou des calculs en dehors de l’interaction
27utilisateur. Exemple: Surfer sur le net et lire son
Element uses-sdk
Android évolue
Chaque SDK a des nouvelles fonctions, classes, paramètres,...
Ceux-ci ne peuvent pas être utilisés par des précédentes version SDK
Ce tag assure que l’application est exécutée sur un device d’une certaine
version ou plus haute
minSdkVersion: API niveau minimum supporté
targetSdkVersion: API niveau ciblé
maxSdkVersion: API niveau maximum supporté (optionel)
28
USES-SDK
29
Element uses-feature
Décrit une caractéristique matérielle ou logicielle utilisée
par l’application
Nécessaire pour indiquer quels sont les pré requis pour
une application
Bluetooth, appareil photo,...
Contient
android:name : nom du feature
android:required : si le feature doit être présent ou pas
Valeur par défaut de android:required est true
30
VERSIONNER SON APPLICATION
Se fait sur l’élément manifest
android:versionCode : Numéro integer incrémenté à
chaque nouvelle version
android:versionName : Nom pour cette version
(alphanumérique)
1.1
2.0b
...
31
CIBLES/EMULATEURS
AVD: «Android Virtual Device»
Window-Android Virtual Device Manager
32
CIBLES/EMULATEURS
AVD: «Android Virtual Device»
Créez un AVD d’un API cible de votre choix
33
CIBLES/EMULATEURS: POINTS
D’ATTENTION
Tester sur un maximum de cibles différents
Quand une nouvelle cible est disponible, testez votre
application dessus
Les émulateurs sont bien, mais parfois il faut mieux tester
sur un vrai téléphone
Vitesses différentes dans émulateur (dues aux
caractéristiques de la machine et du type d’émulateur)
34
CREER UNE APPLICATION ANDROID
35
Genymotion
Genymotion
Genymotion
Genymotion
Genymotion
Genymotion
Genymotion
Genymotion
43
Genymotion
44
Genymotion
45
Genymotion
46
Genymotion
Activé le compte Genymotion depuis son email de création de compte
Lancé le genymotion qui était sur le Bureau
47
Genymotion
48
Apk location
49