FelixDroid : un environnement pour le développement et la gestion d'applications OSGi dédiées à Android Nicolas Le Sommer Laboratoire Valoria, Université de Bretagne Sud email: Nicolas.Le Sommer@univ ubs.fr Web : http://www valoria.univ ubs.fr/nicolas.le Sommer OUGF 19/05/2011 - Lille NLS/UBS/Valoria 1
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 NLS/UBS/Valoria OUGF 19/05/2011 - Lille 2
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 NLS/UBS/Valoria OUGF 19/05/2011 - Lille 3
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 APP1 DVM APP2 DVM APP1 JVM APP4 APP3 APP1 APP2 APP3 DVM JVM Android OSGi NLS/UBS/Valoria OUGF 19/05/2011 - Lille 4
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. NLS/UBS/Valoria OUGF 19/05/2011 - Lille 5
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. 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 Solution 2 : Cycles de vie différents On peut supprimer une application Android alors que le bundle OSGi utilisant cette application continu d'exister. 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é. NLS/UBS/Valoria OUGF 19/05/2011 - Lille 7
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 Conteur de vues App 1 App 2 Gestionnaire de conteneurs NLS/UBS/Valoria OUGF 19/05/2011 - Lille 8
FelixDroid : le cadre de conception felixdroid ViewContainer showview(felixdroidview v) addpanelmenulistener(panelmenulistener pml) addoptionmenulistener(optionmenulistener oml) showtoast(toast t) showdialogbox(dialog d) addkeyeventlistener(keyeventlistener kl) ContainerManager getcontainer(bundlecontext bc) : ViewContainer FelixDroidView getview() : android.view.view OptionMenuListener onoptionsitemselected(menuitem item) PanelMenuListener onmenuitemselected(int featureid, MenuItem item) KeyEventListener onkeydown(keyevent) onkeyup(keyevent) onkeylongpress(keyevent) org.apache.felix.framework org.osgi.framework android Felix BundleActivator BundleContext View NLS/UBS/Valoria OUGF 19/05/2011 - Lille 9
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; } NLS/UBS/Valoria OUGF 19/05/2011 - Lille 10
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)); } } NLS/UBS/Valoria OUGF 19/05/2011 - Lille 11
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 NLS/UBS/Valoria OUGF 19/05/2011 - Lille 12
Démonstration : les applications NLS/UBS/Valoria OUGF 19/05/2011 - Lille 13
Démonstration : gestion des bundles NLS/UBS/Valoria OUGF 19/05/2011 - Lille 14
Démonstration : gestion des OBR NLS/UBS/Valoria OUGF 19/05/2011 - Lille 15
Un exemple d'utilisation : le shell NLS/UBS/Valoria OUGF 19/05/2011 - Lille 16
Questions? NLS/UBS/Valoria OUGF 19/05/2011 - Lille 17