SlideShare una empresa de Scribd logo
1 de 28
Architecture Android
Les spécificités de l’OS

Philippe Prados

© OCTO 2012

50, avenue des Champs-Elysées
75008 Paris - FRANCE

Tél : +33 (0)1 58 56 10 00
Fax : +33 (0)1 58 56 10 01
www.octo.com
OCTO Technology

2
Offre d’OCTO
OCTO dispose d’une offre originale pour bâtir des SI et des applications innovantes en
phase avec la complexité des enjeux métiers de ses clients.
Elle se décline autour de 4 thématiques.

Architecture & Technologie

Définition d’architecture
Audits techniques et applicatifs
Aide au choix de solutions / Technologies
Expertises : IHM, Cloud, NoSQL, BI,
sécurité
Task force
Pilotage du SI

Réalisation de schémas directeurs IT
Réalisation d’audits de SI
Application Portfolio Management
Gouvernance et urbanisme

Accompagnement au changement

Accompagnement / coaching projets en
mode agile (MOA+ MOE + prod)
Mise en place de pratiques Lean IT
Mise en place de démarches de tests et
d’industrialisation

Réalisation de projets stratégiques & innovants

Brainstorm et conception de produits
Spécifications et développements agiles
itératifs
Mise en production et suivi du produit

3
CV

Philippe PRADOS (pprados@octo.com)
Consultant
Gplus.to/pprados
@pprados
LinkedIn

4
Les fondamentaux d'Android
Quels sont les principes ayant guidés à la conception
d'Android ?
Pourquoi le framework est-il conçu comme cela ?
Quels sont les avantages des choix initiaux ?

5
La stratégie

Exécution dans un environnement extrêmement contraint :
CPU peu puissante
Peu de mémoire
Réseau chaotique
Batterie à économiser au maximum
Traitements prioritaires
(la réception d'un appel)

Il faut économiser la moindre ressource !
Sécurité in-board (protection entre et contre les applications)
Cela apparaît dans tous les choix d'architecture du framework

IOS à les mêmes contraintes
6
Peu de concepts

Activités
Fournisseurs de contenus
Broadcasts
Services
IDL
L’architecture a résisté à cinq ans de concurrence forte
Sans remise en cause des fondamentaux

Évolution à la marge
Interface utilisateur
Notion de « plusieurs utilisateurs »
Renforcement de la sécurité

IOS utilise une approche totalement différente
7
Les activités

Basées sur le modèle des pages Web.
Identifiées par une « Intention », sorte de requête HTTP enrichie (URL,
action, type mime, extra)
Cycle de vie fragile (comme les pages Web).
Une activité meurt lors de l'affichage de la suivante ou du basculement
de l'écran.
Mais, si Android est sympa, il peut la garder en cache avant de la
reprendre.
Les données d'une activité ne sont pas pérennes
Android mémorise l'historique de navigation entre les activités (d'où le
bouton « retour »)
Ainsi,
une activité peut déclencher l'affichage d'une activité d'une autre application
Et il est possible de revenir à l'activité précédente (même d'une autre
application).

8
Les fournisseurs de contenus

Permettent d'exposer des données aux autres applications via une API
de type REST.
Toutes les données sont identifiées par une URI
(content://contacts/people/1)
Doivent offrir les quatre services de manipulations classiques (création,
modification, consultation, effacement )
La consultation doit répondre à une requête et retourner un Curseur.
L'implémentation est libre (SQLite interne, fichiers plats, requêtes Web,
etc.)
Ne permet pas les jointures entres fournisseurs de contenus.
Fournisseurs de contenus pour les contacts, les images,
les vidéos, les son, etc.
Permet aux éditeurs de proposer des personnalisations
au niveau design, sans casser la compatibilité.

9
Les receveurs broadcast

Composants à l'écoute d’événements génériques
Activation / désactivation Wifi ou Bluetooth
Installation d'une application
Push
Etc.

Permettent de réveiller l'application lors d’événements majeurs.
Une application n'a pas besoin d'être vivante pour recevoir un
événement !

10
Les services

Deux usages :
Offrir des traitements en tâche de fond
Permettre la communication entres objets de différents processus

Éviter de perdre l’application pendant un traitement
Reprise possible après un crash
AIDL (Android Interface Definition Language)
Invocation de méthode entres applications
très utilisés par le framework Android (même si les développeurs
l'ignorent)
Utilise un module noyau linux spécifique. Il injecte les éléments de
sécurités.

IOS permet sous certaines contraintes, les traitements en tâche de
fond.
11
Déclaration des composants

Dans le fichier AndroidManifest.xml de chaque application.
Permet d'identifier les applications à déclencher, sans avoir à
les exécuter (enregistrement passif)
Ainsi, les applications peuvent réagir aux événements sans
consommation de ressources
Ouverture d’une activité dont l’Intent correspond à un filtre
Réception d’un évènement broadcast
Démarrage d’un service

IOS: les applications doivent être activent pour réagir.
12
Cycle de vie

Android gère le cycle de vie des applications :
Évite autant que possible de tuer une application
Mais n'hésite pas à le faire s'il a besoin de ressources
complémentaires

À minima, comme sur d'autres plates-formes mobiles, il n'y a
qu'une seule application active à la fois, celle présentée à
l'utilisateur.
Lorsque l'utilisateur retourne à une application (bouton retour,
sélection de l'application, etc.) il peut être nécessaire de la
réinitialiser si elle n'était plus active (d'où un délai parfois long).
Si un service est en fonctionnement, l’application n’est pas tuée,
sauf nécessité absolue

IOS: même approche.
13
Processus

Android sépare la notion de processus et la notion
d'applications
Une application peut être portée par plusieurs processus
Plusieurs applications peuvent partager le même processus
Il est même possible de lancer un OS Android complet dans un
unique processus
Les processus s'exécutent avec des utilisateurs différents
C'est un élément de sécurité important pour isoler les
applications.
Android peut tuer un processus après l'avoir prévenu. Il en
contrôle la consommation des ressources.

IOS: ne permet pas d’avoir plusieurs processus
14
system_app

Le processus system_app porte le framework Android.
Contient les informations de tous les fichiers
AndroidManifest.xml des applications

Permet de gérer le cycle de vie des autres processus
S'il meurt, le téléphone reboot.

15
Dalvik

Machine virtuelle utilisant un byte code orienté registre
Op-code aligné sur la mémoire et optimisé par la résolution des
offsets, lors de la première exécution
Peux être mappé directement en mémoire
GC asynchrone
Compilation JIT basé sur le flux de traitement et non sur la
structure du langage (détection des boucles dans le flux)

IOS utilise une compilation native, pas de GC
16
Optimisations

De très nombreuses astuces sont utilisées pour optimiser le
code
L'utilisation de constantes numériques à la place de chaîne de
caractères
Une communication optimisée entre les processus
Exécution de requêtes SQL en mode batch
Etc.

Pour accélérer le démarrage d'un processus, un machine
virtuelle java (Dalvik) est initialisé avec une liste de classes, puis
attend une commande pour se dédoubler, associer un utilisateur
Unix et démarrer l'application.
Ainsi, une partie du framework est partagée entre les processus

17
Sécurité sous Android

Publication des applications sur le Play Store avec signature
numérique
Algorithmes de chiffrements disponibles (flux, fichier)
Pas de conteneur chiffré disponible avant la version 4
Isolation des applications (user Linux différent)
Privilèges pour accéder aux services sensibles.
Possibilité d'ajouter de nouveaux privilèges
Présentation des privilèges AVANT l'installation de l'application
Quelques vulnérabilités découvertes sur les applications root
(de moins en moins) ou les surcouches constructeurs
Maintenant, root n’a plus tous les droits

Apple est très stricte pour la publication d’applications
Authentification/habilitation

Authentification
L'utilisateur du téléphone est considéré comme « autorisé »
Valide si mécanisme de blocage du terminal (pin)
Pour les traitements sensibles, demander confirmation d'un autre
PIN
La dernière version d’Android propose le multi-compte

Habilitation
Les applications utilisent des users linux différents
De nouveaux privilèges peuvent être déclarés par les applications
Habilitation pour tous, limitée aux mêmes auteurs des applications
ou limitée au système.
Permet de partager des secrets entre applications du même auteur

IOS a une approche d’habilitation au premier usage.
Accès aux fichiers
Répertoire de travail par application
Droit limité à l'utilisateur associé à l'application (ou aux autres
applications de même signature)
Carte SD considérée comme publique (sinon il faut chiffrer les
données)
Dernièrement, ajout d’un privilège pour avoir droit de lire la carte SD

Chiffrement « gratuit » si l'application est installée sur le carte SD
Chiffrement associé au terminal

Partage de fichier/flux
Possibilité de modifier les droits pour permettre un accès aux autres
utilisateurs =>Risque d'exposer des fichiers sensibles
Passage de handle fichier d'une application à une autre (permet de ne pas
exposer le fichier aux autres applications. Juste l’accès)
Depuis v4, possibilité d'ouvrir un pipe entre les applications (évite de créer
un fichier temporaire pour partager des données)

Toutes les « ressources » (fichiers xml, images, styles, etc) sont
accessibles à toutes les applications

IOS ne permet pas le partage de fichier.
Gestion des comptes

Framework centralisé et protégé compatible OAuth2
(settings/account)
A UTILISER systématiquement
Ne pas demander les user/password dans chaque application
Permet de proposer un token aux autres applications sans
exposer les ids
Plus complexe à coder, mais plus d'ouverture et de sécurité
Reset automatique de tous les passwords lors d'un changement
de carte SIM
Secrets en caches dans le frameworks

IOS ne propose pas de compte centralisé.
Comment sont vérifiées les permissions ?

Aucun service ou périphérique critique n'est directement
accessible aux applications (/dev n’est pas accessible)
Les applications doivent communiquer avec le processus
system_app
Ce dernier vérifie les privilèges du processus appelant
Car le mécanisme Binder (AIDL) injecte l'UID et le PID de
l'appelant
Les permissions sont déclarées par les applications dans
AndroidManifest.xml
Développement

Très différents d'un développement Java classique
Il faut oublier les bonnes pratiques J2EE pour privilégier les
performances
Le code est complexe, difficile à déverminer, car il existe de nombreux
scénarios d'usages (basculement de l'écran, perte de l'application en
cours de route, etc.).
Utilisation systématique du multitâche
Mais, le résultat peut être portable sur téléphone, télévision, tablette,
voiture, etc.

23
Intégration

En acceptant de suivre les bonnes pratiques
Très forte possibilité d'intégration entre les applications
Invocation d'écrans/services des autres applications
Possibilité de publier des services/écrans/données pour les autres
applications
En cas d’ambiguïté, l'utilisateur sélectionne l'application

Le framework est très ouverts
Pas d'adhérence avec un fournisseur de contact particulier, un partage
de contenu, etc.
La notion d'Intent est proposé comme spécification pour le Web (Web
Intent)

24
Exemple d’architecture modulaire

Plugin 1
Plugin 2

ContentProvider

WS back end

Main

Async

Activité

APK
• Mise à jour individuelle de chaque module
• Extension de l’application suivant les plugins présent
• Synchronisation au bon moment
25
Par rapport à IOS

Langage compilé
Très peu de partage entre les applications
Pas de navigation entres applications
Isolation très forte entre les applications
Sécurité non extensible
Multitâche de moins en moins limité
Acceptation de plusieurs hauteurs des écrans (pas encore de plusieurs
largeurs)

26
Développement

Deux environnements
Eclipse
Android Studio (Beta)

Les sources
http://source.android.com/

Émulateur PC très rapide
Genymotion (http://www.genymotion.com/)

Pour tester
Téléphone Android 2.3
Téléphone Android 4.3 (Famille Nexus pour suivre rapidement les versions)
Tablette 7"
Tablette 10"

27
Questions

Des questions ?

Más contenido relacionado

La actualidad más candente

OWASP Mobile Top10 - Les 10 risques sur les mobiles
OWASP Mobile Top10 -  Les 10 risques sur les mobilesOWASP Mobile Top10 -  Les 10 risques sur les mobiles
OWASP Mobile Top10 - Les 10 risques sur les mobilesSébastien GIORIA
 
Comment protéger les applications mobiles?
Comment protéger les applications mobiles?Comment protéger les applications mobiles?
Comment protéger les applications mobiles?Marie-Claire Willig
 
Sécurité des applications Web
Sécurité des applications WebSécurité des applications Web
Sécurité des applications WebKlee Group
 
OCTO 2012 : Les pratiques des geants du web
OCTO 2012 : Les pratiques des geants du web OCTO 2012 : Les pratiques des geants du web
OCTO 2012 : Les pratiques des geants du web OCTO Technology
 
Applications métiers et/ou d'entreprise sur Windows Phone 7 - bonnes pratique...
Applications métiers et/ou d'entreprise sur Windows Phone 7 - bonnes pratique...Applications métiers et/ou d'entreprise sur Windows Phone 7 - bonnes pratique...
Applications métiers et/ou d'entreprise sur Windows Phone 7 - bonnes pratique...Microsoft
 
BYOD : les nouveaux scénarios d’authentification adaptés au monde de l’entrep...
BYOD : les nouveaux scénarios d’authentification adaptés au monde de l’entrep...BYOD : les nouveaux scénarios d’authentification adaptés au monde de l’entrep...
BYOD : les nouveaux scénarios d’authentification adaptés au monde de l’entrep...Microsoft
 
ASFWS 2013 - Quels sont les défis de la fédération d’identité dans le Cloud ?...
ASFWS 2013 - Quels sont les défis de la fédération d’identité dans le Cloud ?...ASFWS 2013 - Quels sont les défis de la fédération d’identité dans le Cloud ?...
ASFWS 2013 - Quels sont les défis de la fédération d’identité dans le Cloud ?...Cyber Security Alliance
 
Google glass droidcon - DroidCon Paris 2014
Google glass droidcon - DroidCon Paris 2014Google glass droidcon - DroidCon Paris 2014
Google glass droidcon - DroidCon Paris 2014Paris Android User Group
 
Améliorer votre productivité XAML en entreprise !
Améliorer votre productivité XAML en entreprise !Améliorer votre productivité XAML en entreprise !
Améliorer votre productivité XAML en entreprise !Microsoft
 
OCTO 2013 Professionnalisez vos développements mobiles
OCTO 2013 Professionnalisez vos développements mobilesOCTO 2013 Professionnalisez vos développements mobiles
OCTO 2013 Professionnalisez vos développements mobilesOCTO Technology
 
Authentification Forte Cours UNI 2002
Authentification Forte Cours UNI 2002Authentification Forte Cours UNI 2002
Authentification Forte Cours UNI 2002Sylvain Maret
 
OCTO 2013 : gérez vos apps, pas vos devices
OCTO 2013 : gérez vos apps, pas vos devicesOCTO 2013 : gérez vos apps, pas vos devices
OCTO 2013 : gérez vos apps, pas vos devicesOCTO Technology
 
Guide de mise en oeuvre de l'authentification forte
Guide de mise en oeuvre de l'authentification forteGuide de mise en oeuvre de l'authentification forte
Guide de mise en oeuvre de l'authentification forteNis
 
Conférence "Architecture Android" du 19 Mars 2013 par Mathias Seguy fondateur...
Conférence "Architecture Android" du 19 Mars 2013 par Mathias Seguy fondateur...Conférence "Architecture Android" du 19 Mars 2013 par Mathias Seguy fondateur...
Conférence "Architecture Android" du 19 Mars 2013 par Mathias Seguy fondateur...Mathias Seguy
 

La actualidad más candente (19)

OWASP Mobile Top10 - Les 10 risques sur les mobiles
OWASP Mobile Top10 -  Les 10 risques sur les mobilesOWASP Mobile Top10 -  Les 10 risques sur les mobiles
OWASP Mobile Top10 - Les 10 risques sur les mobiles
 
Comment protéger les applications mobiles?
Comment protéger les applications mobiles?Comment protéger les applications mobiles?
Comment protéger les applications mobiles?
 
Applications mobiles et sécurité
Applications mobiles et sécuritéApplications mobiles et sécurité
Applications mobiles et sécurité
 
Sécurité des applications Web
Sécurité des applications WebSécurité des applications Web
Sécurité des applications Web
 
Windows Phone 8.1 et la sécurité
Windows Phone 8.1 et la sécuritéWindows Phone 8.1 et la sécurité
Windows Phone 8.1 et la sécurité
 
OCTO 2012 : Les pratiques des geants du web
OCTO 2012 : Les pratiques des geants du web OCTO 2012 : Les pratiques des geants du web
OCTO 2012 : Les pratiques des geants du web
 
Applications métiers et/ou d'entreprise sur Windows Phone 7 - bonnes pratique...
Applications métiers et/ou d'entreprise sur Windows Phone 7 - bonnes pratique...Applications métiers et/ou d'entreprise sur Windows Phone 7 - bonnes pratique...
Applications métiers et/ou d'entreprise sur Windows Phone 7 - bonnes pratique...
 
BYOD : les nouveaux scénarios d’authentification adaptés au monde de l’entrep...
BYOD : les nouveaux scénarios d’authentification adaptés au monde de l’entrep...BYOD : les nouveaux scénarios d’authentification adaptés au monde de l’entrep...
BYOD : les nouveaux scénarios d’authentification adaptés au monde de l’entrep...
 
Programmation sous Android
Programmation sous AndroidProgrammation sous Android
Programmation sous Android
 
ASFWS 2013 - Quels sont les défis de la fédération d’identité dans le Cloud ?...
ASFWS 2013 - Quels sont les défis de la fédération d’identité dans le Cloud ?...ASFWS 2013 - Quels sont les défis de la fédération d’identité dans le Cloud ?...
ASFWS 2013 - Quels sont les défis de la fédération d’identité dans le Cloud ?...
 
Google glass droidcon - DroidCon Paris 2014
Google glass droidcon - DroidCon Paris 2014Google glass droidcon - DroidCon Paris 2014
Google glass droidcon - DroidCon Paris 2014
 
Améliorer votre productivité XAML en entreprise !
Améliorer votre productivité XAML en entreprise !Améliorer votre productivité XAML en entreprise !
Améliorer votre productivité XAML en entreprise !
 
OCTO 2013 Professionnalisez vos développements mobiles
OCTO 2013 Professionnalisez vos développements mobilesOCTO 2013 Professionnalisez vos développements mobiles
OCTO 2013 Professionnalisez vos développements mobiles
 
Windows Phone 8 et la sécurité
Windows Phone 8 et la sécuritéWindows Phone 8 et la sécurité
Windows Phone 8 et la sécurité
 
Authentification Forte Cours UNI 2002
Authentification Forte Cours UNI 2002Authentification Forte Cours UNI 2002
Authentification Forte Cours UNI 2002
 
Sécurité informatique mobile cloud astoine maroc francais
Sécurité informatique mobile cloud astoine maroc francaisSécurité informatique mobile cloud astoine maroc francais
Sécurité informatique mobile cloud astoine maroc francais
 
OCTO 2013 : gérez vos apps, pas vos devices
OCTO 2013 : gérez vos apps, pas vos devicesOCTO 2013 : gérez vos apps, pas vos devices
OCTO 2013 : gérez vos apps, pas vos devices
 
Guide de mise en oeuvre de l'authentification forte
Guide de mise en oeuvre de l'authentification forteGuide de mise en oeuvre de l'authentification forte
Guide de mise en oeuvre de l'authentification forte
 
Conférence "Architecture Android" du 19 Mars 2013 par Mathias Seguy fondateur...
Conférence "Architecture Android" du 19 Mars 2013 par Mathias Seguy fondateur...Conférence "Architecture Android" du 19 Mars 2013 par Mathias Seguy fondateur...
Conférence "Architecture Android" du 19 Mars 2013 par Mathias Seguy fondateur...
 

Destacado

Futures and Rx Observables: powerful abstractions for consuming web services ...
Futures and Rx Observables: powerful abstractions for consuming web services ...Futures and Rx Observables: powerful abstractions for consuming web services ...
Futures and Rx Observables: powerful abstractions for consuming web services ...Chris Richardson
 
Events on the outside, on the inside and at the core (jfokus jfokus2016)
Events on the outside, on the inside and at the core (jfokus jfokus2016)Events on the outside, on the inside and at the core (jfokus jfokus2016)
Events on the outside, on the inside and at the core (jfokus jfokus2016)Chris Richardson
 
Down-to-Earth Microservices with Java EE
Down-to-Earth Microservices with Java EEDown-to-Earth Microservices with Java EE
Down-to-Earth Microservices with Java EEReza Rahman
 
(5econf) 16h15 Automate d'appel
(5econf) 16h15 Automate d'appel(5econf) 16h15 Automate d'appel
(5econf) 16h15 Automate d'appelK2 Geospatial
 
Centre Raymond-Préfontaine - Présentation du 4 mai 2011
Centre Raymond-Préfontaine - Présentation du 4 mai 2011Centre Raymond-Préfontaine - Présentation du 4 mai 2011
Centre Raymond-Préfontaine - Présentation du 4 mai 2011Louis-Alexandre Cazal
 
Conecta joven Mejor Iniciativa Global en Telecentros #spark13
Conecta joven Mejor Iniciativa Global en Telecentros #spark13Conecta joven Mejor Iniciativa Global en Telecentros #spark13
Conecta joven Mejor Iniciativa Global en Telecentros #spark13e-Inclusión Fundación Esplai
 
Redes sociales
Redes socialesRedes sociales
Redes socialesvaraps11
 
Presentation offres nancy_porte sud
Presentation offres nancy_porte sudPresentation offres nancy_porte sud
Presentation offres nancy_porte sudSebastien Seblin
 
Consensus et vérité, risque et précaution… L’exemple des évolutions climatiqu...
Consensus et vérité, risque et précaution… L’exemple des évolutions climatiqu...Consensus et vérité, risque et précaution… L’exemple des évolutions climatiqu...
Consensus et vérité, risque et précaution… L’exemple des évolutions climatiqu...Fondation Res Publica
 
Kick-OFF - Coup d'envoi de la rentrée 2014 des projets d'Open Food Facts
Kick-OFF - Coup d'envoi de la rentrée 2014 des projets d'Open Food FactsKick-OFF - Coup d'envoi de la rentrée 2014 des projets d'Open Food Facts
Kick-OFF - Coup d'envoi de la rentrée 2014 des projets d'Open Food FactsStéphane Gigandet
 
Practica2 ataque troyano
Practica2 ataque troyanoPractica2 ataque troyano
Practica2 ataque troyanoCarolina Diaz
 
La famille et professions
La famille et professionsLa famille et professions
La famille et professionsatoroperez
 
Reflexiones de un bloguero laboralista sobre el empleo y la formación. Recopi...
Reflexiones de un bloguero laboralista sobre el empleo y la formación. Recopi...Reflexiones de un bloguero laboralista sobre el empleo y la formación. Recopi...
Reflexiones de un bloguero laboralista sobre el empleo y la formación. Recopi...Universidad Autónoma de Barcelona
 
Citizen Act - Next steps
Citizen Act - Next stepsCitizen Act - Next steps
Citizen Act - Next stepsCITIZEN ACT
 
Lycee gt ressources_2_exploration_eco-gest_148860
Lycee gt ressources_2_exploration_eco-gest_148860Lycee gt ressources_2_exploration_eco-gest_148860
Lycee gt ressources_2_exploration_eco-gest_148860Lycée Condorcet
 

Destacado (20)

Futures and Rx Observables: powerful abstractions for consuming web services ...
Futures and Rx Observables: powerful abstractions for consuming web services ...Futures and Rx Observables: powerful abstractions for consuming web services ...
Futures and Rx Observables: powerful abstractions for consuming web services ...
 
Events on the outside, on the inside and at the core (jfokus jfokus2016)
Events on the outside, on the inside and at the core (jfokus jfokus2016)Events on the outside, on the inside and at the core (jfokus jfokus2016)
Events on the outside, on the inside and at the core (jfokus jfokus2016)
 
Down-to-Earth Microservices with Java EE
Down-to-Earth Microservices with Java EEDown-to-Earth Microservices with Java EE
Down-to-Earth Microservices with Java EE
 
(5econf) 16h15 Automate d'appel
(5econf) 16h15 Automate d'appel(5econf) 16h15 Automate d'appel
(5econf) 16h15 Automate d'appel
 
Centre Raymond-Préfontaine - Présentation du 4 mai 2011
Centre Raymond-Préfontaine - Présentation du 4 mai 2011Centre Raymond-Préfontaine - Présentation du 4 mai 2011
Centre Raymond-Préfontaine - Présentation du 4 mai 2011
 
Conecta joven Mejor Iniciativa Global en Telecentros #spark13
Conecta joven Mejor Iniciativa Global en Telecentros #spark13Conecta joven Mejor Iniciativa Global en Telecentros #spark13
Conecta joven Mejor Iniciativa Global en Telecentros #spark13
 
Redes sociales
Redes socialesRedes sociales
Redes sociales
 
Red conecta feb2011
Red conecta feb2011Red conecta feb2011
Red conecta feb2011
 
Fotos sub mar_difi
Fotos sub mar_difiFotos sub mar_difi
Fotos sub mar_difi
 
Presentation offres nancy_porte sud
Presentation offres nancy_porte sudPresentation offres nancy_porte sud
Presentation offres nancy_porte sud
 
Consensus et vérité, risque et précaution… L’exemple des évolutions climatiqu...
Consensus et vérité, risque et précaution… L’exemple des évolutions climatiqu...Consensus et vérité, risque et précaution… L’exemple des évolutions climatiqu...
Consensus et vérité, risque et précaution… L’exemple des évolutions climatiqu...
 
Kick-OFF - Coup d'envoi de la rentrée 2014 des projets d'Open Food Facts
Kick-OFF - Coup d'envoi de la rentrée 2014 des projets d'Open Food FactsKick-OFF - Coup d'envoi de la rentrée 2014 des projets d'Open Food Facts
Kick-OFF - Coup d'envoi de la rentrée 2014 des projets d'Open Food Facts
 
Practica2 ataque troyano
Practica2 ataque troyanoPractica2 ataque troyano
Practica2 ataque troyano
 
2 da.sesión.cultivo%20y%20manejo%20de%20forrajes.mara
2 da.sesión.cultivo%20y%20manejo%20de%20forrajes.mara2 da.sesión.cultivo%20y%20manejo%20de%20forrajes.mara
2 da.sesión.cultivo%20y%20manejo%20de%20forrajes.mara
 
La famille et professions
La famille et professionsLa famille et professions
La famille et professions
 
Reflexiones de un bloguero laboralista sobre el empleo y la formación. Recopi...
Reflexiones de un bloguero laboralista sobre el empleo y la formación. Recopi...Reflexiones de un bloguero laboralista sobre el empleo y la formación. Recopi...
Reflexiones de un bloguero laboralista sobre el empleo y la formación. Recopi...
 
Citizen Act - Next steps
Citizen Act - Next stepsCitizen Act - Next steps
Citizen Act - Next steps
 
Red conecta red de telecentros sostenible
Red conecta  red de telecentros sostenibleRed conecta  red de telecentros sostenible
Red conecta red de telecentros sostenible
 
Lycee gt ressources_2_exploration_eco-gest_148860
Lycee gt ressources_2_exploration_eco-gest_148860Lycee gt ressources_2_exploration_eco-gest_148860
Lycee gt ressources_2_exploration_eco-gest_148860
 
Lecturas ángela
Lecturas ángelaLecturas ángela
Lecturas ángela
 

Similar a Architecture android

Projet de fin d étude (1)
Projet de fin d étude (1)Projet de fin d étude (1)
Projet de fin d étude (1)Sanaa Guissar
 
01 programmation mobile - android - (introduction)
01 programmation mobile - android - (introduction)01 programmation mobile - android - (introduction)
01 programmation mobile - android - (introduction)TECOS
 
Ch1. Développement mobile
Ch1. Développement mobileCh1. Développement mobile
Ch1. Développement mobileHaifa Chorfi
 
Introduction_Android_-_Complet.pdf
Introduction_Android_-_Complet.pdfIntroduction_Android_-_Complet.pdf
Introduction_Android_-_Complet.pdfmed_univ78
 
Open Data Ready ! Libérez vos données avec OData et le Cloud
Open Data Ready ! Libérez vos données avec OData et le CloudOpen Data Ready ! Libérez vos données avec OData et le Cloud
Open Data Ready ! Libérez vos données avec OData et le CloudMicrosoft
 
P1 introduction à android
P1 introduction à androidP1 introduction à android
P1 introduction à androidLilia Sfaxi
 
cours-android.pdf
cours-android.pdfcours-android.pdf
cours-android.pdfmed_univ78
 
Introduction au développement Android
Introduction au développement AndroidIntroduction au développement Android
Introduction au développement AndroidSteve Tremblay
 
Environnement Android.pdf
Environnement Android.pdfEnvironnement Android.pdf
Environnement Android.pdfRihabBENLAMINE
 
Android fundamentals and communication with Java EE Application
Android fundamentals and communication with Java EE ApplicationAndroid fundamentals and communication with Java EE Application
Android fundamentals and communication with Java EE ApplicationAdil Ourida
 

Similar a Architecture android (20)

Cours 1 Android
Cours 1 AndroidCours 1 Android
Cours 1 Android
 
Chapitre 4 sem
Chapitre 4 semChapitre 4 sem
Chapitre 4 sem
 
Projet de fin d étude (1)
Projet de fin d étude (1)Projet de fin d étude (1)
Projet de fin d étude (1)
 
01 programmation mobile - android - (introduction)
01 programmation mobile - android - (introduction)01 programmation mobile - android - (introduction)
01 programmation mobile - android - (introduction)
 
Android introvf
Android introvfAndroid introvf
Android introvf
 
cours.pdf
cours.pdfcours.pdf
cours.pdf
 
Ch1. Développement mobile
Ch1. Développement mobileCh1. Développement mobile
Ch1. Développement mobile
 
Intro Android
Intro AndroidIntro Android
Intro Android
 
Introduction_Android_-_Complet.pdf
Introduction_Android_-_Complet.pdfIntroduction_Android_-_Complet.pdf
Introduction_Android_-_Complet.pdf
 
Open Data Ready ! Libérez vos données avec OData et le Cloud
Open Data Ready ! Libérez vos données avec OData et le CloudOpen Data Ready ! Libérez vos données avec OData et le Cloud
Open Data Ready ! Libérez vos données avec OData et le Cloud
 
P1 introduction à android
P1 introduction à androidP1 introduction à android
P1 introduction à android
 
android.pdf
android.pdfandroid.pdf
android.pdf
 
cours-android.pdf
cours-android.pdfcours-android.pdf
cours-android.pdf
 
Apple - WWDC 2018
Apple - WWDC 2018Apple - WWDC 2018
Apple - WWDC 2018
 
Introduction au développement Android
Introduction au développement AndroidIntroduction au développement Android
Introduction au développement Android
 
Développement Sous Android
Développement Sous AndroidDéveloppement Sous Android
Développement Sous Android
 
Cyberun #12
Cyberun #12Cyberun #12
Cyberun #12
 
Environnement Android.pdf
Environnement Android.pdfEnvironnement Android.pdf
Environnement Android.pdf
 
Android fundamentals and communication with Java EE Application
Android fundamentals and communication with Java EE ApplicationAndroid fundamentals and communication with Java EE Application
Android fundamentals and communication with Java EE Application
 
Cours architecture
Cours architectureCours architecture
Cours architecture
 

Más de OCTO Technology

Le Comptoir OCTO - Se conformer à la CSRD : un levier d'action insoupçonné
Le Comptoir OCTO - Se conformer à la CSRD : un levier d'action insoupçonnéLe Comptoir OCTO - Se conformer à la CSRD : un levier d'action insoupçonné
Le Comptoir OCTO - Se conformer à la CSRD : un levier d'action insoupçonnéOCTO Technology
 
Le Comptoir OCTO - MLOps : Les patterns MLOps dans le cloud
Le Comptoir OCTO - MLOps : Les patterns MLOps dans le cloudLe Comptoir OCTO - MLOps : Les patterns MLOps dans le cloud
Le Comptoir OCTO - MLOps : Les patterns MLOps dans le cloudOCTO Technology
 
La Grosse Conf 2024 - Philippe Stepniewski -Atelier - Live coding d'une base ...
La Grosse Conf 2024 - Philippe Stepniewski -Atelier - Live coding d'une base ...La Grosse Conf 2024 - Philippe Stepniewski -Atelier - Live coding d'une base ...
La Grosse Conf 2024 - Philippe Stepniewski -Atelier - Live coding d'une base ...OCTO Technology
 
La Grosse Conf 2024 - Philippe Prados - Atelier - RAG : au-delà de la démonst...
La Grosse Conf 2024 - Philippe Prados - Atelier - RAG : au-delà de la démonst...La Grosse Conf 2024 - Philippe Prados - Atelier - RAG : au-delà de la démonst...
La Grosse Conf 2024 - Philippe Prados - Atelier - RAG : au-delà de la démonst...OCTO Technology
 
Le Comptoir OCTO - Maîtriser le RAG : connecter les modèles d’IA génératives ...
Le Comptoir OCTO - Maîtriser le RAG : connecter les modèles d’IA génératives ...Le Comptoir OCTO - Maîtriser le RAG : connecter les modèles d’IA génératives ...
Le Comptoir OCTO - Maîtriser le RAG : connecter les modèles d’IA génératives ...OCTO Technology
 
OCTO Talks - Les IA s'invitent au chevet des développeurs
OCTO Talks - Les IA s'invitent au chevet des développeursOCTO Talks - Les IA s'invitent au chevet des développeurs
OCTO Talks - Les IA s'invitent au chevet des développeursOCTO Technology
 
OCTO Talks - Lancement du livre Culture Test
OCTO Talks - Lancement du livre Culture TestOCTO Talks - Lancement du livre Culture Test
OCTO Talks - Lancement du livre Culture TestOCTO Technology
 
Le Comptoir OCTO - Green AI, comment éviter que votre votre potion magique d’...
Le Comptoir OCTO - Green AI, comment éviter que votre votre potion magique d’...Le Comptoir OCTO - Green AI, comment éviter que votre votre potion magique d’...
Le Comptoir OCTO - Green AI, comment éviter que votre votre potion magique d’...OCTO Technology
 
OCTO Talks - State of the art Architecture dans les frontend web
OCTO Talks - State of the art Architecture dans les frontend webOCTO Talks - State of the art Architecture dans les frontend web
OCTO Talks - State of the art Architecture dans les frontend webOCTO Technology
 
Comptoir OCTO ALD Automotive/Leaseplan
Comptoir OCTO ALD Automotive/LeaseplanComptoir OCTO ALD Automotive/Leaseplan
Comptoir OCTO ALD Automotive/LeaseplanOCTO Technology
 
Le Comptoir OCTO - Comment optimiser les stocks en linéaire par la Data ?
Le Comptoir OCTO - Comment optimiser les stocks en linéaire par la Data ? Le Comptoir OCTO - Comment optimiser les stocks en linéaire par la Data ?
Le Comptoir OCTO - Comment optimiser les stocks en linéaire par la Data ? OCTO Technology
 
Le Comptoir OCTO - Retour sur 5 ans de mise en oeuvre : Comment le RGPD a réi...
Le Comptoir OCTO - Retour sur 5 ans de mise en oeuvre : Comment le RGPD a réi...Le Comptoir OCTO - Retour sur 5 ans de mise en oeuvre : Comment le RGPD a réi...
Le Comptoir OCTO - Retour sur 5 ans de mise en oeuvre : Comment le RGPD a réi...OCTO Technology
 
Le Comptoir OCTO - Affinez vos forecasts avec la planification distribuée et...
Le Comptoir OCTO -  Affinez vos forecasts avec la planification distribuée et...Le Comptoir OCTO -  Affinez vos forecasts avec la planification distribuée et...
Le Comptoir OCTO - Affinez vos forecasts avec la planification distribuée et...OCTO Technology
 
Le Comptoir OCTO - La formation au cœur de la stratégie d’éco-conception
Le Comptoir OCTO - La formation au cœur de la stratégie d’éco-conceptionLe Comptoir OCTO - La formation au cœur de la stratégie d’éco-conception
Le Comptoir OCTO - La formation au cœur de la stratégie d’éco-conceptionOCTO Technology
 
Le Comptoir OCTO - Une vision de plateforme sans leadership tech n’est qu’hal...
Le Comptoir OCTO - Une vision de plateforme sans leadership tech n’est qu’hal...Le Comptoir OCTO - Une vision de plateforme sans leadership tech n’est qu’hal...
Le Comptoir OCTO - Une vision de plateforme sans leadership tech n’est qu’hal...OCTO Technology
 
Le Comptoir OCTO - L'avenir de la gestion du bilan carbone : les solutions E...
Le Comptoir OCTO - L'avenir de la gestion du bilan carbone :  les solutions E...Le Comptoir OCTO - L'avenir de la gestion du bilan carbone :  les solutions E...
Le Comptoir OCTO - L'avenir de la gestion du bilan carbone : les solutions E...OCTO Technology
 
Le Comptoir OCTO - Continuous discovery et continuous delivery pour construir...
Le Comptoir OCTO - Continuous discovery et continuous delivery pour construir...Le Comptoir OCTO - Continuous discovery et continuous delivery pour construir...
Le Comptoir OCTO - Continuous discovery et continuous delivery pour construir...OCTO Technology
 
RefCard Tests sur tous les fronts
RefCard Tests sur tous les frontsRefCard Tests sur tous les fronts
RefCard Tests sur tous les frontsOCTO Technology
 
RefCard RESTful API Design
RefCard RESTful API DesignRefCard RESTful API Design
RefCard RESTful API DesignOCTO Technology
 

Más de OCTO Technology (20)

Le Comptoir OCTO - Se conformer à la CSRD : un levier d'action insoupçonné
Le Comptoir OCTO - Se conformer à la CSRD : un levier d'action insoupçonnéLe Comptoir OCTO - Se conformer à la CSRD : un levier d'action insoupçonné
Le Comptoir OCTO - Se conformer à la CSRD : un levier d'action insoupçonné
 
Le Comptoir OCTO - MLOps : Les patterns MLOps dans le cloud
Le Comptoir OCTO - MLOps : Les patterns MLOps dans le cloudLe Comptoir OCTO - MLOps : Les patterns MLOps dans le cloud
Le Comptoir OCTO - MLOps : Les patterns MLOps dans le cloud
 
La Grosse Conf 2024 - Philippe Stepniewski -Atelier - Live coding d'une base ...
La Grosse Conf 2024 - Philippe Stepniewski -Atelier - Live coding d'une base ...La Grosse Conf 2024 - Philippe Stepniewski -Atelier - Live coding d'une base ...
La Grosse Conf 2024 - Philippe Stepniewski -Atelier - Live coding d'une base ...
 
La Grosse Conf 2024 - Philippe Prados - Atelier - RAG : au-delà de la démonst...
La Grosse Conf 2024 - Philippe Prados - Atelier - RAG : au-delà de la démonst...La Grosse Conf 2024 - Philippe Prados - Atelier - RAG : au-delà de la démonst...
La Grosse Conf 2024 - Philippe Prados - Atelier - RAG : au-delà de la démonst...
 
Le Comptoir OCTO - Maîtriser le RAG : connecter les modèles d’IA génératives ...
Le Comptoir OCTO - Maîtriser le RAG : connecter les modèles d’IA génératives ...Le Comptoir OCTO - Maîtriser le RAG : connecter les modèles d’IA génératives ...
Le Comptoir OCTO - Maîtriser le RAG : connecter les modèles d’IA génératives ...
 
OCTO Talks - Les IA s'invitent au chevet des développeurs
OCTO Talks - Les IA s'invitent au chevet des développeursOCTO Talks - Les IA s'invitent au chevet des développeurs
OCTO Talks - Les IA s'invitent au chevet des développeurs
 
OCTO Talks - Lancement du livre Culture Test
OCTO Talks - Lancement du livre Culture TestOCTO Talks - Lancement du livre Culture Test
OCTO Talks - Lancement du livre Culture Test
 
Le Comptoir OCTO - Green AI, comment éviter que votre votre potion magique d’...
Le Comptoir OCTO - Green AI, comment éviter que votre votre potion magique d’...Le Comptoir OCTO - Green AI, comment éviter que votre votre potion magique d’...
Le Comptoir OCTO - Green AI, comment éviter que votre votre potion magique d’...
 
OCTO Talks - State of the art Architecture dans les frontend web
OCTO Talks - State of the art Architecture dans les frontend webOCTO Talks - State of the art Architecture dans les frontend web
OCTO Talks - State of the art Architecture dans les frontend web
 
Refcard GraphQL
Refcard GraphQLRefcard GraphQL
Refcard GraphQL
 
Comptoir OCTO ALD Automotive/Leaseplan
Comptoir OCTO ALD Automotive/LeaseplanComptoir OCTO ALD Automotive/Leaseplan
Comptoir OCTO ALD Automotive/Leaseplan
 
Le Comptoir OCTO - Comment optimiser les stocks en linéaire par la Data ?
Le Comptoir OCTO - Comment optimiser les stocks en linéaire par la Data ? Le Comptoir OCTO - Comment optimiser les stocks en linéaire par la Data ?
Le Comptoir OCTO - Comment optimiser les stocks en linéaire par la Data ?
 
Le Comptoir OCTO - Retour sur 5 ans de mise en oeuvre : Comment le RGPD a réi...
Le Comptoir OCTO - Retour sur 5 ans de mise en oeuvre : Comment le RGPD a réi...Le Comptoir OCTO - Retour sur 5 ans de mise en oeuvre : Comment le RGPD a réi...
Le Comptoir OCTO - Retour sur 5 ans de mise en oeuvre : Comment le RGPD a réi...
 
Le Comptoir OCTO - Affinez vos forecasts avec la planification distribuée et...
Le Comptoir OCTO -  Affinez vos forecasts avec la planification distribuée et...Le Comptoir OCTO -  Affinez vos forecasts avec la planification distribuée et...
Le Comptoir OCTO - Affinez vos forecasts avec la planification distribuée et...
 
Le Comptoir OCTO - La formation au cœur de la stratégie d’éco-conception
Le Comptoir OCTO - La formation au cœur de la stratégie d’éco-conceptionLe Comptoir OCTO - La formation au cœur de la stratégie d’éco-conception
Le Comptoir OCTO - La formation au cœur de la stratégie d’éco-conception
 
Le Comptoir OCTO - Une vision de plateforme sans leadership tech n’est qu’hal...
Le Comptoir OCTO - Une vision de plateforme sans leadership tech n’est qu’hal...Le Comptoir OCTO - Une vision de plateforme sans leadership tech n’est qu’hal...
Le Comptoir OCTO - Une vision de plateforme sans leadership tech n’est qu’hal...
 
Le Comptoir OCTO - L'avenir de la gestion du bilan carbone : les solutions E...
Le Comptoir OCTO - L'avenir de la gestion du bilan carbone :  les solutions E...Le Comptoir OCTO - L'avenir de la gestion du bilan carbone :  les solutions E...
Le Comptoir OCTO - L'avenir de la gestion du bilan carbone : les solutions E...
 
Le Comptoir OCTO - Continuous discovery et continuous delivery pour construir...
Le Comptoir OCTO - Continuous discovery et continuous delivery pour construir...Le Comptoir OCTO - Continuous discovery et continuous delivery pour construir...
Le Comptoir OCTO - Continuous discovery et continuous delivery pour construir...
 
RefCard Tests sur tous les fronts
RefCard Tests sur tous les frontsRefCard Tests sur tous les fronts
RefCard Tests sur tous les fronts
 
RefCard RESTful API Design
RefCard RESTful API DesignRefCard RESTful API Design
RefCard RESTful API Design
 

Architecture android

  • 1. Architecture Android Les spécificités de l’OS Philippe Prados © OCTO 2012 50, avenue des Champs-Elysées 75008 Paris - FRANCE Tél : +33 (0)1 58 56 10 00 Fax : +33 (0)1 58 56 10 01 www.octo.com
  • 3. Offre d’OCTO OCTO dispose d’une offre originale pour bâtir des SI et des applications innovantes en phase avec la complexité des enjeux métiers de ses clients. Elle se décline autour de 4 thématiques. Architecture & Technologie Définition d’architecture Audits techniques et applicatifs Aide au choix de solutions / Technologies Expertises : IHM, Cloud, NoSQL, BI, sécurité Task force Pilotage du SI Réalisation de schémas directeurs IT Réalisation d’audits de SI Application Portfolio Management Gouvernance et urbanisme Accompagnement au changement Accompagnement / coaching projets en mode agile (MOA+ MOE + prod) Mise en place de pratiques Lean IT Mise en place de démarches de tests et d’industrialisation Réalisation de projets stratégiques & innovants Brainstorm et conception de produits Spécifications et développements agiles itératifs Mise en production et suivi du produit 3
  • 5. Les fondamentaux d'Android Quels sont les principes ayant guidés à la conception d'Android ? Pourquoi le framework est-il conçu comme cela ? Quels sont les avantages des choix initiaux ? 5
  • 6. La stratégie Exécution dans un environnement extrêmement contraint : CPU peu puissante Peu de mémoire Réseau chaotique Batterie à économiser au maximum Traitements prioritaires (la réception d'un appel) Il faut économiser la moindre ressource ! Sécurité in-board (protection entre et contre les applications) Cela apparaît dans tous les choix d'architecture du framework IOS à les mêmes contraintes 6
  • 7. Peu de concepts Activités Fournisseurs de contenus Broadcasts Services IDL L’architecture a résisté à cinq ans de concurrence forte Sans remise en cause des fondamentaux Évolution à la marge Interface utilisateur Notion de « plusieurs utilisateurs » Renforcement de la sécurité IOS utilise une approche totalement différente 7
  • 8. Les activités Basées sur le modèle des pages Web. Identifiées par une « Intention », sorte de requête HTTP enrichie (URL, action, type mime, extra) Cycle de vie fragile (comme les pages Web). Une activité meurt lors de l'affichage de la suivante ou du basculement de l'écran. Mais, si Android est sympa, il peut la garder en cache avant de la reprendre. Les données d'une activité ne sont pas pérennes Android mémorise l'historique de navigation entre les activités (d'où le bouton « retour ») Ainsi, une activité peut déclencher l'affichage d'une activité d'une autre application Et il est possible de revenir à l'activité précédente (même d'une autre application). 8
  • 9. Les fournisseurs de contenus Permettent d'exposer des données aux autres applications via une API de type REST. Toutes les données sont identifiées par une URI (content://contacts/people/1) Doivent offrir les quatre services de manipulations classiques (création, modification, consultation, effacement ) La consultation doit répondre à une requête et retourner un Curseur. L'implémentation est libre (SQLite interne, fichiers plats, requêtes Web, etc.) Ne permet pas les jointures entres fournisseurs de contenus. Fournisseurs de contenus pour les contacts, les images, les vidéos, les son, etc. Permet aux éditeurs de proposer des personnalisations au niveau design, sans casser la compatibilité. 9
  • 10. Les receveurs broadcast Composants à l'écoute d’événements génériques Activation / désactivation Wifi ou Bluetooth Installation d'une application Push Etc. Permettent de réveiller l'application lors d’événements majeurs. Une application n'a pas besoin d'être vivante pour recevoir un événement ! 10
  • 11. Les services Deux usages : Offrir des traitements en tâche de fond Permettre la communication entres objets de différents processus Éviter de perdre l’application pendant un traitement Reprise possible après un crash AIDL (Android Interface Definition Language) Invocation de méthode entres applications très utilisés par le framework Android (même si les développeurs l'ignorent) Utilise un module noyau linux spécifique. Il injecte les éléments de sécurités. IOS permet sous certaines contraintes, les traitements en tâche de fond. 11
  • 12. Déclaration des composants Dans le fichier AndroidManifest.xml de chaque application. Permet d'identifier les applications à déclencher, sans avoir à les exécuter (enregistrement passif) Ainsi, les applications peuvent réagir aux événements sans consommation de ressources Ouverture d’une activité dont l’Intent correspond à un filtre Réception d’un évènement broadcast Démarrage d’un service IOS: les applications doivent être activent pour réagir. 12
  • 13. Cycle de vie Android gère le cycle de vie des applications : Évite autant que possible de tuer une application Mais n'hésite pas à le faire s'il a besoin de ressources complémentaires À minima, comme sur d'autres plates-formes mobiles, il n'y a qu'une seule application active à la fois, celle présentée à l'utilisateur. Lorsque l'utilisateur retourne à une application (bouton retour, sélection de l'application, etc.) il peut être nécessaire de la réinitialiser si elle n'était plus active (d'où un délai parfois long). Si un service est en fonctionnement, l’application n’est pas tuée, sauf nécessité absolue IOS: même approche. 13
  • 14. Processus Android sépare la notion de processus et la notion d'applications Une application peut être portée par plusieurs processus Plusieurs applications peuvent partager le même processus Il est même possible de lancer un OS Android complet dans un unique processus Les processus s'exécutent avec des utilisateurs différents C'est un élément de sécurité important pour isoler les applications. Android peut tuer un processus après l'avoir prévenu. Il en contrôle la consommation des ressources. IOS: ne permet pas d’avoir plusieurs processus 14
  • 15. system_app Le processus system_app porte le framework Android. Contient les informations de tous les fichiers AndroidManifest.xml des applications Permet de gérer le cycle de vie des autres processus S'il meurt, le téléphone reboot. 15
  • 16. Dalvik Machine virtuelle utilisant un byte code orienté registre Op-code aligné sur la mémoire et optimisé par la résolution des offsets, lors de la première exécution Peux être mappé directement en mémoire GC asynchrone Compilation JIT basé sur le flux de traitement et non sur la structure du langage (détection des boucles dans le flux) IOS utilise une compilation native, pas de GC 16
  • 17. Optimisations De très nombreuses astuces sont utilisées pour optimiser le code L'utilisation de constantes numériques à la place de chaîne de caractères Une communication optimisée entre les processus Exécution de requêtes SQL en mode batch Etc. Pour accélérer le démarrage d'un processus, un machine virtuelle java (Dalvik) est initialisé avec une liste de classes, puis attend une commande pour se dédoubler, associer un utilisateur Unix et démarrer l'application. Ainsi, une partie du framework est partagée entre les processus 17
  • 18. Sécurité sous Android Publication des applications sur le Play Store avec signature numérique Algorithmes de chiffrements disponibles (flux, fichier) Pas de conteneur chiffré disponible avant la version 4 Isolation des applications (user Linux différent) Privilèges pour accéder aux services sensibles. Possibilité d'ajouter de nouveaux privilèges Présentation des privilèges AVANT l'installation de l'application Quelques vulnérabilités découvertes sur les applications root (de moins en moins) ou les surcouches constructeurs Maintenant, root n’a plus tous les droits Apple est très stricte pour la publication d’applications
  • 19. Authentification/habilitation Authentification L'utilisateur du téléphone est considéré comme « autorisé » Valide si mécanisme de blocage du terminal (pin) Pour les traitements sensibles, demander confirmation d'un autre PIN La dernière version d’Android propose le multi-compte Habilitation Les applications utilisent des users linux différents De nouveaux privilèges peuvent être déclarés par les applications Habilitation pour tous, limitée aux mêmes auteurs des applications ou limitée au système. Permet de partager des secrets entre applications du même auteur IOS a une approche d’habilitation au premier usage.
  • 20. Accès aux fichiers Répertoire de travail par application Droit limité à l'utilisateur associé à l'application (ou aux autres applications de même signature) Carte SD considérée comme publique (sinon il faut chiffrer les données) Dernièrement, ajout d’un privilège pour avoir droit de lire la carte SD Chiffrement « gratuit » si l'application est installée sur le carte SD Chiffrement associé au terminal Partage de fichier/flux Possibilité de modifier les droits pour permettre un accès aux autres utilisateurs =>Risque d'exposer des fichiers sensibles Passage de handle fichier d'une application à une autre (permet de ne pas exposer le fichier aux autres applications. Juste l’accès) Depuis v4, possibilité d'ouvrir un pipe entre les applications (évite de créer un fichier temporaire pour partager des données) Toutes les « ressources » (fichiers xml, images, styles, etc) sont accessibles à toutes les applications IOS ne permet pas le partage de fichier.
  • 21. Gestion des comptes Framework centralisé et protégé compatible OAuth2 (settings/account) A UTILISER systématiquement Ne pas demander les user/password dans chaque application Permet de proposer un token aux autres applications sans exposer les ids Plus complexe à coder, mais plus d'ouverture et de sécurité Reset automatique de tous les passwords lors d'un changement de carte SIM Secrets en caches dans le frameworks IOS ne propose pas de compte centralisé.
  • 22. Comment sont vérifiées les permissions ? Aucun service ou périphérique critique n'est directement accessible aux applications (/dev n’est pas accessible) Les applications doivent communiquer avec le processus system_app Ce dernier vérifie les privilèges du processus appelant Car le mécanisme Binder (AIDL) injecte l'UID et le PID de l'appelant Les permissions sont déclarées par les applications dans AndroidManifest.xml
  • 23. Développement Très différents d'un développement Java classique Il faut oublier les bonnes pratiques J2EE pour privilégier les performances Le code est complexe, difficile à déverminer, car il existe de nombreux scénarios d'usages (basculement de l'écran, perte de l'application en cours de route, etc.). Utilisation systématique du multitâche Mais, le résultat peut être portable sur téléphone, télévision, tablette, voiture, etc. 23
  • 24. Intégration En acceptant de suivre les bonnes pratiques Très forte possibilité d'intégration entre les applications Invocation d'écrans/services des autres applications Possibilité de publier des services/écrans/données pour les autres applications En cas d’ambiguïté, l'utilisateur sélectionne l'application Le framework est très ouverts Pas d'adhérence avec un fournisseur de contact particulier, un partage de contenu, etc. La notion d'Intent est proposé comme spécification pour le Web (Web Intent) 24
  • 25. Exemple d’architecture modulaire Plugin 1 Plugin 2 ContentProvider WS back end Main Async Activité APK • Mise à jour individuelle de chaque module • Extension de l’application suivant les plugins présent • Synchronisation au bon moment 25
  • 26. Par rapport à IOS Langage compilé Très peu de partage entre les applications Pas de navigation entres applications Isolation très forte entre les applications Sécurité non extensible Multitâche de moins en moins limité Acceptation de plusieurs hauteurs des écrans (pas encore de plusieurs largeurs) 26
  • 27. Développement Deux environnements Eclipse Android Studio (Beta) Les sources http://source.android.com/ Émulateur PC très rapide Genymotion (http://www.genymotion.com/) Pour tester Téléphone Android 2.3 Téléphone Android 4.3 (Famille Nexus pour suivre rapidement les versions) Tablette 7" Tablette 10" 27