Transcript
Page 1: FelixDroid: Application de gestion du framework Felix pour Android

OUGF 19/05/2011 - Lille NLS/UBS/Valoria 1

Nicolas Le SommerLaboratoire Valoria, Université de Bretagne Sudemail: Nicolas.Le­Sommer@univ­ubs.frWeb : http://www­valoria.univ­ubs.fr/Nicolas.Le­Sommer

FelixDroid : un environnement pour le développement et la gestion d'applications OSGi dédiées à 

Android

Page 2: FelixDroid: Application de gestion du framework Felix pour Android

NLS/UBS/Valoria OUGF 19/05/2011 - Lille 2

Plan de la présentation

• Le projet FelixDroid

• Android vs OSGi

• Contraintes et limitations d'Android

• FelixDroid : un cadre de conception pour le développement et l'exécution d'applications graphiques OSGi sur Android

• FelixDroid : le gestionnaire d'applications

• Démontration

Page 3: FelixDroid: Application de gestion du framework Felix pour Android

NLS/UBS/Valoria OUGF 19/05/2011 - Lille 3

Le projet FelixDroid

• FelixDroid :

– Cadre de conception pour le développement et l'exécution d'applications graphiques OSGi sur Android

– Gestion de l'exécution simultanée de plusieurs applications graphiques

– Repose sur le framework Felix

– Permet la gestion du framework Felix de manière graphique

• Gestion des bundles, et des OBR

• FelixDroid est le résultat d'un projet de second année de DUT Info de l'IUT de Vannes

– 3 groupes de projets en concurrence

– Fusion des résultats des 3 groupes

• FelixDroid sera diffusé prochainement en open source

Page 4: FelixDroid: Application de gestion du framework Felix pour Android

NLS/UBS/Valoria OUGF 19/05/2011 - Lille 4

Android vs OSGi

• Dalvik-VM

– Optimisée pour de multiples instances

– Machine à registres

– Les fichiers sont dans le format dex

– Les applications sont déployées via une archive .apk

• Zip contenant les classes, ressources et un fichier AndroidManifest.xml

Android OSGi

DVM

APP1

DVM

APP2

DVM

APP3APP1

APP1 APP4

APP2

APP3

JVM

JVM

Page 5: FelixDroid: Application de gestion du framework Felix pour Android

NLS/UBS/Valoria OUGF 19/05/2011 - Lille 5

Contraintes et limitations d'Android

• Activity : élément de base pour réaliser des applications graphiques dans Android.

• Android impose de déclarer toutes les activités dans le fichier AndroidManifest.xml de l'application.

• Android permet de partager des éléments graphiques entre les applications via un mécanisme appelé Intents.

– Difficile de connaître les éléments partagés pour un développeur

• Dépend des applications installées sur le terminal

• Pas de gestion des dépendances contrairement à OSGi.

• Comment déployer des applications graphiques OSGi sur Android ?

– Activités pas connues à l'avance.

Page 6: FelixDroid: Application de gestion du framework Felix pour Android

NLS/UBS/Valoria OUGF 19/05/2011 - Lille 6

Solutions pour le développement d'applications graphiques OSGi sur Android

• Solution 1 :

– Déploiement d'applications Android contenant des activités indépendamment d'OSGi

– Invocation depuis OSGi des activités via des Intents

– Incohérences entre les bundles OSGi et les applications Android

• Cycles de vie différents

• On peut supprimer une application Android alors que le bundle OSGi utilisant cette application continu d'exister.

Page 7: FelixDroid: Application de gestion du framework Felix pour Android

NLS/UBS/Valoria OUGF 19/05/2011 - Lille 7

Solutions pour le développement d'applications graphiques OSGi sur Android

• Solution 1 :

– Déploiement d'applications Android contenant des activités indépendamment d'OSGi

– Invocation depuis OSGi des activités via des Intents

– Incohérences entre les bundles OSGi et les applications Android

• Cycles de vie différents

• On peut supprimer une application Android alors que le bundle OSGi utilisant cette application continu d'exister.

• Solution 2 :

– Une seule Activité (celle qui permet de démarrer le framework Felix) et partage de cette activité entre les différentes vues des applications OSGi

– Nécessité de gérer l'accès à l'activité

• Définition d'un framework adapté.

Page 8: FelixDroid: Application de gestion du framework Felix pour Android

NLS/UBS/Valoria OUGF 19/05/2011 - Lille 8

FelixDroid : le cadre de conception

• FelixDroid définit un cadre de conception permettant de gérer les vues et les événements (menus, boutons)

• Chaque application dispose de son propre conteneur de vues

• Un conteneur est créé automatiquement par FelixDroid lorsqu'une application exprime une dépendance vis-à-vis du framework FelixDroid

Conteur de vues

App 1

Conteur de vues

App 1

Gestionnaire de conteneursGestionnaire de conteneurs

Conteur de vues

App 2

Conteur de vues

App 2

Page 9: FelixDroid: Application de gestion du framework Felix pour Android

NLS/UBS/Valoria OUGF 19/05/2011 - Lille 9

FelixDroid : le cadre de conception

felixdroid

org.apache.felix.framework org.osgi.framework

ContainerManager

getContainer(BundleContext bc) : ViewContainer

Felix

...

BundleActivator

...BundleContext

...

ViewContainer

showView(FelixDroidView v)addPanelMenuListener(PanelMenuListener pml)addOptionMenuListener(OptionMenuListener oml)showToast(Toast t)showDialogBox(Dialog d)addKeyEventListener(KeyEventListener kl)...

FelixDroidViewgetView() : android.view.View...

OptionMenuListeneronOptionsItemSelected(MenuItem item)...

PanelMenuListeneronMenuItemSelected(int featureId, MenuItem item)...

KeyEventListeneronKeyDown(KeyEvent)onKeyUp(KeyEvent)onKeyLongPress(KeyEvent)

android

...

......

...View

...

Page 10: FelixDroid: Application de gestion du framework Felix pour Android

NLS/UBS/Valoria OUGF 19/05/2011 - Lille 10

FelixDroid : exemple d'utilisation (1/2)

• HelloWorld avec FelixDroid

– La vue

public class HelloWorldView extends FelixDroidView {private View view;

public HelloWorldView(ViewContainer vc) {super(vc);this.view = new TextView(vc.getContext());((TextView)this.view).setText("Hello World!!");

}

public View getView(){return this.view;

}}

public class HelloWorldView extends FelixDroidView {private View view;

public HelloWorldView(ViewContainer vc) {super(vc);this.view = new TextView(vc.getContext());((TextView)this.view).setText("Hello World!!");

}

public View getView(){return this.view;

}}

Page 11: FelixDroid: Application de gestion du framework Felix pour Android

NLS/UBS/Valoria OUGF 19/05/2011 - Lille 11

FelixDroid : exemple d'utilisation (2/2)

• HelloWorld avec FelixDroid

– L'activateur

public class Activator implements BundleActivator{        public void start(BundleContext bundleContext) throws Exception {

 ServiceReference sr =     bundleContext.getServiceReference(

         felixdroid.ViewContainerManager.class.getName());

 ViewContainerManager vcm =                 (ViewContainerManager)bundleContext.getService(sr);

 ViewContainer vc = vcm.getContainer(bundleContext);

 vc.showView(new HelloWorldView(vc));    }

...}

public class Activator implements BundleActivator{        public void start(BundleContext bundleContext) throws Exception {

 ServiceReference sr =     bundleContext.getServiceReference(

         felixdroid.ViewContainerManager.class.getName());

 ViewContainerManager vcm =                 (ViewContainerManager)bundleContext.getService(sr);

 ViewContainer vc = vcm.getContainer(bundleContext);

 vc.showView(new HelloWorldView(vc));    }

...}

Page 12: FelixDroid: Application de gestion du framework Felix pour Android

NLS/UBS/Valoria OUGF 19/05/2011 - Lille 12

FelixDroid : le gestionnaire de plate-forme

• FelixDroid permet de gérer graphiquement la plate-forme Felix

– Gestion des bundles

• Installation, démarrage, mise-à-jour, arrêt, suppression

• Information sur les bundles

• Versions, dépendances, ...

– Gestion des OBR

• Ajout et suppression d'une liste d'OBR

– Déploiement de bundles depuis des OBR

• Visualisation et accès aux différentes applications en cours d'exécution

Page 13: FelixDroid: Application de gestion du framework Felix pour Android

NLS/UBS/Valoria OUGF 19/05/2011 - Lille 13

Démonstration : les applications

Page 14: FelixDroid: Application de gestion du framework Felix pour Android

NLS/UBS/Valoria OUGF 19/05/2011 - Lille 14

Démonstration : gestion des bundles

Page 15: FelixDroid: Application de gestion du framework Felix pour Android

NLS/UBS/Valoria OUGF 19/05/2011 - Lille 15

Démonstration : gestion des OBR

Page 16: FelixDroid: Application de gestion du framework Felix pour Android

NLS/UBS/Valoria OUGF 19/05/2011 - Lille 16

Un exemple d'utilisation : le shell

Page 17: FelixDroid: Application de gestion du framework Felix pour Android

NLS/UBS/Valoria OUGF 19/05/2011 - Lille 17

Questions

?


Recommended