Vous êtes sur la page 1sur 47

Chapitre I: Introduction à

Android
Historique
• Il a vu le jour en 2003 lorsqu'une société
appelée Android Inc. a été fondée par Andy
Rubin.
• En 2005, Google a acheté Android Inc. (50
millions de dollars)
• En 2007, l'Open Handset Alliance est née et le
système d'exploitation Android a été
officiellement open source.
Historique
Historique
Statistiques
7.2 billion Number of Android devices. It already has exceeded
the total number of people in the planet

3 Number of decades it took for mobile devices to go


from zero to 7.2 billion
1.5 million Number of Android devices being activated daily

2,617 Number of times users touch their mobile devices in a


day
2 billion Number of active Android users monthly

87 Percentage of share of Android in the mobile OS market


Les autres OS
• Android (Google),
• iOS (Apple),
• Windows Phone,
• Blackberry,
• etc
Android
• Rappel sur les OS
Au plus simple, un OS fait trois choses:
- gère le matériel pour le compte des applications
- fournit des services à des applications telles que la
mise en réseau, la sécurité et la mémoire
gestion, etc.
- gère l'exécution des applications; c'est la partie qui
nous permet de courir plusieurs applications
(apparemment) presque en même temps.
Android
• Rappel sur les OS
Exemple: lorsque vous tapez chaque caractère
sur les touches, l'application doit communiquer
avec le matériel pour que le message se rende
sur votre écran et votre disque dur et finalement
l'envoie dans le cloud via votre réseau.
Android
• Définition
• Android est un système d’exploitation OPEN
SOURCE pour terminaux mobiles
(Smartphones, Tablet )
• Android a un Linux embarqué à l'intérieur qui
gère l'interface matérielle et certains d'autres
fonctions du noyau.
Android
Caractéristiques:
• 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 lecore
- API disponible pour les accès de bas niveau
Android
Architecture
Android
Architecture:
Niveau 1 (le plus bas) :
Linux kernel: responsable de l’interface avec le
matériel
Android
Architecture: Niveau 2 :
- bibliothèques de bas niveau comme SQLite,
OpenGL,
- ils sont écrits principalement en C / C ++
- le runtime Android (bibliothèques de classes
Android + machine virtuelle Dalvik), où les
applications Android sont exécutées.
Android
Architecture: Niveau 3 :
Il s'agit de la couche avec laquelle nous allons
interagir en tant que développeur
d'applications, car elle contient toutes les
bibliothèques dont nous avons besoin pour
écrire des applications.
Android
Architecture: Niveau 4 :
C'est là que résident toutes nos applications, à la
fois celles que nous écrivons et celles fournies
avec le système d'exploitation.
Android
• On retrouve l’architecture des dossiers Unix, avec des
variantes :
- Dossiers Unix classiques : /usr, /dev, /etc, /lib, /sbin. . .
- Les volumes sont montés dans /mnt, par exemple
/mnt/sdcard (mémoire flash interne) et
/mnt/extSdCard (SDcard amovible)
- Les applications sont dans :
• /system/app pour les pré-installées
• /data/app pour les applications normales
• Les données des applications sont dans
/data/data/nom.du.paquetage.java
Ex: /data/data/fr.iutlan.helloworld/
Android & langages de Prg
• Pour développer sous Android, il existe trois
possibilités :
• Web Apps/website mobile :
• App mobiles natives :
• App mobiles hybrides :
Android & langages de Prg
Web Apps/website mobile :
• Construit en utilisant les technologies
standards du web : HTML, CSS, Javascript
• Exécuté à l’intérieur d’un browser
• Conçu pour bien paraitre sur les appareils
mobiles (responsive)
Android & langages de Prg
Web Apps/website mobile :

Avantages Inconvébients
Facile à construire et à maintenir Plus lente
Utiliser n’importe quelle Moins interactive
technologie/Langage (Node.js, Pas d’icone sur le desktop
Laravel,…) Ne peut pas être soumis à l'App Store
Moins cher que les app Ne peut pas interagir avec les
native/hybride utilitaires de l'appareil (camera , geo-
Seule app pour toutes les location)
plateformes
Android & langages de Prg
App mobiles natives :
• Type d'application mobile le plus courant
• Construit pour plateforme spécifique
(Swift/objectice-c pour iOS, Java/Kotlin pour
Android)
Android & langages de Prg
App mobiles natives :
Avantages Inconvénients
Tres rapide Plateforme unique
Distribués dans App Store (Apple Langage plus difficile : JAVA, Swift, …
Store, Google Play, Play Store, ) Très cher (relativement web
Interactive et intuitive developer)
interagir avec les utilitaires de Difficile à maintenir
l'appareil
Android & langages de Prg
App mobiles hybrides :
• Combinaison : native & web
• Utilise HTML, CSS, Javascript
• Exécution à l’intérieur d’un conteneur :
webview
• Exemple : Titanium, PhoneGap, Apache
Cordova
Android & langages de Prg
App mobiles hybrides :
Avanatges Inconvénients
Facile à construire : html, css,… Plus lent que les app natives
Moins cher que les app natives Plus cher que les apps web
Seule app pour toutes les plateformes Moins interactive que les app natives
Pas besoin d’un navigateur Pas autant de plugins pour interagir avec
Accès aux utilitaires les appareils
Plus rapide à developper que les app
natives
Android & langages de Prg
4ème type : comme React Native / Xamarin
• Construit avec frameworks qui utilise web
technologies mais convertit l’app en
composants natifs (au lieu de webview)
• Très proche aux app natives en termes de
performance
Programmation
• Une application Android est composée de :
• 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
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
• 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.
• Pour compenser, Java propose les annotations
@NotNull et @Nullable, mais ça paraît
contraignant.
kotlin
En Java

En Kotlin
Compilation a exécution
• Le processus de compilation n'est pas le même
que celui auquel vous étiez habitué avec Java
SE ou Java EE.
• Les exécutables Android sont des fichiers dex
et non des fichiers de classe.
• La compilation de programmes est un
processus en deux étapes dans Android.
Compilation a exécution

Les fichiers dex sont destinés à fonctionner sur une


machine virtuelle optimisée pour les appareils portables
de faible puissance
Composants Andoid

• Les applications de bureau sont à peu près


autonomes : contiennent toutes les routines et
sous-programmes nécessaires. De temps en
temps, il peut s'appuyer sur une bibliothèque
chargée dynamiquement, mais à peu près l'exe
est autosuffisant.
Composants Andoid

• Une application Android n'est pas un package


monolithique comme un fichier EXE sous
Windows. Il s'agit d'un ensemble de
composants et d'autres ressources vaguement
liés ou faiblement couplés, et ils sont
regroupés dans un fichier APK (fichier de
package Android).
Composants Andoid
Fichier APK
APK file Il s'agit essentiellement d'une forme d'archive basée sur le
jar. Il rassemble tout dans une application Android.
Resources Vous pouvez inclure d'autres ressources comme l'audio, la
vidéo ou les images dans votre application
Manifest Le manifeste Android est un fichier XML.

Components Les composants sont des blocs de construction d'application.


Ils sont assez uniques dans l'architecture d'Android car les
autres plates-formes informatiques mobiles ne construisent
pas leurs applications de la même manière.

intents Si les composants permettent un couplage lâche dans


Android, les intentions sont ce qui relie ces composants.
Les Composants Android

• Sous Android, les applications sont construites


à l'aide de composants. Pensez-y comme
pièces préfabriquées d'une maison.
• Les composants sont des blocs de construction
clés pour toute application Android. Ce sont
des abstractions de haut niveau de choses
utiles comme montrer un écran à l'utilisateur,
exécuter une tâche en arrière-plan, diffuser un
événement.
Les Composants Android

• Ce sont des classes Java précodées avec très


spécifiques comportement. Nous devons bien
sûr les étendre pour pouvoir ajouter des
fonctionnalités propres à notre application.
Les Composants Android
Compposant Ce qui’il fait Exemple
Activity Maintient, affiche les Afficher un seul e-mail,
base class:
éléments de l'interface prendre des notes
android.app.Activity
utilisateur (View et
ViewGroups).
Service Exécuter un processus en Téléchargez un gros fichier
base class:
arrière-plan sur Internet, jouez de la
android.app.Service
musique de fond
BroadcastReceiver
Recevez des messages du Afficher un message
base class:
android.content.BroadcastReceiver système Android ou des d'avertissement lorsque la
applications batterie de l'appareil tombe
en dessous de 10%
ContentProvider
Stockez et récupérez des Contacts ou carnet
base class:
android.content.ContentProvider données, comme une base d'adresses sur ton
de données téléphone.
Activité : couche présentation
• Android utilise le terme Activité pour décrire
les écrans «front-end» de votre application
que vos utilisateurs consultent.
• Une activité est une collection d'éléments de
conception qui composent chaque vue d'écran
de votre application :le texte, l'arrière-plan
graphiques, 3D, contenu de premier plan,
vidéo numérique, menus contextuels,
éléments animés etc...
Activité : couche présentation
Les activités consistent généralement en :
• Layout Container : qui organise et arrange une
série d'éléments d'interface utilisateur appelés
Widgets (comopsants visuels), ainsi que le
contenu de votre application, dans zones d'écran
prédéfinies.
• Si vous souhaitez inclure des éléments graphiques
pour rendre vos conceptions plus attrayantes,
vous devez utiliser Drawables, qui est la
terminologie d'Android pour les éléments
graphiques tels que les images ou les animations.
Service: couche de traitement
• Les services Android représentent le back-end ou le
traitement en arrière-plan.
• La classe de service Android est utilisée pour créer des
classes Java qui effectuent des tâches de traitement
répétitives. Un bon exemple serait un utilisateur lisant
un fichier audio MP3 tout en utilisant votre application.
• Android propose également un certain nombre de
classes de service spécialisées qui sont déjà sous-
classées de la classe de service Android principale. Pour
exemple, il y a SpellCheckerService, WallpaperService,
TextToSpeechService, DreamService, Les classes
IntentService, AccessibilityService, VpnService et
AbstractInputMethodService sont également
disponibles pour les développeurs Android.
Ecouteur d’intention/Broadcast
Receivers: couche communication
• Permet à une application de récupérer des
informations générales (réception d’un SMS,
batteire faible)
• S'exécutent en arrière-plan et vous pouvez
configurer le code de votre application pour
«trap» tout type de récepteur de diffusion que
vous jugez nécessaire pour votre application.
• Une fois que votre code détecte un récepteur de
diffusion auquel il doit répondre, il peut appeler
l'élément d'interface utilisateur approprié dans
l'activité appropriée, et alerter l'utilisateur final
de la modification de l'état du système
d'exploitation ou de l'appareil.
Fournisseur de contenu/ Content
Providers : couche de stockage de
données
• Les données stockées dans Android (mémoire,
fichier, carte SD, BD SQLite) sont accessibles via
un fournisseur de contenu.
• Le principal (et le meilleur) moyen de stocker et
de partager des données est la technologie SQL
open source, qui fait partie du système
d'exploitation Android : SQLite database.
• Android a un package complet dédié au SQLite,
appelé android.database.sqlite, qui contient tout
ce dont vous aurez besoin pour créer et accéder
aux bases de données SQLite.
Intentions/Intents: communication
inter-Application
• Une application Android communique entre ses
principaux composants, exemple activité et
service via une intention.
• Chaque type de composant Android(activité
servcice, etc) a son propre type d'objet
d'intention. Garantit le non ambiguïté.
• L'objet Intent contient des informations
concernant le composant d'application qui doit
effectuer la tâche requise : les actions à
entreprendre, une définition du données que la
tâche utilise,
Fichier Manifest: Définition des
autorisations d'application
• C’est un fichier XML qui «bootstraps/démarre» ou
et lance une application Android donnée. Il se
trouve Au niveau racine de tout fichier .APK
(Android PacKage) d'application Android.
• Il contient tout ce que le système d'exploitation
Android a besoin de connaître votre application :
les versions d'Android OS prises en charge, les
activités, les récepteurs de diffusion et les services
que l'application contient, ce que les autorisations
dont l'application a besoin pour accéder aux
bases de données sécurisées et aux ressources
Internet, ainsi qu'aux filtres d'intention qui
doivent être établis.
Fichier Manifest: Définition des
autorisations d'application
Structure d’une application
App : racine de l’arborescence d’un projet Android ;
nom du module principal.
Manifests : contient le manifest (fichier de
configuration d’une app)
Java : contient les sources de l’app (code java)
Res : Contient les ressources statiques de l’app
Drawable: contient les images
Layout: les interfaces graphiques
Menu : les menus de l’application
Mipmap : icones de l’application
Values : valeurs de config (couleurs, dimensions,
textes statitiques)
Gardle
• Gradle est un outil de
construction/compilation de projets comme
Make (projets C++ sur Unix), Ant (projets Java
dans Eclipse) et Maven.
• De même que make se sert d’un fichier
Makefile, Gradle se sert d’un fichier nommé
build.gradle pour construire le projet.

Vous aimerez peut-être aussi