Vous êtes sur la page 1sur 34

I n s t i t u t S u p é r i e u r d e s E t u d e s Te c h n o l o g i q u e s d e J e n d o u b a

Cours Développement Mobile Android


C HAPITRE 1 Amir Souissi

DÉCOUVERTE DU
DÉVELOPPEMENT ANDROID
Présentation Générale, Emulateur, Pile Logicielle Android,
Application Android, Concepts de Base du Développement Android

AMIR SOUISSI ©2018 1


www.amirsouissi.wixsite.com/amirsouissi
P RÉSENTATION G ÉNÉRALE
Découverte du Développement Android

AMIR SOUISSI ©2018 2


www.amirsouissi.wixsite.com/amirsouissi
Historique d’Android
Présentation générale
 2003 : Android est créé par la startup Android (même nom que son produit)
Son objectif était de créer un OS basé sur le noyau Linux pour les appareils photos

 2005: Google a racheté la société et a commencé à élargir le concept et cibler les smartphones
Son Objectif à l’époque était de concurrencer les OS mobiles tels que Windows Mobile, BlackBerry OS,
Symbian OS, …

 2007: Open Handset Alliance = Association entre Google et plusieurs entreprises des nouvelles
technologies (Fabricants de matériels (Samsung, Sony, HTC …) , opérateurs téléphoniques, …)
Android est devenu une plateforme pour les appareils mobiles en général: smartphones, tablettes tactiles,
TV, voitures, montres, …

 2017: Android est le OS mobile le plus utilisé au monde devant iOS de Apple

AMIR SOUISSI ©2018 3


www.amirsouissi.wixsite.com/amirsouissi
Caractéristiques Matérielles des Appareils
Présentation générale
L’environnement matériel ‘Android est très vaste et varié

Phones Tablettes Android TV Android wear Android auto

Hétérogénéité sur plusieurs plans :


• Caractéristiques physiques : différents chipsets, mémoires, …
• Connectivité : certains appareils sont connecté à Internet d’autres pas, Bluetooth, wifi, …
• Taille des écrans : notion de densité = résolution (en dpi)
Téléphone (haute densité 320 dpi) ≠ table e (basse densité 160 dpi)

AMIR SOUISSI ©2018 4


www.amirsouissi.wixsite.com/amirsouissi
Versions OS Android
Présentation générale
Versions commerciales : 2.2.3 , 4.0.4 , …, 5.1 , 6
Versions pour développeurs : API level : 10, 15, …, 22, 23
Dans la documentation officielle d’Android, pour chaque fonction listée on nous indique à partir de quelle
API level elle est disponible.
Quelle API level choisir ? Quelle est la version minimale acceptée?
 Les gens qui ont un API level inférieur à celui utilisé dans l’application ne peuvent pas l’installer sur
leurs appareils et ne verront même pas l’application sur le Store.

Utiliser un API level avancé !


Av : plus simple à développer (on n’a pas à gérer la compatibilité des appareils)
Inc : on perds des utilisateurs (moins de part de marché possible)

AMIR SOUISSI ©2018 5


www.amirsouissi.wixsite.com/amirsouissi
Environnement de Développement (1)
Présentation générale
Android Studio est un IDE gratuit disponible sur son site officiel
(https://developer.android.com/studio/index.html)
Les caractéristiques minimales requises pour installer et utiliser
Android Studio se trouvent en bas de la page de téléchargement.

Une connexion Internet est requise à l’installation.


Android Studio rassemble plusieurs outils qui permettent de :
• coder et gérer l’organisation du projet de l’application,
• gérer la mise à jour de tout le kit de développement,
• tester les applications sur des émulateurs ou appareils,
• créer l’APK final qu’on pourra envoyer sur le Play Store.

Un pourcentage sur les appareils utilisant une version donnée à travers
le monde est disponible sur la page dashboard du site officiel d’Android
(https://developer.android.com/about/dashboards/index.html)

AMIR SOUISSI ©2018 6


www.amirsouissi.wixsite.com/amirsouissi
Environnement de Développement (2)
Présentation générale
Java : Langage utilisé pour le de développement des applications Android
 Il faut commencer par installer le JDK sur votre machine
Installer Android Studio

Remarque :
SDK Android : (Software
Development Kit) crée des Avant l’apparition d’Android
applications pour Android à Studio, les applications
partir de Java. Android était réalisées à
l’aide de l’IDE Eclipse auquel
on rajoute le plugin ADT
(Android Development Kit)
AVD : un émulateur de
téléphone Android qui permet qui permet d’intégrer le SDK
de tester l’application même si Android à Eclipse.
on ne possède pas d’appareil
Android

AMIR SOUISSI ©2018 7


www.amirsouissi.wixsite.com/amirsouissi
Environnement de Développement (3)
Présentation générale
Le SDK Android: est un kit de développement fournit par Google pour créer les applications Android et est
composé :
• Des API : ensemble de classes regroupant des fonctions mises à disposition des développeurs
• Des exemples de code
• De la documentation
• Des outils (dont un émulateur) pour couvrir toutes les étapes du cycle de vie de l’application
Le SDK Manager est un outil qui permet de gérer et mettre à jour les outils d’Android. SDK Manager est
accessible :
• A partir du chemin C:\users\Nom_User\AppData\Local\Android\sdk (Windows 7)
• A partir du menu d’Android Studio : Configure > SDK Manager
• A partir de la barre d’outils

AVD Manager SDK Manager

Le AVD Manager est un outil pour la gestion des AVD (Android Virtual Device) ou bien Emulateurs. Ce sont
des configurations matérielles et logicielles d’appareils mobiles virtuels.

AMIR SOUISSI ©2018 8


www.amirsouissi.wixsite.com/amirsouissi
Configurer le SDK (1)
Présentation générale
SDK Manager
SDK Platform : définit les versions Android qu’on
souhaite installer : (par exemple on choisit la
version 6.0)
 Android 6.0
 Google APIs
 Android SDK Platform 23

SDK Tools : définit des outils complémentaires


pour chacune des versions Android:
 Android SDK Build Tools
 Android SDK Platform-Tools
 Android SDK Tools (émulateurs)
 Android Support Repository
 Google Repository
 Intel x86 Emulator Accelerator (HAXM
installer)

AMIR SOUISSI ©2018 9


www.amirsouissi.wixsite.com/amirsouissi
Configurer le SDK (2)
Présentation générale
Composants Essentiels
 Dans SDK Platform
Google APIs
Android SDK Platform
 Dans SDK Tools
Build Tools : outils de compilation (gradle) et tous les outils permettant de créer un APK à partir du code source et
des ressources.
Platform-Tools : (ADB) permettent de manipuler émulateurs et téléphones depuis une ligne de commande (pour
installer/désinstaller les APK, gérer les appareils depuis l’ordinateur)
SDK Tools : plusieurs outils du SDK notamment les émulateurs

Composants Optionnels (Recommandés)


Android Support Repository : Librairie fournie en plus du système par les développeurs Android intégrant les
fonctionnalités développés dans les versions récentes. Le but est de gérer la compatibilité avec des anciennes
versions du système. Permet d’installer localement les dépendances dont on a besoin dans les projets.
Google Repository: Librairies Google pour se servir des services Google
Intel x86 Emulator Accelerator : améliore la performance des émulateurs mais ne fonctionne que pour les
processeurs intel (si on ne travaille pas directement sur un appareil physique)
 Simplifier la tâche de développement mais occupe plus d’espace sur le DD.

AMIR SOUISSI ©2018 10


www.amirsouissi.wixsite.com/amirsouissi
AVD Manager
Présentation générale

Créer un nouveau émulateur (AVD) Actions qu’on peut réaliser sur les AVD:
Lancer l’AVD
Deux AVD créés qui simulent Modifier l’AVD
des téléphones Nexus.

AMIR SOUISSI ©2018 11


www.amirsouissi.wixsite.com/amirsouissi
E MULATEUR
Découverte du Développement Android

AMIR SOUISSI ©2018 12


www.amirsouissi.wixsite.com/amirsouissi
Créer un AVD
Emulateur
La majorité des fonctionnalités peuvent être testés sur l’émulateur avant de les tester sur un appareil
physique.
 Sous Windows, l’émulateur dépend d’un driver kernel spécial appelé HAXM, pour la virtualisation
hardware.
La création d’un nouveau émulateur passe par le AVD Manager.

Version de l’OS Android qui sera installée sur


l’appareil virtuel

Téléphone Nexus avec un écran de 5,2 pouces

AMIR SOUISSI ©2018 13


www.amirsouissi.wixsite.com/amirsouissi
Lancer un AVD
Emulateur
Le lancement de l’émulateur est un peu lent.
• Une fois lancé il est conseillé de le laisser en exécution pour ne pas perdre du temps à son re-lancement.

On peut interagir avec l’application sur l’émulateur en utilisant l’écran ou les boutons de navigations.
Il exécute la pile Android complète afin de tester et debugger les applications sur différentes configurations
matérielles et logicielles.

Son lancement peut se faire par :


• Bouton Play de AVD Manager
• Bouton Exécuter d’Android Studio

AMIR SOUISSI ©2018 14


www.amirsouissi.wixsite.com/amirsouissi
P ILE LOGICIELLE A NDROID
Découverte du Développement Android

AMIR SOUISSI ©2018 15


www.amirsouissi.wixsite.com/amirsouissi
Principaux Composants
Pile Logicielle Android

Couche Application

Couche Framework
Librairies Android
C/C++ Runtime

Noyau Linux

AMIR SOUISSI ©2018 16


www.amirsouissi.wixsite.com/amirsouissi
Couche Applications
Pile Logicielle Android

Android est fourni avec un ensemble de programmes de base = applications natives


• les courriels,
• les SMS,
• le téléphone,
• le calendrier,
• les photos,
• le Web,
• ….

Ces applications sont développées à l'aide du langage de programmation Java.


Pour l'utilisateur final, c'est la seule couche accessible et visible.

AMIR SOUISSI ©2018 17


www.amirsouissi.wixsite.com/amirsouissi
Couche Framework
Pile Logicielle Android

Fournit les classes nécessaires à l’application pour la gestion des ressources de l’appareil.
C’est une abstraction pour les accès au matériel pour une plateforme de développement ouverte: Permet
ainsi aux développeurs de créer des applications riches.
Les développeurs sont libres de profiter :
• du matériel périphérique,
• les informations de localisation d'accès,
• exécutez les services d'arrière-plan,
• définir des alarmes,
• ajouter des notifications de la barre d'état,
• ….

AMIR SOUISSI ©2018 18


www.amirsouissi.wixsite.com/amirsouissi
Les Librairies
Pile Logicielle Android

C’est l’ensemble de bibliothèques C/C++ utilisés par les différents composants de la plateforme Android.

Sont accessibles aux développeurs par l’intermédiaire du Framework à travers des appels aux fonctions
C/C++ plus rapide à l’exécution que les méthodes Java.

La technologie JNI (Java Native Interface) permet l’échange entre le code java et le code C/C++.

AMIR SOUISSI ©2018 19


www.amirsouissi.wixsite.com/amirsouissi
Android Runtime
Pile Logicielle Android

Android n’utilise pas une machine virtuelle Java (JVM) mais sa propre VM appelée Dalvik.
A partir de Lollipop (version 5.0 = API 21), Google remplace Dalvik par une nouvelle VM plus optimisée
appelée ART.
Chaque application Android s'exécute dans son propre processus, avec sa propre instance de VM.
L’Android Runtime contient les librairies de fondamentales pour la machine virtuelle.

AMIR SOUISSI ©2018 20


www.amirsouissi.wixsite.com/amirsouissi
Le Noyau Linux
Pile Logicielle Android

Android repose sur le noyau Linux (version 2.6) qui joue le rôle d’abstraction entre le logiciel et le matériel.
 Le kernel effectue les tâches de bas niveau tels que :
• La gestion de la mémoire et des processus,
• La gestion du matériel, des pilotes et de l’énergie,
• La gestion de la sécurité, du réseau et d’autres services systèmes.

AMIR SOUISSI ©2018 21


www.amirsouissi.wixsite.com/amirsouissi
A PPLICATION A NDROID
Découverte du Développement Android

AMIR SOUISSI ©2018 22


www.amirsouissi.wixsite.com/amirsouissi
Le Processus de Développement
Application Android

Chaque Application Android commence par une idée. Avec l’avancement du projet, il passe par le design,
le développement et le déploiement.

Définition de l’idée et ses besoins

Prototypage de l’interface utilisateur Ressources en XML


Composants en Java et tests
Développement et Tests
Manifests
Publication de l’App. Configurations du Build

AMIR SOUISSI ©2018 23


www.amirsouissi.wixsite.com/amirsouissi
Projet sous Android Studio
Application Android

Chaque projet sous Android Studio contient :

Le fichier AndroidManifest.xml

Spécifie des informations sur App pour l’environnement d’exécution Android.

Les fichiers des codes sources des composants

Le répertoire Java : contient les classes java des composants du projet. La première activité (écran)
est nommée MainActivity

Les fichiers de ressources associées

Le répertoire res : contient les ressources tels que les layouts XML, les images, … Chaque activité
est associée avec un fichier de ressource XML qui spécifie les layouts de ses vues.

AMIR SOUISSI ©2018 24


www.amirsouissi.wixsite.com/amirsouissi
Arborescence d’un Projet Visualisation de l’arborescence du projet selon
Application Android la perspective Android.

Visualisation de
l’arborescence du
projet. Fichier qui définit le comportement de l’app au
système Android. Ex : nom, icone, thème,
version, activités, …

Code source java de l’activité principale

Dossier qui regroupe


Sous-dossier qui regroupe l’ensemble des
l’ensemble de ressources
images (png, gif, jpg)utilisées par l’app.
relatives au projet

Sous-dossier qui regroupe l’ensemble des fichiers XML


décrivant les interfaces graphiques
Fichier XML décrivant
l’interface graphique de
Contient les images de l’icône de l’app. à différentes
l’activité principale. Deux résolutions
perspectives possibles : Text
et Design
Contient les fichiers décrivant les valeurs utilisées par
l’app. Ex Strings.xml, arrays.xml, couleurs,
dimensions, …

AMIR SOUISSI ©2018 25


www.amirsouissi.wixsite.com/amirsouissi
Construction de l’Application
Application Android
APK
Gradle ADB
Byte Code
Projet Installer sur
Build Ressources Signature
Android Appareil
Manifest

 À l’exécution d’un projet sous Android Studio, le code est compilé en byte code,
 Le byte code est exécuté dans l’appareil dans le Runtime et sous Android Studio, il est exécuté avec le
Gradle.
 Le Gradle réalise un paquetage du byte code avec les ressources de l’application (images externes, XML…)
dans un fichier APK (Android Application Package File) qui est un format spécial du fichier zip.
Une fois l’APK est prêt, Android Studio le signe et l’installe sur l’appareil en utilisant un ADB (Android Debug
Bridge).
 ADB permet d’interagir et déboguer les Apps sur n’importe quel appareil (physique ou virtuel).

AMIR SOUISSI ©2018 26


www.amirsouissi.wixsite.com/amirsouissi
CONCEPTS DE BASE DU
D ÉVELOPPEMENT A NDROID
Découverte du Développement Android

AMIR SOUISSI ©2018 27


www.amirsouissi.wixsite.com/amirsouissi
Activité
Concepts de Base du Développement Android
 Les activités sont les briques de base de l’interface utilisateur
 À part quelques exceptions (les services), une application Android doit avoir au minimum une
activité et peut bien sûr en comporter plusieurs
 L’activité est équivalente à un écran que voit l’utilisateur (une fenêtre, une boite de dialogue)

L’écran vue et manipulé par l’utilisateur est implémenté par la classe Activity

AMIR SOUISSI ©2018 28


www.amirsouissi.wixsite.com/amirsouissi
Manifest
Concepts de Base du Développement Android

 C’est le point de départ de toute application Android


 Permet de spécifier différentes options ( le matériel
nécessaire pour fonctionner, certains paramètres de
sécurité, les informations triviales : nom, icone, …)
 Permet de déclarer ce que l’application contient
(Activités , services, …)
 Précise les permissions de l’application (contrôle de la
webcam, accès aux réseaux, accès au service de
localisation, … )
 c’est un fichier XML nommé AndroidManifest.xml
 Créé par défaut pour tout nouveau projet
 Les nœuds importants :
<manifest>
<application>
<activity>

AMIR SOUISSI ©2018 29


www.amirsouissi.wixsite.com/amirsouissi
Élément Graphique : widget
Concepts de Base du Développement Android
 Les widgets sont les éléments graphiques basiques de l’interface utilisateur et qui sont le plus
souvent interactifs (Bouton, champ de texte, zone de saisie, case à cocher, bouton radio, …)
 Ils sont appelés aussi les contrôles
 La classe mère de tous les contrôles est View

Plusieurs types de contrôles disponibles dans la zone des


widgets du mode Design d’Android Studio

 Mode Design : placer les contrôles par la souris et


générer automatiquement le contenu XML

 Mode Text : utiliser le contenu XML pour créer et


modifier des contrôles pour une meilleure maitrise

AMIR SOUISSI ©2018 30


www.amirsouissi.wixsite.com/amirsouissi
Conteneur et Positionnement : Layout
Concepts de Base du Développement Android
 Le Layout permet de concevoir des interfaces graphiques plus esthétiques et plus ergonomiques,
comme c’est le cas en Java.

 Il s’agit de la mise en page qui permet d’organiser la façon dont ses enfants (les éléments
contenus dans le Layout) sont positionnés à l’écran.

 Toutes les layout héritent de ViewGroup (qui hérite de View) et on peut imbriquer les mises en
pages

 Les Containers Android sont souvent appelés XxxxLayout. (un peu


différent de Java Swing, ils sont à la fois Container et Layout)

AMIR SOUISSI ©2018 31


www.amirsouissi.wixsite.com/amirsouissi
Intention : Intent
Concepts de Base du Développement Android

Un intent est une intention pour faire quelque chose.


C’est un objet (message asynchrone) utilisé pour demander une action (une autre fonctionnalité)
d’un autre composant Android.
On peut les utiliser pour :
 Naviguer d’une activité à une autre
 Prendre une photo via l’application de la caméra
 Faire une recherche Web
 Chercher une localisation sur le map

AMIR SOUISSI ©2018 32


www.amirsouissi.wixsite.com/amirsouissi
Persistance des données
Concepts de Base du Développement Android
 Une application Android peut avoir besoin de persister des données pour qu’elles soient
disponible lorsqu’on relance l’application après sa fermeture.
Android fournit plusieurs solutions pour stocker les données
Shared Preferences, Stockage interne, Stockage externe, Base de Données SQLite, Stockage réseau
 Android encourage la mise à disposition (le partage) des données entre applications.
Le content provider permet de gérer et contrôler l’accès aux données partagés par une ou plusieurs
applications.

AMIR SOUISSI ©2018 33


www.amirsouissi.wixsite.com/amirsouissi
Service
Concepts de Base du Développement Android
 Un service est un composant de l’application qui permet d’exécuter des opérations en arrière plan
(background) et ne fournit pas d’interface utilisateur.
 Une application peut démarrer un service qui continue de tourner en background même si
l’utilisateur change d’application.
 Par défaut, un service s’exécute dans le thread principal du processus qui le contient

Exemples :
- Service vérifiant périodiquement des mises à jour de flux RSS
- Service permettant d’écouter une playlist (indépendamment de toute activité)

AMIR SOUISSI ©2018 34


www.amirsouissi.wixsite.com/amirsouissi

Vous aimerez peut-être aussi