28
INTRODUCTION À LA PLATEFORME ANDROID Imene Sghaier 2016-2017

Introduction à la plateforme Android - Technologue ProToute application doit contenir le fichier XML AndroidManifest.xml Ce fichier déclare, entre autre, les différents composants

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Introduction à la plateforme Android - Technologue ProToute application doit contenir le fichier XML AndroidManifest.xml Ce fichier déclare, entre autre, les différents composants

INTRODUCTION À LA

PLATEFORME ANDROID

Imene Sghaier

2016-2017

Page 2: Introduction à la plateforme Android - Technologue ProToute application doit contenir le fichier XML AndroidManifest.xml Ce fichier déclare, entre autre, les différents composants

PLAN DU CHAPITRE

Applications mobiles

Présentation du système Android

Versions

Architecture du système Android

Eléments d’une application android

La pile des outils de développement pour Android

SDK Android

Processus de compilation

Déploiement d’une application

19

/02

/201

7

2

Imene Sghaier-Développement d’applications mobiles

Page 3: Introduction à la plateforme Android - Technologue ProToute application doit contenir le fichier XML AndroidManifest.xml Ce fichier déclare, entre autre, les différents composants

APPLICATIONS MOBILES

Une application mobile est un programme

téléchargeable de façon gratuite ou payante et

exécutable à partir du système d’exploitation

d’un dispositif mobile (PDA, smartphone,

tablette…).

Elles sont pour la plupart distribuées depuis

des plateformes de téléchargement (parfois elles-

mêmes contrôlées par les fabricants de

smartphones) telles que l'App Store (plateforme

d'Apple), le Google Play (plateforme

de Google / Android), ou encore le Windows

Phone Store(plateforme de Microsoft).

19

/02

/201

7

3

Imene Sghaier-Développement d’applications mobiles

Page 4: Introduction à la plateforme Android - Technologue ProToute application doit contenir le fichier XML AndroidManifest.xml Ce fichier déclare, entre autre, les différents composants

PRÉSENTATION DU SYSTÈME ANDROID

Android est un système d'exploitation temps réel,

mobile et open source conçue spécifiquement et

pas exclusivement pour des systèmes embarqués

légers comme smartphones, PDA, tablettes…

Android désigne à la fois:

Un environnement de développement (API)

Un environnement d’exécution (le plus souvent)

19

/02

/201

7

4

Imene Sghaier-Développement d’applications mobiles

Page 5: Introduction à la plateforme Android - Technologue ProToute application doit contenir le fichier XML AndroidManifest.xml Ce fichier déclare, entre autre, les différents composants

PRÉSENTATION DU SYSTÈME ANDROID

Android s'appuie sur deux piliers:

le langage Java

le SDK qui permet d'avoir un environnement de

développement facilitant la tâche du développeur

Le kit de développement donne accès à des

exemples, de la documentation mais surtout à

l'API de programmation du système et à un

émulateur pour tester ses applications.

Stratégiquement, Google utilise la licence Apache

pour Android ce qui permet la redistribution du

code sous forme libre ou non et d'en faire un

usage commercial.

19

/02

/201

7

5

Imene Sghaier-Développement d’applications mobiles

Page 6: Introduction à la plateforme Android - Technologue ProToute application doit contenir le fichier XML AndroidManifest.xml Ce fichier déclare, entre autre, les différents composants

VERSIONS

Version Nom Date

1.0 Version connue des

développeurs : sortie

avant le premier

téléphone Android

fin 2007

1.1 "Petit Four" début 2009

1.5 "Cupcake" (Petit Gâteau) avril 2009

1.6 "Donut" (Beignet) septembre 2009

2.1 "Eclair" janvier 2010

2.2 "FroYo" (Frozen Yogourt :

Yaourt glacé)

mai 2010

2.3 "Gingerbread" (Pain

d'épice)

décembre 2010

3.0 "Honeycomb" (Rayon de

miel)

janvier 2011

19

/02

/201

7

6

Imene Sghaier-Développement d’applications mobiles

Page 7: Introduction à la plateforme Android - Technologue ProToute application doit contenir le fichier XML AndroidManifest.xml Ce fichier déclare, entre autre, les différents composants

VERSIONS

4.0 "Ice Cream Sandwich"

(Sandwich à la crème

glacée), version unifiée

pour Smartphone,

Tablette et GoogleTV,

combinant Gingerbread

et

Honeycomb

octobre 2011

4.1 "Jelly Bean" (API 16) juillet 2012

4.2.2 API 17 février 2013

4.3 API 18 juillet 2013

4.4 "KitKat" (API 19) octobre 2013

5.0 "Lollipop" (API 21) octobre 2014

5.1.1 "Lollipop" (API 22) mars 2015

6.0 "Marshmallow" (API 23) octobre 2015

7.0 « Nougat » (API 24) Mars 2016

19

/02

/201

7

7

Imene Sghaier-Développement d’applications mobiles

Page 8: Introduction à la plateforme Android - Technologue ProToute application doit contenir le fichier XML AndroidManifest.xml Ce fichier déclare, entre autre, les différents composants

ARCHITECTURE DU SYSTÈME ANDROID

19

/02

/201

7

8

Imene Sghaier-Développement d’applications mobiles

Page 9: Introduction à la plateforme Android - Technologue ProToute application doit contenir le fichier XML AndroidManifest.xml Ce fichier déclare, entre autre, les différents composants

ARCHITECTURE DU SYSTÈME ANDROID

La couche "Applications" (navigateur, gestion des

contacts, application de téléphonie...)

La couche "Application Framework" : cette couche

permet au programmeur de construire de nouvelles

applications. Cette couche fournit la gestion :

des Views (IHM)

des ContentProviders (fournisseurs de contenus) qui

permettent l'accessibillité aux données des autres

applications (ex : les contacts) et donc les partages de

données

des ressources qui sont les fichiers non codes comme les

images, les écrans (Resource Manager)

des notifications (affichage d'alerte dans la barre de titre)

des Activities pour l'enchaînement des écrans

19

/02

/201

7

9

Imene Sghaier-Développement d’applications mobiles

Page 10: Introduction à la plateforme Android - Technologue ProToute application doit contenir le fichier XML AndroidManifest.xml Ce fichier déclare, entre autre, les différents composants

ARCHITECTURE DU SYSTÈME ANDROID

La couche "Libraries" (bibliothèques) qui représente la couche logicielle basse pour utiliser les formats multimédia : images, audio et vidéo enregistrement

comme rendu

les dessins 2D et 3D, bitmap et vectoriel,

une base de données SQL (SQLite)

SSL

L'environnement d'exécution Android Runtime (à partir de lollilop) qui compile le bytecode vers le natif

Toute application est exécutée dans son propre processus, dans sa propre Dalvik Virtual Machine (avant lollilop), donc plusieurs instances de la DVM peuvent être lancées efficacement.

Le noyau Linux sur lequel la Dalvik virtual machine s'appuie pour gérer le multithreading, la mémoire. Le noyau Linux apporte les services de sécurité, la gestion des processus, etc.

une couche d'abstraction pour l'accès aux capteurs (HAL)

19

/02

/201

7

10

Imene Sghaier-Développement d’applications mobiles

Page 11: Introduction à la plateforme Android - Technologue ProToute application doit contenir le fichier XML AndroidManifest.xml Ce fichier déclare, entre autre, les différents composants

ARCHITECTURE DU SYSTÈME ANDROID

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 (dalvic executable), 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 (5.0), Android dispose d'ART comme JVM pour Android. Elle compile l'application au moment du déploiement (Ahead-of-time compilation: compilation à l’installation).

19

/02

/201

7

11

Imene Sghaier-Développement d’applications mobiles

Page 12: Introduction à la plateforme Android - Technologue ProToute application doit contenir le fichier XML AndroidManifest.xml Ce fichier déclare, entre autre, les différents composants

ELÉMENTS D’UNE APPLICATION ANDROID

Une application Android peut être composée des éléments suivants:

des activités (android.app.Activity): il s'agit d'une partie de l'application présentant une vue à l'utilisateur

des services (android.app.Service): il s'agit d'une activité tâche de fond sans vue associée

des fournisseurs de contenus (android.content.ContentProvider)

permettent le partage d'informations au sein ou entre applications

des widgets (android.appwidget.*): une vue accrochée au bureau d'Android

des Intents (android.content.Intent): permet d'envoyer un message pour un composant externe sans le nommer explicitement

des récepteurs d'Intents (android.content.BroadcastReceiver): permet de déclarer être capable de répondre à des Intents

des notifications (android.app.Notifications): permet de notifier l'utilisateur de la survenue d'événements

19

/02

/201

7

12

Imene Sghaier-Développement d’applications mobiles

Page 13: Introduction à la plateforme Android - Technologue ProToute application doit contenir le fichier XML AndroidManifest.xml Ce fichier déclare, entre autre, les différents composants

ELÉMENTS D’UNE APPLICATION ANDROID:

ACTIVITY, SERVICE

Une activité (activity) gère l'affichage et les

interactions utilisateurs sur un écran . Les activités

sont indépendantes les unes des autres.

Une activité est une sous classe de

android.app.Activity

Une application peut avoir plusieurs activités pouvant

lancer cette application

Un service (service) est un composant qui est exécuté

en tâche de fond. Il ne fournit pas d'interface

graphique.

Exemple de service : jouer de la musique, rechercher

des données sur le réseau.

Un service est une sous classe de android.app.Service

19

/02

/201

7

13

Imene Sghaier-Développement d’applications mobiles

Page 14: Introduction à la plateforme Android - Technologue ProToute application doit contenir le fichier XML AndroidManifest.xml Ce fichier déclare, entre autre, les différents composants

ELÉMENTS D’UNE APPLICATION ANDROID:

CONTENTPROVIDER

Un fournisseur de contenu (content provider) gère des données partageables. C'est le seul moyen d'accéder à des données partagées entre applications

Exemple de fournisseur de contenu : les informations de contacts de l'utilisateur du smartphone

On peut créer un fournisseur de contenus pour des données qu'on veut partager

On récupère un fournisseur de contenu pour des données partageables en demandant le ContentResolver du système et en donnant ensuite, dans les requêtes, l'URI des données (A voir dans le TP)

19

/02

/201

7

14

Imene Sghaier-Développement d’applications mobiles

Page 15: Introduction à la plateforme Android - Technologue ProToute application doit contenir le fichier XML AndroidManifest.xml Ce fichier déclare, entre autre, les différents composants

ELÉMENTS D’UNE APPLICATION ANDROID:

BROADCASTRECEIVER

Un récepteur d'informations est une sous classe de android.content.BroadcastReceiver

Un récepteur d'informations est un composant à l'écoute d'informations qui lui sont destinées. Un tel récepteur indique le type d'informations qui l'intéressent et pour lesquelles il se mettra en écoute. Exemple : appel téléphonique entrant, réception d'un SMS, réseau

Wi-Fi connecté, informations diffusées par des applications.

Les informations peuvent être envoyées par le système (réception de la liste des réseaux Wi-Fi, ...)

L'application réceptrice d'informations (c'est à dire possédant un récepteur d'informations) n'a pas besoin d'être lancée. Si elle ne l'est pas, Android la démarre automatiquement

Un récepteur n'est pas une IHM mais peut en lancer une (éventuellement petite dans la barre de notification), ou peut lancer un service traitant l'arrivée de l'information

19

/02

/201

7

15

Imene Sghaier-Développement d’applications mobiles

Page 16: Introduction à la plateforme Android - Technologue ProToute application doit contenir le fichier XML AndroidManifest.xml Ce fichier déclare, entre autre, les différents composants

ELÉMENTS D’UNE APPLICATION ANDROID:

INTENT

Un intent est une sous classe de android.content.Intent

Un événement (intent) est une "intention" à faire quelque

chose contenant des informations destinées à un

composant Android. C'est un message asynchrone

Les activités, services et récepteurs d'informations

utilisent les Intent pour communiquer entre eux

Un Intent ne contient pas obligatoirement explicitement

le composant qui va le gérer. Dans ce cas c'est un Intent

implicite. Si l'Intent indique explicitement la classe du

composant qui va le gérer c'est un Intent explicite

19

/02

/201

7

16

Imene Sghaier-Développement d’applications mobiles

Page 17: Introduction à la plateforme Android - Technologue ProToute application doit contenir le fichier XML AndroidManifest.xml Ce fichier déclare, entre autre, les différents composants

ELÉMENTS D’UNE APPLICATION ANDROID: LE FICHIER

MANIFEST

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

package="andro.jf"

android:versionCode="1"

android:versionName="1.0">

<application android:icon="@drawable/icon"

android:label="@string/app_name">

<activity android:name=".Main"

android:label="@string/app_name">

<intent-filter>

<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />

</intent-filter>

</activity>

<service>...</service>

<receiver>...</receiver>

<provider>...</provider>

</application>

</manifest>

19

/02

/201

7

17

Imene Sghaier-Développement d’applications mobiles

Page 18: Introduction à la plateforme Android - Technologue ProToute application doit contenir le fichier XML AndroidManifest.xml Ce fichier déclare, entre autre, les différents composants

ELÉMENTS D’UNE APPLICATION ANDROID : LE FICHIER

MANIFEST

Toute application doit contenir le fichier XML AndroidManifest.xml

Ce fichier déclare, entre autre, les différents composants de l'application

Parmi les composants, seuls les récepteurs d'évènements (BroadcastReceiver) ne sont pas forcément dans le manifeste.

Les autres (Activity, Service, ContentProvider) doivent l'être sinon ils ne seront jamais lancés quel que soit le code écrit !

Ce fichier contient aussi :

les permissions nécessaires à l'application (accès internet, accès en lecture/écriture aux données partagées)

le numéro minimum de la version API utilisée, des logiciels et matériels utilisés par l'application (caméra) et des bibliothèques supplémentaires à l'API de base (Google maps library)

19

/02

/201

7

18

Imene Sghaier-Développement d’applications mobiles

Page 19: Introduction à la plateforme Android - Technologue ProToute application doit contenir le fichier XML AndroidManifest.xml Ce fichier déclare, entre autre, les différents composants

Les ressources sont des éléments constituant

l’application autre que le code source (fichiers image,

vidéo, du texte...)

Les ressources sont disposées dans des sous-répertoires

de « res » en fonction de leur type

Ces ressources sont référencées dans la classe spéciale

R. Cela veut dire que cette fameuse classe définira des

constantes de type int permettant l’identification de

chacune de ces ressources. Ces ID sont utiles à de

nombreux endroits dans l’API Android.

19

/02

/201

7

19

ELÉMENTS D’UNE APPLICATION ANDROID : LES

RESSOURCES

Imene Sghaier-Développement d’applications mobiles

Page 20: Introduction à la plateforme Android - Technologue ProToute application doit contenir le fichier XML AndroidManifest.xml Ce fichier déclare, entre autre, les différents composants

Les ressources d’une application Android sont

utilisées dans le code au travers de la classe

statique R.

Toutes les ressources sont accessibles au travers

de R, dès qu'elles sont déclarées dans le fichier XML

ou que le fichier associé est déposé dans le

répertoire adéquat (images, chaine de caractères...)

Les ressources sont utilisées de la manière

suivante :

android.R.type_ressource.nom_ressource

19

/02

/201

7

20

ELÉMENTS D’UNE APPLICATION ANDROID : LES

RESSOURCES

Imene Sghaier-Développement d’applications mobiles

Page 21: Introduction à la plateforme Android - Technologue ProToute application doit contenir le fichier XML AndroidManifest.xml Ce fichier déclare, entre autre, les différents composants

Les chaines constantes de l'application sont situées dans res/values/strings.xml.

Exemple

19

/02

/201

7

21

<?xml version="1.0" encoding="utf-

8"?> <resources> <string

name="hello">Hello Hello JFL

!</string> <string

name="app_name">AndroJF</string>

</resources>

La récupération de la chaine se fait via le code :

Resources res = getResources();

String hw = res.getString(R.string.hello);

ELÉMENTS D’UNE APPLICATION ANDROID : LES

RESSOURCES

Imene Sghaier-Développement d’applications mobiles

Page 22: Introduction à la plateforme Android - Technologue ProToute application doit contenir le fichier XML AndroidManifest.xml Ce fichier déclare, entre autre, les différents composants

Une méthode spécifique pour les objets graphiques

permet de les récupérer à partir de leur id, ce qui

permet d'agir sur ces instances même si elles ont été

créées via leur définition XML

TextView texte = (TextView)findViewById(R.id.le_texte);

texte.setText("Here we go !");

19

/02

/201

7

22

ELÉMENTS D’UNE APPLICATION ANDROID : LES

RESSOURCES

Imene Sghaier-Développement d’applications mobiles

Page 23: Introduction à la plateforme Android - Technologue ProToute application doit contenir le fichier XML AndroidManifest.xml Ce fichier déclare, entre autre, les différents composants

D'autres ressources sont spécifiables dans res :

les menus ;

les images (R.drawable) ;

des dimensions (R.dimen) ;

des couleurs (R.color).

19

/02

/201

7

23

ELÉMENTS D’UNE APPLICATION ANDROID : LES

RESSOURCES

Imene Sghaier-Développement d’applications mobiles

Page 24: Introduction à la plateforme Android - Technologue ProToute application doit contenir le fichier XML AndroidManifest.xml Ce fichier déclare, entre autre, les différents composants

LA PILE DES OUTILS DE DÉVELOPPEMENT POUR ANDROID

19

/02

/201

7

24

Imene Sghaier-Développement d’applications mobiles

Page 25: Introduction à la plateforme Android - Technologue ProToute application doit contenir le fichier XML AndroidManifest.xml Ce fichier déclare, entre autre, les différents composants

SDK ANDROID

L'Android SDK comporte:

Une API android (diff composants Activity, Service,

ContentProvider, BroadCastReceiver…)

Un environnement de développement

Une machine virtuelle java adaptée à Android

(ART)

Un environnement debuggueur DDMS (Dalvic

Debug Monitor Service)

Des emulateurs virtuels (Android Virtual Device)

L'Android SDK compile l'ensemble du

développement (code Java, données, fichier de

ressources, fichier XML) dans un paquetage

Android : un .apk

19

/02

/201

7

25

Imene Sghaier-Développement d’applications mobiles

Page 26: Introduction à la plateforme Android - Technologue ProToute application doit contenir le fichier XML AndroidManifest.xml Ce fichier déclare, entre autre, les différents composants

PROCESSUS DE COMPILATION

Les fichiers .class contiennent du java byte-code, mais

les dispositifs Android n’utilisent pas ce format de byte-

code.

Android possède son propre format de byte-code

nommé Dalvik.

Dalvik byte-codes comme le JVM byte-codes sont des

codes machine pour des processeurs théoriques.

Le processus de compilation convertit les fichiers

.class et les librairies .jar en un seul fichier de classes

d’extension .dex qui contient le Dalvik byte-codes.

19

/02

/201

7

26

Imene Sghaier-Développement d’applications mobiles

Page 27: Introduction à la plateforme Android - Technologue ProToute application doit contenir le fichier XML AndroidManifest.xml Ce fichier déclare, entre autre, les différents composants

DÉPLOIEMENT D’UNE APPLICATION

19

/02

/201

7

27

Imene Sghaier-Développement d’applications mobiles

Page 28: Introduction à la plateforme Android - Technologue ProToute application doit contenir le fichier XML AndroidManifest.xml Ce fichier déclare, entre autre, les différents composants

RÉFÉRENCES

http://developer.android.com/

Cours de Jean-Marc Farinone, maître de

conférences au Conservatoire National des Arts

et Métiers (CNAM) de Paris

Cours "Développement sous Android" de Jean-

François Lalande, INSA, Institut National des

Sciences Appliquées, Centre VAL DE LOIRE

19

/02

/201

7

28