Vous êtes sur la page 1sur 91

Prsentation du systme d exploitation Open Source ANDROID

Commission OpenSource Telecom Valley


- Jeudi 2 Juillet 2009 -

Jeudi 2 Juillet 2009

SOMMAIRE
Introduction : Commission Open Source Telecom Valley march Android et les enjeux - positionnement et dernires Le

avances - Pascal Flamand - Janua


Anatomie de la plateforme Android et environnement de

dveloppement - Arnaud Farine - Expertise@ndroid


Pause caf Intgration d'un provider cryptographique / module Kernel / Framework

Dalvik - retour d'exprience - Nicolas Ponsini - Trusted Logic


Intgration d'une application de golocalisation "off board" sous

Android - retour d'exprience - Christophe Tomasini - Altran


Q/R avec la salle, partage d'expriences

Jeudi 2 Juillet 2009

SOMMAIRE
Introduction : Commission Open Source Telecom Valley
march Android et les enjeux - positionnement et dernires Le

avances - Pascal Flamand - Janua


Anatomie de la plateforme Android et environnement de

dveloppement - Arnaud Farine - Expertise@ndroid


Pause caf Intgration d'un provider cryptographique / module Kernel /

Framework Dalvik - retour d'exprience - Nicolas Ponsini - Trusted Logic


Intgration d'une application de golocalisation "off board" sous

Android - retour d'exprience - Christophe Tomasini - Altran


Q/R avec la salle, partage d'expriences

Jeudi 2 Juillet 2009

Commission Open Source Telecom Valley


Une commission cr fin 2007 pour permettre aux membres de Tlcom Valley d'changer et de s'enrichir mutuellement sur les sujets et problmatiques de l'Open Source Un groupe pluri-disciplinaire (utilisateurs,dveloppeurs, diteurs, architectes, juristes, marketing, commerce...) Un groupe dynamique, ouvert et vivant o chacun apporte son exprience/expertise et apprend des autres... En rsum une vraie communaut professionnelle sur Sophia....

Jeudi 2 Juillet 2009

SOMMAIRE
Introduction : Commission Open Source Telecom Valley Le

march Android et les enjeux - positionnement et dernires avances - Pascal Flamand - Janua
Anatomie de la plateforme Android et environnement de

dveloppement - Arnaud Farine - Expertise@ndroid


Pause caf Intgration d'un provider cryptographique / module Kernel /

Framework Dalvik - retour d'exprience - Nicolas Ponsini - Trusted Logic


Intgration d'une application de golocalisation "off board" sous

Android - retour d'exprience - Christophe Tomasini - Altran


Q/R avec la salle, partage d'expriences

Jeudi 2 Juillet 2009

Prsentation de Janua
Socit de services (SS2L)/diteur fonde en 2004 Sophia Antipolis Notre mtier : l'expertise Notre crdo : l'Open Source Nos prestations : consulting, assistance ponctuelle et dveloppement au forfait Nos comptences :
Consulting, implmentations et dploiement de solutions de gestion des identits (LDAP, SSO, PKI..), Etudes d'opportunits et accompagnement la migration Open Source, dploiement de solutions d'infrastructures. Dveloppement au forfait, assistance et expertise sur des composants Open Source et embarqus, Consulting rseaux et scurit, ISO 27001, expertise base de donnes, cluster et virtualisation Editeur des logiciels CmakeBuilder, Jaguards, JAC, KressourcesWCAP et EZ-Slony.

Jeudi 2 Juillet 2009

Android
Google

Le march, le matriel, le potentiel

Acteur majeur d'internet 1er moteur de recherche 1er publicit en ligne Solutions d'entreprises: Google Apps, Google Enterprise Appliance... Services gratuits: gmail, apps, photos, vidos... 2005 : Rachat d'Android Inc. Dveloppement d'applications mobiles Richard Miner* + Andy Rubin Objectif du rachat : crer une plateforme mobile Flexible Accessible tous les intgrateurs et dveloppeurs Profiter de la convergence web / mobile
* Richard Miner a quitt Google fin 2008

Jeudi 2 Juillet 2009

Android
Le march, le matriel, le potentiel
Acteurs systme d'exploitation mobile 2009 Symbian Windows Mobile RIM Palm Source (Palm Os) Apple Linux Baisse des parts de march OS: Palm Source, Windows Dcroissance du march tlphone March du smartphones en hausse Dcroissance du march tlphone Croissance smartphone: +37% en 2009 (GFK) Croissance smartphone: +12% en 2009 (Gartner) Services mobiles: nouveaux usages, multimdia

Jeudi 2 Juillet 2009

Android
Le march, le matriel, le potentiel Open Handset Alliance (OHA)

Jeudi 2 Juillet 2009

Android
Le march, le matriel, le potentiel Stratgie Google :

OpenSource
Plateforme mobile ouverte Plus de revenus Application Web riche

Utilisateurs nombreux

Dveloppeurs nombreux

Android Market / Google Checkout Publicit mobile

Jeudi 2 Juillet 2009

Android
Le march, le matriel, le potentiel Android pour qui ?
Constructeurs de matriels (tlphones, GPS, netbook, ebook, lecteur multimdia, bornes internet...) Oprateurs diteurs de solutions logicielles, SSII...

Points forts
Constructeurs Linux Open Source Cot de licence nul Adaptabilit Utilisateurs Fonctionnel, intuitif et volutif Multitches Applications nouvelles Nombreuses applications par dfaut

Dveloppeurs Langage Java Modularit, partage Kit de dveloppement gratuit SDK complet Android Market

Jeudi 2 Juillet 2009

Android
Le march, le matriel, le potentiel Matriels disponible (Avril 2009) - Orange
HTC Dream G1

Version Orange (FR) Blanc

Version T-Mobile (US) Noir, bronze et blanc

Dernire minute : HTC annonce pour septembre le modle HERO avec une nouvelle version d android (sense) et interface entirement redessine Juillet 2009

Jeudi 2 Juillet 2009

Android
Le march, le matriel, le potentiel Matriels disponible (Mai 2009) - SFR
HTC Magic G2

Jeudi 2 Juillet 2009

Android
Le march, le matriel, le potentiel Matriels disponible (juin 2009)-BT
Samsung i7500/s8000 (Orion)

Jeudi 2 Juillet 2009

Android
Le march, le matriel, le potentiel Matriels venir
Motorola (fin 2009) LG Sony Ericsson (fin 2009) * Huawei Leonovo Acer Netbooks La prsence d'Android par Fujitsu GPS ** Lecteurs multimdia (Archos annonce pour septembre) TV !

Des tlphones mais aussi

* Sony Ericsson a annonc qu utiliserait la prochaine version Android 2.0 Donut il ** 22/6 :Le gant amricain du GPS Garmin a dcid de ne plus recourir ses propres intgrations de Linux sur ses terminaux. Elle a choisi pour les remplacer d intgrer Android et Windows Mobile.

Jeudi 2 Juillet 2009

Android
Evolution de l IHM

Android M3 Nov 2007

Android M5 Mars 2008

Jeudi 2 Juillet 2009

Android
Evolution de l IHM

Android - R1.1RC33 Novembre 2008

Android Cupcake Fevrier 2009

Jeudi 2 Juillet 2009

Android
Evolution de l IHM

Android Cupcake Custom HTC Sense UI Juin 2009

Jeudi 2 Juillet 2009

Android
Conclusions (provisoire)
Les facteurs potentiellement bloquants :
L'omniprsence de Google peut agacer et faire peur... La position de leader de l'iPhone et son arrive il y a dj plusieurs annes sur le march.. La cration d'un vritable app-store avec des milliers d'applications... La frilosit des oprateurs => partage de la valeur avec Google

Les facteurs cls de succs :


Le nom Google et les services associs Une plateforme de dveloppement banalise => beaucoup plus de comptences disponibles que Symbian par exemple L'Open Source, facteur de cration d'un communaut productive et d'une adoption par la majorit des acteurs
Toutes les comptences autour d'Android existent sur Sophia, une opportunit saisir pour notre communaut....

Jeudi 2 Juillet 2009

SOMMAIRE
Introduction : Commission Open Source Telecom Valley march Android et les enjeux - positionnement et dernires Le

avances - Pascal Flamand - Janua


Anatomie

de la plateforme Android et environnement de dveloppement - Arnaud Farine - Expertise@ndroid


Pause caf Intgration d'un provider cryptographique / module Kernel /

Framework Dalvik - retour d'exprience - Nicolas Ponsini - Trusted Logic


Intgration d'une application de golocalisation "off board" sous

Android - retour d'exprience - Christophe Tomasini - Altran


Q/R avec la salle, partage d'expriences

Jeudi 2 Juillet 2009

Anatomie d Android
Android: 2 parties

Systme d'exploitation Linux Environnement d'excution Dalvik (Java) Concours Android Developer Challenge (Google) 4 versions Mai 2009 SDK 1.5 Dcembre 2009 Donut 2.0

Kit de dveloppement Java disponible depuis 2007


Versions disponibles sur les matriels


Souvent personnalises par l'oprateur ou le constructeur 1.0, puis 1.1_RC33 Cupcake 1.5: correctifs, clavier virtuel, enrichissement fonctionnel (widget) Mise jour via OTA

OS et SDK sont disponibles en Open Source Dvelopper une application ne requiert pas l'obtention de l'OS et rciproquement

Jeudi 2 Juillet 2009

Anatomie d Android

Jeudi 2 Juillet 2009

Anatomie d Android
OS Android: 2 couches infrieures

Dalvik

Linux kernel 2.6.24 ARM Pas de systme natif de fentrage Pas de support Glibc Optimisation mmoire, processus et alimentation Gestion utilisateurs

VM Android Optimise embarqu Multi instance Optimisation mmoire, scurit Optimisation bytecode Fichier Dex

Jeudi 2 Juillet 2009

Anatomie d Android
Base de l'API

Point d'entre pour les applications Accs toutes les ressources infrieures via librairie Accs possible aux ressources C via JNI (bypass de cette couche)

Jeudi 2 Juillet 2009

Anatomie d Android
Dveloppement
Environnement

Windows XP/Vista Mac OS 10 Linux 1.5 1.6

J2SE

SDK Android Eclipse Ganymede + plugin ADT Optionnel: Outil dev C: Intgration code C/C++ en tant que librairie (JNI)

Jeudi 2 Juillet 2009

Anatomie d Android
Dveloppement
Une application est une succession d'crans Elle inclut un ensemble de descripteurs pour chaque cran Un cran peut ouvrir un autre cran d'une mme application ou d'une autre application 5 composantes majeures

Intent Activity Broadcast Receiver Content Provider Service

L'ensemble de ces composantes est dcrit dans le fichier AndroidManifest.xml Les applications ont pour extension APK (Android Package)

Jeudi 2 Juillet 2009

Anatomie d Android
Dveloppement
Activity

Une classe par Activity Gnralement le point d'entre d'une application Gnralement une interface graphique, un cran Cycle de vie Type d'action possible dclar auprs du systme Indique le besoin ou le service offert Accs aux donnes partages Donnes internes ou externes l'application Encapsulation du schma de la base Pas de requte
-URI -Services de manipulation des donnes fournis par le package

Intent

Content Provider

Jeudi 2 Juillet 2009

Anatomie d Android
Dveloppement
Services

Composants sans interface graphique Activit de longue dure Dmarrer par context.startService: interne l'application Dmarrer par context.bindService: externe l'application Ragit des vnements externes
-

Broadcast Receiver

Logiciel: Alarme, notifications... Matriel: Activation puce GPS, exting

Rveiller une application, afficher un message, lancer une activity

Jeudi 2 Juillet 2009

Anatomie d Android
Dveloppement
Construction d'une application
Code source

Byte Code Java

Byte code optimis Gnration fichier.dex

Construction du package destin tre install

Jeudi 2 Juillet 2009

Anatomie d Android
Hello Android
Cration d'un nouveau projet

Jeudi 2 Juillet 2009

Anatomie d Android
Hello Android
Arborescence du fichier cr

Construire le projet via le menu Project/Build

Jeudi 2 Juillet 2009

Les Activity et leurs interactions


Activity
Une classe tendant de Activity Point d'entre d'une application Gnralement un cran d'une application (plein cran ou non) Comportement dfini dans le fichier AndroidManifest.xml Une Activity peut

tre sans interface tre une fentre flottante Retourner des valeurs Lancer d'autres Activity

Possde un cycle de vie

Jeudi 2 Juillet 2009

Les Activity et leurs interactions


Activity
Cycle de vie d'une Activity

Jeudi 2 Juillet 2009

Les Activity et leurs interactions


Activity
Diffrentes Activity disponibles - android.app.*

ActivityGroup ListActivity AliasActivity ExpandableListActivity PreferenceActivity LauncherActivity TabActivity

Une Activity est capable de lancer une autre Activity que nous nommerons SubActivity

Interne l'application Externe application Rcuprer le rsultat d'une SubActivity Notion importante d'Intent

Jeudi 2 Juillet 2009

Les Activity et leurs interactions


Intent
Intent

Dfinir une action effectuer Crer des liens entre application Dcrit par une action (VIEW, EDIT, MAIN,...) URI pour renseigner les donnes traiter

IntentFilter

Dcrit les capacits d'une application Attach une Activity coute les demandes d'Intent (handler) Enregistr au niveau systme
Recherche de l'IntentFilter le mieux adapt par l'IntentResolver

Appelant (intent) Activity, Services...

Activity est lance

Jeudi 2 Juillet 2009

Les Activity et leurs interactions


Activity
Lancer une autre Activity

Dfinition du type d'Intent Dfinition du chemin de l'Activity startActivity


startActivity(new Intent(this, ScoreActivity.class));

StartActivityForResult Lancer l'activity Rcuprer le rsultat

Jeudi 2 Juillet 2009

Les Activity et leurs interactions


Descripteur d application
1 fichier de description de l'application: AndroidManifest.xml Descripteur de l'application

Renseignements sur l'application (nom, version de code, SDK support...) Dfinit le comportement des Activity et leurs actions Dclare auprs du systme les Intent accessibles Dfinit les services, broascat receiver et content provider

Dclaration des ressources ncessaires (applications, Internet, matriels, donnes...)

L'utilisateur est toujours prvenu l'installation des ressources requises pour le bon fonctionnement de l'application. Il peut accepter ou refuser.

Jeudi 2 Juillet 2009

Interface graphique (IHM)


IHM : Prsentation
Diffrents de J2ME, AWT ou Swing Deux mthodes de cration

XML (recommand) Code Java Lisibilit du code Java Lisibilit de la construction de l'IHM Allgement du code Java Rapidit de dveloppement (Similaire un page HTML) Moins de risque d'erreur

Avantages XML

Large ventail de composants dj disponibles Personnalisation possible de chaque lment Systme de thmes disponible

Jeudi 2 Juillet 2009

Interface graphique (IHM)


IHM : les layouts, les vues
Chaque composant correspond un Layout

Prsent dans /res/layout Reprsente un cran Reprsente un composant spcifique d'un cran Dispose d'un identifiant unique (de prfrence) Peut tre accd, ajout, modifi et supprim depuis le code Java android:id=@+id/monidentifiant pour votre composant android:id=@android:id/empty pour rfrencer un composant spcifique d'Android

Chaque composant

Identification par le fichier R.java (gnr par aapt) Compiler sous forme de vue embarque dans le fichier dex

Jeudi 2 Juillet 2009

Interface graphique (IHM)


IHM : les layouts, les vues
Ecrire son fichier XML

Contient obligatoire un lment racine (Root) Peut contenir autant de layout ou vue que dsir Sauvegard sous /res/layout/monlayout.xml Ne pas contenir de majuscule ou de chiffre

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello"/> </LinearLayout>

Jeudi 2 Juillet 2009

Interface graphique (IHM)


IHM : les layouts, les vues
Charger le layout dsir

Rfrencs sur le nom de fichier (sans extension) dans R.java R.layout.monlayout setContentView(layout)
public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.main); }

Un layout peut tre charg au sein d'un autre composant en utilisant l'objet LayoutInflater Chaque composant dispose d'un certain nombre de paramtres

android:layout_width et android:layout_height (fill_parent, wrap_content...) android:id, android:text, android:background... android:orientation pour LinearLayout (vertical, horizontal)

Chaque composant dispose de ses arguments propres:

Jeudi 2 Juillet 2009

Interface graphique (IHM)


IHM : string et multilinguisme
Les chaines de caractres et l'IHM

Fichier XML /res/values Par dfaut: string.xml <string name=''cle''>Valeur afficher</string>


<?xml version="1.0" encoding="utf-8"?> <resources> <string name="hello">Hello World, HelloActivity!</string> <string name="app_name">Mon Hello Android</string> </resources>

Multilingues

Base sur la locale du systme /res/values-fr, /res/values-en contenant un fichier string.xml Utiliser les mmes cls pour afficher la valeur dans la langue correspondante

Jeudi 2 Juillet 2009

Interface graphique (IHM)


IHM : Les menus

Menu Option

Sous menu

Menu contextuel

Jeudi 2 Juillet 2009

Interface graphique (IHM)


IHM : vnements
Grs comme en Java / AWT / Swing / J2ME Mise en place de Listener (couteurs) Peuvent tre appliqus sur chaque composant View vnements supplmentaires en fonction du type de la vue Processus

Rcuprer l'objet vue concern Ajout du listener Implmentation des actions raliser par le listener
Button monBoutton = (Button)findViewById(R.id.monBouton); b.setOnClickListener(evtClickSurMonBoutton); OnClickListener evtClickSurMonBoutton = new OnClickListener(){ public void onClick(View v){ // Implmentation } };

Jeudi 2 Juillet 2009

Interface graphique (IHM)


IHM : Boite de dialogue
Une vue affiche sur la couche suprieure du contenu courant Composition

Titre, Texte Icne Boutons Animation, personnalisable

Bloquante AlertDialog.Builder Personnalisable volont

Jeudi 2 Juillet 2009

Interface graphique (IHM)


IHM : Boite de dialogue
Des listes dans les boites de dialogues Des listes et boutons radios

Barre de progression (fin connue ou indtermine)

Jeudi 2 Juillet 2009

Donnes persistantes

3 types de donnes persistantes:


Prfrences utilisateurs Base de donnes (Sqlite3) Content Provider

Gestion de vos donnes dans des fichiers

Jeudi 2 Juillet 2009

Donnes persistantes
Les prfrences utilisateurs Composants fournis

IHM Donnes

Simple Ensemble de cls (String)/valeurs(primitive) Propre l'Activity ou l'application entire Dclarations dans AndroidManifest Donnes sauvegardes dans
/data/data/monpackage/shared_prefs/monpackage.xml

Jeudi 2 Juillet 2009

Donnes persistantes
Bases de donnes
SQLITE

Projet Open Source Base de donnes transactionnelles Pas de partie serveur Toutes les tables sont contenues dans un seul fichier Crossplatform Donnes types Langage SQL Cl primaire Non disponible: FOREIGN_KEY, RIGHT/LEFT_OUTER_JOIN, certaines options ALTER_TABLE Librairie de manipulation Accessible par adb shell

SQLITE3

Type de donnes supportes: NULL, INTEGER, REAL, TEXT, BLOB

Jeudi 2 Juillet 2009

Donnes persistantes
Bases de donnes SQLITE & Android

Aucune base par dfaut: tout doit tre construit Manipulation SQLiteDatabase SQLiteOpenHelper
-

onCreate onUpdate

Le fichier est sauvegard par dfaut dans


/data/data/monpackage/databases

L'enregistrement de fichier de base de donnes sur une carte mmoire ne pourra tre ralis par SQLiteOpenHelper, recours l'objet SQLiteDatabase

Jeudi 2 Juillet 2009

Donnes persistantes
Bases de donnes Manipulation des donnes

execSQL: excution de commande SQL passe en paramtre sous forme de chaine de caractres (dans la classe de l'adapter)
db.execSQL("insert into " + DATABASE_TABLE_USER + " (" + COL_TAB_HELLO_USER_NOM + ") values('" + name + "');");

Insert(), delete() et update() de SQLiteOpenHelper


-

Nom de la table concerne ContentValues().put(nom de colonne, valuer)


ContentValues cv = new ContentValues(); cv.put(COL_TAB_HELLO_USER_NOM, name); db.insert(DATABASE_TABLE_USER, COL_TAB_HELLO_USER_ID, cv);

Permet de retourner des valeurs (ex.: identifiant d'un nouveau lment ajout)

Jeudi 2 Juillet 2009

Donnes persistantes
Bases de donnes Query
public Cursor query (String table,// nom de la table String[] Columns, // nom des colonnes a retourner ou null pour toute String Selection, // clause where, sans le mot 'where' ex.: nom=? String[] SelectionArgs, // tableau ordonn des valeurs // utilises dans la clause where String GroupBy, // argument groupBy, ex: nom, prenom null sinon String Having, // argument clause having null sinon String OrderBy) // argument d'ordonnancement ex: nom - null sinon

public void getInfo(String nomRecherche){ String[] columns=new String[]{"nom", "prenom"}; String[] params={nomRecherche}; Cursor result=db.query(this.DATABASE_TABLE_USER, columns, "nom=?",params, null, null, null); }

Jeudi 2 Juillet 2009

Donnes persistantes
Content provider Toutes les URI commenant par URI Encapsulation de la structure des donnes Base de donnes, fichiers plats, accs distant A partir d'une URI

Create Read Update Delete

Utilisation de ContentProvider existant d'autres applications Crer, utiliser et partager vos donnes Dfinition d'une URI
PREFIXE://IDENTIFIANT DU TYPE DE DONNEES/DEFINITION DE LA DONNEES/ENREGISTREMENT content://contact/people/123 content://com.mycompany.hello/user/53

Jeudi 2 Juillet 2009

Donnes persistantes
Content provider
Raliser une requte

managedQuery() depuis un objet Activity


-

URI Un tableau des proprits du ContentProvider obtenir dans le rsultat (nomm projection) Les contraintes (clause Where) Ensemble des paramtres permettant de complter les contraintes (? dans la clause where) Clause d'ordonnancement

Retourne un Cursor

Proprit d'un ContentProvider = Colonnes d'une base de donnes


private static final String[] PROJECTION = new String[] { Provider.Constants._ID, Provider.Constants.TITLE, Provider.Constants.VALUE}; .... constantsCursor=managedQuery(Provider.Constants.CONTENT_URI, PROJECTION, null, null, null)

Jeudi 2 Juillet 2009

Donnes persistantes
Content provider Insrer des enregistrements

insert()
-

Uri + contentValues Retourne l'identifiant de l'lment insr Tableau d'Uri et tableau de ContentValues pour ajouter plusieurs enregistrements en une seule fois Retourne le nombre d'lments insrs

bulkInsert()
-

Suppression d'un enregistrement

Delete
-

Uri, clause where, arguments compltant la clause where Les informations dpendantes la table vise seront galement supprimes (cascading) Retourne le nombre d'lments supprims

Mise jour

Update
-

Uri, valeurs insrer, clause where, arguments compltant la clause where Retourne le nombre d'lments mis jour

Jeudi 2 Juillet 2009

Donnes persistantes
IHM, Cursor et Adapter Composant ddi l'affichage de liste

Gestion du Cursor ou de listes Mise jour automatique lors d'un ajout, modification, suppression Composants graphiques dj disponibles Personnalisation de l'affichage possible Adapter: mapping entre la vue et les donnes Utilisation d'un composant grant un adapter (spinner, listview...) Rcupration d'un Cursor Cration de l'adapter Affichage

Processus

En cas de personnalisation de l'affichage, ncessit de crer son propre Adapter

Jeudi 2 Juillet 2009

Donnes persistantes
IHM, Cursor et Adapter Exemple simple: ListActivity

Une Activity devient une ListActivity Obligation de prsence d'un objet ListView dans le layout Id spcifique: android:id="@android:id/list" SimpleAdapterCursor Application de l'adapter sur la vue courante
Cursor c = managedQuery(uri, PROJECTION, null, null, null); startManagingCursor(c); ListAdapter adapter = new SimpleCursorAdapter( this, android.R.layout.two_line_list_item, c, PROJECTION, new int[]{android.R.id.empty, android.R.id.text1, android.R.id.text2} ); setListAdapter(adapter);

Jeudi 2 Juillet 2009

Services et Multithreading
Services

Process actif tant que la mmoire n'est pas limite Attention la surcharge! Implmentation simple
-

tend de Services OnCreate OnStart OnDestroy Dclarations dans l'Android Manifest

Jeudi 2 Juillet 2009

Services et Multithreading
Services AIDL

Android Interface Description Language Partage du service avec d'autres applications (Inter Process Communication) Dveloppement d'interface N'acceptes que
-

Des primitives Des String et CharSequence List ou Map Autre AIDL Autres classes Java implmentant Parcelable in / out: dfinit le sens de l'information in: paramtre d'entre est utilise pour lecture uniquement par le service out: paramtre pouvant tre modifi par le service et propag

void retrieveInfo(in String nom, out String Info)


-

Jeudi 2 Juillet 2009

Services et Multithreading
Alarmes, notifications Notifications

Toutes les alertes manant du systme ou d'autres applications Affichage d'une icne et/ou texte dans la barre de notifications Coloration de la led du tlphone Hardware (son, led, vibreur) Icons / Texte

NotificationManager

Obtenir une instance du NotificationManager Cration de l'objet Notification (icon, message...) Cration d'un PendingIntent pour la finalit de la notification (ouverture d'une activity) Attribuer le pendingIntent la notification Envoyer la notification

Jeudi 2 Juillet 2009

Services et Multithreading
Accs distants Librairies Apache HttpComponents HTTP Ajouter des librairies supplmentaires pour raliser d'autres protocoles: XMPP, SMTP... HTTP POST/GET

HttpClient Renseigner les informations sur la requte execute()


DefaultHttpClient httpclient = new DefaultHttpClient(); HttpGet httpget = new HttpGet(url); try{ HttpResponse response = httpclient.execute(httpget); } catch (ClientProtocolException cpe) { Log.e(TAG, "ClientProtocolException retrieveInfo:" + cpe); }

Requte GET

Jeudi 2 Juillet 2009

Services et Multithreading
Accs distants Requte POST
DefaultHttpClient httpclient = new DefaultHttpClient(); HttpPost httpost = new HttpPost(http://www.monserveur.com); List<NameValuePair> nvps = new ArrayList<NameValuePair>(); nvps.add(new BasicNameValuePair("cle1", valeur1)); nvps.add(new BasicNameValuePair("cle2", valeur2)); httpost.setEntity(new UrlEncodedFormEntity(nvps, null)); HttpResponse response = httpclient.execute(httpost);

Envoi de fichier par POST


Utilisation de HttpURLConnection Dfinition des paramtres de la connexion (entre, sortie, boundary, mthodes...) Ouverture d'un DataOutputStream sur la connexion Pour chaque lment envoyer:
-

Ouverture du fichier en lecture criture du type de donnes et du flux dans le DataOutputStream

Jeudi 2 Juillet 2009

Services et Multithreading
Accs distants Rponse d'une requte

HttpResponse Sur retour de la commande execute Cration d'un HttpEntity par httpResponse.getEntity() Lecture d'un InputStream sur httpEntity.getContent()

Jeudi 2 Juillet 2009

Services et Multithreading
Utilit des Threads
Blocage de l'application lors des accs distants (Wake Lock) Solution (recommandation!)

Utilisation de Thread pour les traitements bloquant: accs distant, calculs... Systme de message de communication entre un Thread et un Handler Classe implmentant l'interface Runnable Constructeur prenant en paramtre l'Activity qui appellera le Thread Surcharge de la mthode run() dans laquelle Les traitements sont excuts Les messages sont envoys au Handler Cration d'un objet Handler Gestion des codes reus Mise jour de l'IHM de l'Activity appelante Gestion d'un tat permettant ou non d'appeler ou pas le contenu de run()

Les threads n'ont pas accs aux IHM


Une Thread ne peut tre tue, le systme s'en charge

Jeudi 2 Juillet 2009

Autres composants
Gestion des appels entrants et sortants Connexion GSM/Bluetooth/Wifi/GPS Envoi/rception SMS SearchManager Golocalisation

Localisation Map/MapView Acclromtre Son Camra 2D/3D

Multimedia

Jeudi 2 Juillet 2009

Livres
Busy coder's guide to Android Development Mark. L. Murphy Edition CommonsWare 444 pages + 2 livres tutoriaux et Advanced Development http://www.commonsware.com Hello Android, Introducing Google's mobile development Platform Ed Burnette 220 pages http://www.pragprog.com

Ressources en lignes: site web


http://developer.android.com (documentations officielle) http://sites.google.com/site/io/ (recherche sur Mobile, prsentations vidos) http://www.anddev.org (tutoriaux, forums) http://www.androidcommunity.com (actualits) http://www.devx.com/wireless (actualits, tutoriaux) http://www.helloandroid.com (actualits)

Ressources en lignes: forums


http://groups.google.fr/group/android-developers http://groups.google.fr/group/android-beginners

Ressources francophones: actualits et dveloppement


http://www.frandroid.com (actualits, forums) http://www.pointgphone.com (actualits, forums)

Jeudi 2 Juillet 2009

SOMMAIRE
Introduction : Commission Open Source Telecom Valley march Android et les enjeux - positionnement et dernires Le

avances - Pascal Flamand - Janua


Anatomie de la plateforme Android et environnement de

dveloppement - Arnaud Farine - Expertise@ndroid


Pause

caf

Intgration d'un provider cryptographique / module Kernel /

Framework Dalvik - retour d'exprience - Nicolas Ponsini - Trusted Logic


Intgration d'une application de golocalisation "off board" sous

Android - retour d'exprience - Christophe Tomasini - Altran


Q/R avec la salle, partage d'expriences

Jeudi 2 Juillet 2009

SOMMAIRE
Introduction : Commission Open Source Telecom Valley march Android et les enjeux - positionnement et dernires Le

avances - Pascal Flamand - Janua


Anatomie de la plateforme Android et environnement de

dveloppement - Arnaud Farine - Expertise@ndroid


Pause caf

Intgration d'un provider cryptographique / module

Kernel / Framework Dalvik - retour d'exprience - Nicolas Ponsini - Trusted Logic


Intgration d'une application de golocalisation "off board" sous

Android - retour d'exprience - Christophe Tomasini - Altran


Q/R avec la salle, partage d'expriences

Jeudi 2 Juillet 2009

Trusted Logic
Produits & Solutions pour
Smart Cards & Secure Tokens jTOP Technologie sans contact Trusted NFC Plateformes mobiles Trusted Foundations Software Scurit embarque

en bref

Technologies ouvertes

Services de consulting et dvaluation en scurit

Jeudi 2 Juillet 2009

Trusted Foundations Software


Monde Normal
(trop riche pour tre certifi)

Monde Scuris
(certifiable)

Applications Services Scuriss

Environnement ouvert

Trusted Foundations Software

Environnement scuris programmable permettant l excution de services haut niveau

SChannel

Plateforme

Jeudi 2 Juillet 2009

Services disponibles via Trusted Foundations


OMA DRM 2 WMDRM / PlayReady CPRM OMA BCAST Marlin SW TPM/MTM Password Storage One-Time Password Secure Storage Cryptographic providers

Trusted NFC Trusted User Interface

Intgration scurise : Windows Mobile Linux Android Symbian


2009 Trusted Logic S.A.

Ipsec (VPN) OpenSSL

Jeudi 2 Juillet 2009

Intgration d Provider un Cryptographique sur plateforme OMAP3


Objectif : Proposer aux applications Android un provider cryptographique de type JCE / JCA offrant la scurit du Trusted Foundations SW aux cls et donnes manipules. JCE / JCA = Java Cryptographic Extension / Java Cryptographic Architecture Un Provider implmente les interfaces spcifies par les packages JCE / JCA. Javax.crypto.* fournit les classes et les interfaces pour effectuer des oprations cryptographiques sur les algorithmes symmtriques. Java.security.* fournit les classes et les interfaces pour le framework de scurit Java. Elles permettent entre autres de raliser des oprations: de gnration de nombres alatoire de digests de signatures l d aide algorithmes asymmtriques

Jeudi 2 Juillet 2009

Intgration d Provider un Cryptographique sur plateforme OMAP3


Applications utilisant des oprations crypto

Provider cryptographique Java (JCE / JCA)

Module Kernel d accs au monde scuris

Bibliothques C de communication avec les services scuriss

Jeudi 2 Juillet 2009

Intgration d Provider un Cryptographique sur plateforme OMAP3 Module Kernel pour accder au monde scuris
Kernel Android
Cloner le kernel
home# home# home# home# home# git clone git://git.omapzoom.org/repo/omapkernel.git cd omapkernel git checkout --track -b android-2.6.27 origin/android-2.6.27 git checkout android-2.6.27 git pull

(1/2)

Recompiler le kernel : choisir la configuration / cross-compiler avec la chane de compilation ARM Code Sourcery ARM Sourcery G++ 2007q3. Kernel 2.6.27 et bientt kernel 2.6.29 : le site permet de profiter des dernires nouveaut comme un meilleur support des fonctions de mise en veille.

Jeudi 2 Juillet 2009

Intgration d Provider un Cryptographique sur plateforme OMAP3 Module Kernel pour accder au monde scuris
(2/2)

Dveloppement d un Character device driver pour abstraire l accs au monde scuris vu comme un device:
Points d entre : open/release/ioctl/mmap/read/write Communication avec le user space : copy_from(to)_user/mapped memory Gestion des accs multiples : objects de synchronisation, Kernel Premptif Power Management : suspend/resume + utilisation du rfrigrateur pour les threads actifs lorsque l utilisateur met l appareil en veille explicitement. Accs au hardware : mapping et accs registres (ex: controleur DMA) Insertion du module : dynamique / statique

Driver sous License GPL2 : son code doit tre rendu public.

Jeudi 2 Juillet 2009

Intgration d Provider un Cryptographique sur plateforme OMAP3 Provider JCE/JCA au dessus de Dalvik (1/2)
TestsProviderCrypto.apk Code Java + AndroidManifest.xml + Android.mk JCE / JCA Interfaces

Application Java (.apk) dans /system/app


Android.mk AndroidManifext.xml (bibliothques Java utiliser, main, ressources ) Source Java

Bibliothque Java (.jar) dans /system/framework


Android.mk Source Java Glue JNI Editer le fichier /system/etc/permissions/platform.xml et ajouter cette bibliothque pour la rendre accessible aux applications

ProviderCrypto.jar Code Java + JNI + Android.mk

ProviderCrypto.so Code C + Android.mk

Bibliothque native (.so) dans /system/lib


Android.mk Source C au dessus de bionic

ProviderCrypto.ko

Jeudi 2 Juillet 2009

Intgration d Provider un Cryptographique sur plateforme OMAP3 Provider JCE/JCA au dessus de Dalvik (2/2)
Code source Android
Installation de :
paquets type sun-java6-jdk/git-core/flex/bison Installation de la chaine de compilation ARM Code Sourcery ARM Sourcery G++ 2007q3 Installation de l google : repo outil

Cloner et builder la distribution :


home# repo init -u git://git.omapzoom.org/repo/android/platform/omapmanifest.git home# repo sync home# make -j2 (et attendez 1h30 ou plus selon votre machine )

Le systme de build est totalement intgr et permet de grer les dpendances tous les niveaux : application / bibliothques / code Java / code C.

Android.mk : insrer dans les sources Android un fichier Android.mk (makefile-like) pour gnrer une Application ou une librairie.

Jeudi 2 Juillet 2009

Intgration d Provider un Cryptographique sur plateforme OMAP3 Retour d exprience (1/2)


Outil Repo pour synchronization avec les sources
C un outil Google qui permet d est abstraire git et de grer simplement la synchronization avec plusieurs repositories.

Systme de build
Pas de platform Builder graphique labor Une distribution intgre : tapez make et a fonctionne !! Gestions des dpendances et ajout d applications et de bibliothques simplement grce un Makefile-like : Android.mk

Rutilisation de Linux trs utile au dveloppement


L environnement en gnral : git / commandes / Makefiles Le kernel et donc les modules kernel Le dveloppement et la validation sur target sont facilits grce NFS par exemple Utilisation d busybox pour les commandes traditionnelles une Gestion des droits et des permissions

Jeudi 2 Juillet 2009

Intgration d Provider un Cryptographique sur plateforme OMAP3 Retour d exprience (2/2)


Bionic
ucLibc - like Plus lgre mais l essentiel est l. Des modifications sur les objets de synchro et les wide-char par exemple mais rien d insurmontable !

Rutilisation de Java
Le Java de base est l et les paquets java.security.* et javax.crypto.* pour le supports du JCE/JCA aussi JNI est support et compltement compatible Simple pour le dveloppement d application de tests Utilisation du SDK Android pour dvelopper toutes ces parties portables sur PC.

Debug
Pas d utilisation des outils spcifiques Android pour cette intgration Utilisation d debugger Jtag pour le debug de certaines fonctionnalits du driver un

Jeudi 2 Juillet 2009

Intgration d Provider un Cryptographique sur plateforme OMAP3

Conclusions

Nicolas Ponsini Project Manager Professional & Consumer Devices nicolas.ponsini@trusted-logic.com

Jeudi 2 Juillet 2009

SOMMAIRE
Introduction : Commission Open Source Telecom Valley march Android et les enjeux - positionnement et dernires Le

avances - Pascal Flamand - Janua


Anatomie de la plateforme Android et environnement de

dveloppement - Arnaud Farine - Expertise@ndroid


Pause caf Intgration d'un provider cryptographique / module Kernel /

Framework Dalvik - retour d'exprience - Nicolas Ponsini - Trusted Logic


Intgration d'une application de golocalisation "off board" sous

Android - retour d'exprience - Christophe Tomasini - Altran


Q/R avec la salle, partage d'expriences

Jeudi 2 Juillet 2009

Intgration d une application de navigation off-board sous Android

SC2 - Software Competence Centre


Depuis 1999

BMW/VW systmes d Infotainment Certification OSGi Outillage de test automatique Chaine de dveloppement pour le design/intgration HMI Architecture et Dveloppement de plateforme logicielle Portail de Connectivit sans-fil Web Services avec reconnaissance vocale Navigation mobile off-board

VDO

Siemens

Continental

Jeudi 2 Juillet 2009

Intgration d une application de navigation off-board sous Android

Navigation Mobile Off-Board


Application MIDP2.0 Navigation off-board Guidage en temps rel: carte + pictogrammes + audio POIs: cinmas, restaurant, radars, etc.

Sur le march en 2005 en France (SFR) et en Allemagne (T-Mobile)

Jeudi 2 Juillet 2009

Intgration d une application de navigation off-board sous Android

Android Plateforme & APIs


Plateforme base sur le langage Java APIs Tlphonie & Connectivit : GSM, Bluetooth, EDGE, 3G, Wifi, etc. Audio & Vido Camera, GPS, boussole, etc. Graphismes 2D/3D Google Maps

Jeudi 2 Juillet 2009

Intgration d une application de navigation off-board sous Android

Android - Environnement de dveloppement (1/2)


Kit de dveloppement Documentation, exemples et librairies Outils : mulateur, debugger, moniteur de VM, IHM Nouveaut : Native Development Kit (NDK) Intgration dans Eclipse (plugin ADT) Cration graphique d IHM Gestion des ressources: images, localisation, spcialisation Chaine de dveloppement complte

Jeudi 2 Juillet 2009

Intgration d une application de navigation off-board sous Android

Android - Environnement de dveloppement (2/2)

Jeudi 2 Juillet 2009

Intgration d une application de navigation off-board sous Android

Dveloppement pour Android - Objectifs


Portage fonctionnalits existantes IHM Audio Persistance Internationalisation Nouvelles fonctionnalits Intgration de Google Maps Diaporama golocalis bas sur Flickr Support de l cran tactile Participation l Android Challenge

Jeudi 2 Juillet 2009

Intgration d une application de navigation off-board sous Android

Dveloppement pour Android - Google Maps

Vues plan / satellite Gestion des donnes Zoom & dfilement Surcharge de la carte

Jeudi 2 Juillet 2009

Intgration d une application de navigation off-board sous Android

Dveloppement pour Android - Diaporama golocalis

Bas sur Flickr Utilisation de la position

courante Recupration de photos gotagges

Jeudi 2 Juillet 2009

Intgration d une application de navigation off-board sous Android

Conclusion & Perspectives


Des outils de dveloppement Une communaut Une plateforme en volution Des terminaux Android Market

Christophe Tomasini Praxis SC2 by Altran christophe.tomasini@altran.com

Jeudi 2 Juillet 2009

QUESTIONS / REPONSES

Merci pour votre attention

Vous aimerez peut-être aussi