0% ont trouvé ce document utile (0 vote)
172 vues61 pages

Cours Android

Transféré par

The Kid
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 PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
172 vues61 pages

Cours Android

Transféré par

The Kid
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 PDF, TXT ou lisez en ligne sur Scribd

Développement d’Application Android

Mr BELLO Daouda Adébayo


Ingénieur en développement d’application

1
Objectif du cours

➔ Comprendre l’architecture du système Android

➔Comprendre l’organisation d’une application


Android

➔ Développer et déployer des applications


natives Android

➔ Connaître les bonnes pratiques du


développement d’application Android
2
Référence

➢L’art du développement Android par Mark L.


Murphy

➢Professional NFC application development for


android by Vedat

➢https://fr.wikipedia.org/wiki/Android

➢Android developer : http://developer.android.com/


index.html

3
Contrainte

➢Tenir compte du matériel :

➢Un processeur faible; Une RAM limitée;

➢Plusieurs type de résolutions de l’écran;

➢Des coûts élevés de transferts de données;

➢Des connexions réseau moins stables;

➢Efficacité : optimiser votre code afin qu’il soit rapide et réactif.

La performance; La réactivité; La sécurité;La


transparence; 4
Pourquoi Android

Plusieurs langages :

Multi OS

5
Pourquoi Android

Plusieurs outils :

Déploiement facile (multi plateforme)

6
Historique et Définition
➢Android est un système d’exploitation OPEN SOURCE
pour terminaux mobiles (smartphones, PDA, tablet, …)

➢Conçu à la base par une startup (Android) et rachetée par


Google en 2005

➢Pour la promotion de ce système Google a fédéré autour


de lui une trentaine de partenaires réunis au sein de l’Open
Handset Alliance (OHA)

➢C’est aujourd’hui le système d’exploitation mobile le plus


utilisé à travers le monde

7
Version d’Android

8
Plateforme Android
Le système d’exploitation Android est basé sur
Linux. Au plus bas niveau de ce système se trouve
un noyau Linux destiné à la gestion du matériel
comme :
➢Drivers de ces terminaux,
➢La gestion de la mémoire,
➢La gestion des processus
➢L’accès au réseau
➢…

9
Plateforme et composante

10
Android pour tous

Développeurs :
◦ Pas besoin de licence
◦ Simple et intuitifs
◦ Modulables
Constructeurs :
◦ Tous les constructeurs peuvent utiliser Android

◦ Un ensemble de services sont déjà disponibles dans le


core

◦ API disponible pour les accès de bas niveau

11
Programmation en Android

Android n’est pas un langage de


programmation

Pour développer sous Android, il existe deux


possibilités :
◦ Développement native (Java ou Kotlin)

◦ Développement hybride

12
Programmation en Android

 Sources Java (ou Kotlin) compilés pour une machine


virtuelle appelée «ART », amélioration de l’ancienne
machine « Dalvik » (versions 4.4).
 Fichiers appelés ressources :
• format XML : interface, textes. . .
• format PNG : icônes, images. .
 Manifeste = description du contenu du logiciel
• fichiers présents dans l’archive
• demandes d’autorisations
• signature des fichiers, durée de validité,

13
Programmation en Android

Tout cet ensemble est géré à l’aide d’un IDE (environnement


de développement) appelé Android Studio qui s’appuie sur
un ensemble logiciel (bibliothèques, outils) appelé SDK
Android

14
Android et Java
➢Le SDK Android est développé en Java  Permet de
développer des applications avec un haut niveau
d’abstraction
➢Android a sa propre machine virtuelle (DVM)
➢Ne supporte pas toutes les fonctionnalités de la JRE
➢Une application Android ne peut pas s’exécuter sur
une machine virtuelle Java
➢Une application Java (native) ne peut pas
s’exécuter sous Android
➢Android dispose de sa propre machine virtuelle

15
Android et Kotlin
➢C’est un langage de programmation concurrent et
symbiotique de Java : un programme Kotlin est
compilé dans le même langage machine que Java, un
programme Kotlin peut utiliser les classes Java et
réciproquement. On peut mélanger des sources Java
et Kotlin dans une même application
➢Kotlin est promu par Google parce qu’il permet de
développer des programmes plus sains. Par
exemple, Kotlin oblige à valider chaque appel de
méthode sur des variables objets pouvant valoir null,
ce qui évite les NullPointerException.

16
Vérification des variables objet
En Java :
void getNomComplet(Personne p) {
return p.getPrenom()+" "+p.getNom();
}
private Personne p1 = getPersonne(); // retourne null
System...println(getNomComplet(p1)); // NullPointerException

En Kotlin :
fun getNomComplet(p: Personne): String {
return p.prenom+" "+p.nom
}
var p1: Personne = getPersonne() // retour null interdit
println(getNomComplet(p1)) // ne se compile pas

17
Android et développement hybride

Android supporte le développement hybride


◦ Titanium
◦ Phonegap
◦ Neomad

18
Dans ce cours

Framework et langage
◦ Android SDK
◦ Java
◦ XML
Outils
◦ Android Studio

19
L'environnement Android Studio

Depuis mi-2015, il faut utiliser Android Studio (IDE IntelliJ


ayant subi l'intégration de fonctionnalités de développement


Android).

20
Avantage d’Android Studio

● meilleur intégration du SDK dans Android Studio


● puissance de l'IDE IntelliJ

21
Inconvénient Android Stutio

● Lourdeur de l'IDE IntelliJ


● Moins d'outils standalone (gestion des émulateurs, du SDK)
● Obligation de s'habituer à un autre IDE
● Nouvelle architecture des répertoires
● Meilleur gestion des dépendances avec gradle

22
Android SDK

Outil de développement d’application Android


Fournit un environnement unifié permettant de
développer « facilement » des applications Android
Mise à jour automatique via le SDKManager Prise en
charge de toutes les versions d’Android Plusieurs Outils
et API
◦ Android xx
◦ Google API xx

◦ Outils d’administration, de débogage …

23
Installation de Android Stutio

24
SDK sur Androi Studio

25
Dossiers du SDK

Le gestionnaire installe plusieurs Go dans différents sous-


dossiers :

➢SDK Tools : indispensable, contient le gestionnaire,

➢SDK Platform-tools : indispensable, contient adb,

➢SDK Platform : indispensable, contient les librairies,

➢System images : pour créer des AVD,

➢Android Support : divers outils pour créer des applications,

➢Exemples et sources.
26
Compilation en Android

➢La compilation sous Android avec le plugin ADT


est automatisée.

➢Android SDK utilise aussi ANT pour automatiser la


compilation.

➢Android 2.2 Froyo intégre le compilateur JIT(Just


in Time compiler) stable.

27
Dalvik et ART

●[Dalvik] est le nom de la machine virtuelle open-source


utilisée sur les systèmes Android. Cette machine virtuelle
exécute des fichiers .dex, 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, Android dispose d'ART qui compile
l'application au moment du déploiement (Ahead-of-time
28
compilation).
Compilation en Android

29
Composante d’une application
Android
Les applications Android sont constitués de composants à
couplage
Les composantes sont liées par un Manifest qui décrit chacun
d’eux ainsi que les interactions entre elles.

30
31
Composante d’une application
Android

1. Activities : Couche de présentation de l’application;


2. Services : les composants qui tournent en arrière plan;
3. Content providers : Partage de contenus entre
applications;
4. Intents : Framework de communication interapplications.
5. Broadcast receivers : Consommateurs des messages
diffusés par les intents.
6. Widgets : Composant d’application visuels;
7. Notifications :Framework de notifications aux utilisateurs

32
Type de Projet Android

Il existe trois catégories de projets sous Android:


Application Android: Type primaire des applications
Android destiné à être executé directement sur un
terminal
Test Projects: Projet de test d’une application
Android
Library project: Projet de types librairies, equivalents à
une API exposant certaines fonctionnalités pouvant
être réutilisé par d’autres applications.

33
Type de Projet Android

1.Application de premier plan: c’est une application


qui est utilisable uniquement lorsqu’elle est visible et
mise en suspens lorqu’elle ne l’est pas;
2.Application d’arrière plan (Services): N’interagit
pas avec l’utilsateur, elle s’exécute en tâche de
fond.
3.Intermittente : c’est une application qui présente
une certaine interactivité mais effectue l’essentiel de
sa tâche en arrière plan. Ces applications notifient
l’utilisateur lorsque cela est nécessaire;
4.Widget : ces applications représentées sous forme
d’un widget de l’écran d’accueil;

34
Structure d’une application Android

35
Android Manifest

Chaque projet Android contient un fichier aux


format XML nommé manifeste
(AndroidManifest.xml).

Le manifeste permet de définir la structure et les


métadonnées d’une application, ses composants
et ses prérequis.

Il contient des balises pour chacun des


composants qui constituent l’application
(Activities, Services, Content Providers et
Broadcast Receivers)

36
Android Manifest

Le manifeste fournit aussi des attributs


permettant de spécifier les métadonnées d’une
application (Exemple son icône, son thème) .
Il contient également les paramètres de
sécurité, les tests unitaires et la définition des
prérequis matériels et de plateforme.

Le fichier manifeste (AndroidManifest.xml) se


trouve à la racine du projet.

37
Android Manifest

38
Activité (Activity)

Une activité décrit les actions que peuvent


effectuer un utilisateur. Elles sont
destinées à interagir avec l’utilisateur
Classe héritant de la classe Activity d’Android
Doit être déclarée dans le Manifest pour
être visible par le système
Ne peut être instanciée directement, cette
tache se fait par le système

Activity a = new Activity(); A ne pas faire !!!


L’instanciation d’une activité se fait par
les intentions
39
Activity: cycle de vie
Une bonne compréhension du cycle de vie de
l’Activity permet de garantir que votre
application satisfait respecte les bonnes
pratiques de développement Android.
1.L’état de chaque Activity est déterminé par sa
position dans la pile des Activities:
2.Active : Quand l’Activity est au sommet de la
pile;
3.En pause : Si l’Activity est visible sans avoir
le focus;
4.Arrêtée: Lorsque l’Activity n’est plus visible;
5.Inactive : Quand elle est tuée ou qu’elle n’est
pas démarrée;
40
Activity: cycle de vie

41
public class ExampleActivity extends
Activity {

@Override
public void onCreate(Bundle
savedInstanceState) {
super.onCreate(savedInstanceState);
// The activity is being created.
}
@Override
protected void onStart() {
super.onStart();
// The activity is about to become visible.
} 42
@Override
protected void onResume() {
super.onResume();
// The activity has become visible (it is now
"resumed").
}
@Override
protected void onPause() {
super.onPause();
Another activity is taking focus (this activity is
about to be
"paused").
}
}

43
Contexte (context)
➢Interface fournissant des informations globales sur
l’environnement de l’application:

➢C’est une classe abstraite implémentée par le système


Android

➢Il permet d’accéder aux principales ressources de l’application

➢Obtenir le contexte courant d’une application

➢Context c = getApplicationContext(): Contexte global de l’application

➢Context c = Activity.this / getContext(): Contexte d’une activité ou

➢un service
44
Resolution des Intents

Il existe deux principaux types d’intentions :

 Explicite : Spécifie les composants qui


précisent la classe exacte qui doit être
exécutée (setComponant (nom) ou
setClass(context, class))

 Implicite : Ne spécifie pas le composant mais


fournit assez d’informations permettant au
système de déterminer les composants
nécessaires correspondant à cette action.

45
Initialisations des Intents

Intent i = new Intent();


Intent i = new Intent(action:String)

Intent i = new Intent(action:String, uri:Uri)

Intent i = new Intent (context:Context,


class:Class<?>)

46
Les paramètres des Intents

Les intentions peuvent être utilisées pour


transiter des données entre deux activités
putExtra(nom:String, valeur:Object)
getxxxExtra(nom:String)

dépend du type de données: Int, String, StringArray

47
Action sur les Intents

addCategory(category: String)

setDataAndType(uri:Uri, mime:String)

48
Quelques valeurs prédéfinis

Actions

 android.intent.action.CALL appel téléphonique

 android.intent.action.EDIT affichage de données pour


édition par l’utilisateur
 android.intent.action.MAIN activité principale d’une
application

 android.intent.action.VIEW affichage de données

 android.intent.action.WEB_SEARCH recherche sur le WEB

49
Quelques valeurs prédéfinis
Catégories
 android.intent.category.DEFAULT activité
pouvant être lancée explicitement
 android.intent.category.BROWSABLE
peut afficher une information
désignée par un lien
 android.intent.category.LAUNCHER
activité proposée au lancement par
Android
 android.intent.category.TAB activité
associée dans un onglet d’interface
(TabHost)

50
Lancement d’une activité Intent
Lancer explicitement une activité Intent
demarre = new Intent(context,
nomActiviteALancer.class);
startActivity(demarre);

51
Première application

52
Objectif

 Création d’une application « HelloWorld » avec un assistant,

 Tour du propriétaire,

 Exécution de l’application,

 Mise sous forme d’un paquet.

Android Studio contient un assistant de création d’applications


L’apparence change d’une version à l’autre du SDK.
53
Choix de la version

Chaque version d’Android, dénotée par son API level, ex: 25,
apporte des améliorations et supprime des dispositifs obsolètes

Toute application exige un certain niveau d’API :


Minimum SDK : il faut au moins cette API car on utilise certaines
classes et méthodes absentes des précédentes APIs,

Il y a aussi deux notions à connaître :

 Target SDK : l’application sera testée et marchera


correctement jusqu’à ce niveau d’API,

 Compile With : c’est le niveau maximal de fonctionnalités


qu’on se limite à employer. Si on fait appel à quelque chose de
plus récent que ce niveau, le logiciel ne se compilera pas.

54
55
Choix du type d’application

56
Points à configurer

L’assistant demande ensuite plusieurs informations :


 Nom de l’application, ex : HelloWorld,
 Nom de la classe principale : MainActivity,
 Nom du layout de la classe principale : activity_main2,
 Nom du layout du menu principal : menu_main.
 Tout peut être renommé ultérieurement, voir refactor/rename.
Le package du logiciel a été défini dans le premier écran.

57
Noms des packages et classes

58
Résultat de l’assistant

L’assistant a créé de nombreux éléments visibles dans la


colonne de gauche de l’IDE :
 manifests : description et liste des classes de l’application
 java : les sources, rangés par paquetage,
 res : ressources = fichiers XML et images de l’interface, il
y a des sous-dossiers :
layout : interfaces (disposition des vues sur les écrans)
menu : menus contextuels ou d’application
mipmap et drawable : images, icônes de l’interface
values : valeurs de configuration, textes. . .
Gradle scripts : c’est l’outil de compilation du projet.

59
60
Éditeur du manifeste

61

Vous aimerez peut-être aussi