felixdroid: application de gestion du framework felix pour android
DESCRIPTION
FelixDroid est basé sur le projet Apache Felix. Il intègre un framework facilitant la conception et la gestion de multiples applications "graphiques" OSGi pour Android. Il permet en outre de déployer, de démarrer, de mettre à jour, d'arrêter et de d'installer des bundles OSGi via une interface graphique comparable à celle utilisée habituellement pour les applications Android. FelixDroid permet également de gérer de multiples OBR. FelixDroid doit faire prochainement l'objet d'une diffusion via le projet Apache Felix.TRANSCRIPT
![Page 1: FelixDroid: Application de gestion du framework Felix pour Android](https://reader034.vdocuments.fr/reader034/viewer/2022051323/549a5546ac7959222e8b5b5e/html5/thumbnails/1.jpg)
OUGF 19/05/2011 - Lille NLS/UBS/Valoria 1
Nicolas Le SommerLaboratoire Valoria, Université de Bretagne Sudemail: Nicolas.LeSommer@univubs.frWeb : http://wwwvaloria.univubs.fr/Nicolas.LeSommer
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](https://reader034.vdocuments.fr/reader034/viewer/2022051323/549a5546ac7959222e8b5b5e/html5/thumbnails/2.jpg)
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](https://reader034.vdocuments.fr/reader034/viewer/2022051323/549a5546ac7959222e8b5b5e/html5/thumbnails/3.jpg)
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](https://reader034.vdocuments.fr/reader034/viewer/2022051323/549a5546ac7959222e8b5b5e/html5/thumbnails/4.jpg)
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](https://reader034.vdocuments.fr/reader034/viewer/2022051323/549a5546ac7959222e8b5b5e/html5/thumbnails/5.jpg)
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](https://reader034.vdocuments.fr/reader034/viewer/2022051323/549a5546ac7959222e8b5b5e/html5/thumbnails/6.jpg)
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](https://reader034.vdocuments.fr/reader034/viewer/2022051323/549a5546ac7959222e8b5b5e/html5/thumbnails/7.jpg)
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](https://reader034.vdocuments.fr/reader034/viewer/2022051323/549a5546ac7959222e8b5b5e/html5/thumbnails/8.jpg)
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](https://reader034.vdocuments.fr/reader034/viewer/2022051323/549a5546ac7959222e8b5b5e/html5/thumbnails/9.jpg)
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](https://reader034.vdocuments.fr/reader034/viewer/2022051323/549a5546ac7959222e8b5b5e/html5/thumbnails/10.jpg)
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](https://reader034.vdocuments.fr/reader034/viewer/2022051323/549a5546ac7959222e8b5b5e/html5/thumbnails/11.jpg)
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](https://reader034.vdocuments.fr/reader034/viewer/2022051323/549a5546ac7959222e8b5b5e/html5/thumbnails/12.jpg)
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](https://reader034.vdocuments.fr/reader034/viewer/2022051323/549a5546ac7959222e8b5b5e/html5/thumbnails/13.jpg)
NLS/UBS/Valoria OUGF 19/05/2011 - Lille 13
Démonstration : les applications
![Page 14: FelixDroid: Application de gestion du framework Felix pour Android](https://reader034.vdocuments.fr/reader034/viewer/2022051323/549a5546ac7959222e8b5b5e/html5/thumbnails/14.jpg)
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](https://reader034.vdocuments.fr/reader034/viewer/2022051323/549a5546ac7959222e8b5b5e/html5/thumbnails/15.jpg)
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](https://reader034.vdocuments.fr/reader034/viewer/2022051323/549a5546ac7959222e8b5b5e/html5/thumbnails/16.jpg)
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](https://reader034.vdocuments.fr/reader034/viewer/2022051323/549a5546ac7959222e8b5b5e/html5/thumbnails/17.jpg)
NLS/UBS/Valoria OUGF 19/05/2011 - Lille 17
Questions
?