Projet Android (LI260)

Download Report

Transcript Projet Android (LI260)

LI260 : description et informations pratiques
Android en quelques mots
Outils
Projet Android (LI260)
Nicolas Baskiotis
Université Pierre et Marie Curie (UPMC)
Laboratoire d’Informatique de Paris 6 (LIP6)
S2 - 2013
Au cœur d’une application
LI260 : description et informations pratiques
Android en quelques mots
Plan
LI260 : description et informations pratiques
Android en quelques mots
Outils
Au cœur d’une application
Outils
Au cœur d’une application
LI260 : description et informations pratiques
Android en quelques mots
Outils
Au cœur d’une application
Description de l’UE
Objectifs du cours
Apprendre :
• à faire un projet;
• à appréhender un nouvel environnement (Android);
• quelques nouveaux outils (design pattern, interface graphique,
IDE).
Ce n’est pas :
• un cours de Java (pré-requis obligatoire !!)
• un cours Android
• que du codage
Pré-requis
Java (LI230), savoir ce qu’est :
• une classe, une variable, un objet, une instance,
• une méthode (statique), un constructeur, l’héritage.
LI260 : description et informations pratiques
Android en quelques mots
Outils
Au cœur d’une application
Déroulement de l’UE
En pratique
• 1h45 de cours le lundi matin,
• 3h30 de TME le mercredi matin,
• web : http://webia.lip6.fr/˜baskiotisn (slides et
infos)
• email :[email protected]
(mettre dans le titre [LI260])
Évaluation
• CC : 70%
• un partiel sur machine (à mi-parcours)
• un rapport (à la fin)
• le code (à la fin)
• participation (tout le temps)
• Examen : 30%
• soutenance orale (à la fin)
• sur machine (à la fin)
LI260 : description et informations pratiques
Android en quelques mots
Plan
LI260 : description et informations pratiques
Android en quelques mots
Outils
Au cœur d’une application
Outils
Au cœur d’une application
LI260 : description et informations pratiques
Android en quelques mots
Outils
Au cœur d’une application
Android : pourquoi ?
Contraintes :
• léger
• indépendant du hardware
• intéragir sans interruption du système
• déploiement multiple (téléphone, tablette, voiture, micro-onde,
frigo . . . )
Avantages :
• open source
• gratuit
• flexible
• évolutif
• intuitif (Java)
LI260 : description et informations pratiques
Android en quelques mots
Outils
Au cœur d’une application
Historique
Quelques dates
2003 : création de la startup
2005 : rachat par Google
2007 : apparition de l’iphone d’Apple
2007 : Open Handset Alliance en
réaction
2008 : 1er smartphone sous Android
2010 : 1er smartphone Google sous
Froyo (2.2)
2011 : OS unifié pour tablette et
téléphone (ICS, 4.0)
2013 : 80% des téléphones vendus
sous Android
Janvier 2014
LI260 : description et informations pratiques
Android en quelques mots
Outils
Et concrétement ?
Plus simplement : une machine virtuelle,
Dalvik, sur laquelle tourne les applications.
Au cœur d’une application
LI260 : description et informations pratiques
Android en quelques mots
Dalvik et Java
Dalvik
• Machine virtuelle : couche
d’abstraction
• exécute des fichiers .dex
• mais n’est pas une JVM !
• une instance pour chaque
process
→ sandbox
→ espace protégé, stabilité du
système
• une application :
• fichiers .dex
• des ressources (images, textes,
vues, . . . )
• un manifest (liste de règles,
permissions, spécifications, . . . )
Outils
Au cœur d’une application
LI260 : description et informations pratiques
Android en quelques mots
Outils
Au cœur d’une application
En pratique ?
Beaucoup de différences...
• cycle de vie très différent, controlé par le système (pas de main,
mise en pause, destruction, . . . )
• mémoire allouée également par le système,
• communication entre applications par le système (sandbox)
• beaucoup d’éléments statiques (interfaces par exemple)
• IDE quasi-obligatoire.
LI260 : description et informations pratiques
Android en quelques mots
Plan
LI260 : description et informations pratiques
Android en quelques mots
Outils
Au cœur d’une application
Outils
Au cœur d’une application
LI260 : description et informations pratiques
Android en quelques mots
Outils
Au cœur d’une application
Outils de développement
SDK Android
• SDK Manager : permet de télécharger et de mettre à jour les
composants du SDK
•
•
•
•
•
la plateforme SDK
un émulateur : avd (android virtual device)
les documentations
l’API google (google maps et cie)
des exemples, . . .
• l’outil adb qui permet l’interaction avec le terminal (virtuel ou non)
Un IDE : eclipse (ou netbeans, . . . )
• aide à la programmation (si on sait déjà faire le boulot à la main !)
• génération automatique de fichiers
• installation et debugage facilités
• plugin (https://dl-ssl.google.com/android/eclipse)
LI260 : description et informations pratiques
Android en quelques mots
Outils
Au cœur d’une application
A propos de l’émulateur
AVD
• Très lent !
• fonctionnalités non-disponibles
• charge batterie
• vibreur
• téléphone, sms, . . .
• capteurs mouvement, capteurs luminosités, GPS, . . .
• rendu graphique pas toujours fidèle !
→ avoir un terminal réel simplifie grandement . . .
Alternative : AndroVM
• tourne sous virtual-box
• plus rapide, émule plusieurs fonctionnalités non supportées par
AVD.
LI260 : description et informations pratiques
Android en quelques mots
Plan
LI260 : description et informations pratiques
Android en quelques mots
Outils
Au cœur d’une application
Outils
Au cœur d’une application
LI260 : description et informations pratiques
Android en quelques mots
Outils
Au cœur d’une application
Application
Une application peut être :
• au premier plan : un jeu, le
téléphone, un navigateur
• en arrière plan : filtrage
d’appel, mise-à-jour
• intermittente : musique,
• un widget : horloge, météo
et avoir différents types de composants :
• activité : un programme au premier plan avec interface
• service : un programme sans interface
• fournisseur de contenu : partage de données avec d’autres
applications
• récepteur de diffusion : pour récupérer des informations
LI260 : description et informations pratiques
Android en quelques mots
Outils
Au cœur d’une application
Caractéristiques d’une application
Indépendance
• chaque appli tourne dans son propre process et dans sa propre
machine virtuelle,
→ a son propre environnement, ses propres ressources, ses
propres fichiers
Réutilisabilité
• chaque appli peut utiliser des composants d’autres applis :
→ le système doit pouvoir lancer un bout d’appli et non sa totalité
→ pas de main !
LI260 : description et informations pratiques
Android en quelques mots
Outils
Au cœur d’une application
Activité
• une activité : une interface pour une action précise (équivalent
use case en modélisation)
• chaque activité indépendante
• une appli peut être composée de multiples activités
• chaque activité peut lancer une autre activité
• nécéssite de définir le point d’entrée, la première activité à lancer
LI260 : description et informations pratiques
Android en quelques mots
Outils
La dure vie d’une activité
États principaux
• active
• en pause
• arrêtée
• terminée
Au cœur d’une application
LI260 : description et informations pratiques
Android en quelques mots
Outils
Au cœur d’une application
Le fichier Manifest
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, . . .
LI260 : description et informations pratiques
Android en quelques mots
Fichier XML
• une manière de formatter du texte
• définit une structure hiérarchique
• à l’aide de balises emboitées et d’attributs
<?xml version="1.0" encoding="utf-8"?>
<cursus>
<cours semestre="S1" filière="Info">
<id>LI260</id>
<titre>Projet</titre>
<ects>12</ects>
</cours>
<cours semestre="S2">
<id>LE10</id>
<titre>Anglais</titre>
<obligatoire val="true"/>
</cours>
</cursus>
Outils
Au cœur d’une application
LI260 : description et informations pratiques
Android en quelques mots
Outils
Au cœur d’une application
Interface en java
Une interface :
• définit un
comportement qui
devra être implémenté
par une classe
• contient des méthodes,
toutes abstraites
• ne peut être instanciée
• ne contient pas de
constructeur
• ni de variables
d’instances
• peut contenir des
champs static
final
• peut étendre d’autres
interfaces
Par exemple
interface Photo {
Image takePicture();
void setFlash(boolean b);}
interface GPS {
Point getPosition();
void turnOn(boolean b);}
abstract class Phone {
abstract void call(int number);
abstract void answer();}
class MySmartPhone extends Phone
implements Photo, GPS {
Image takePicture(){...}
void setFlash(boolean b){...}
Point getPosition(){...}
void turnOn(boolean b){...}
void call(int number){...}
void answer(){...}
}