Lab développement Mono pour Sugar

Documents pareils
Votre premier projet Android

IFT287 Exploitation de base de données relationnelles et orientées objet. Laboratoire Mon premier programme Java en Eclipse

Introduction à Eclipse

Client windows Nagios Event Log

Tutoriel Création d une source Cydia et compilation des packages sous Linux

Eclipse atelier Java

La base de données XML exist. A. Belaïd

Pharmed. gestion de pharmacie hospitalière. Installation / déploiement

Oracle Learning Library Tutoriel Database 12c Installer le logiciel Oracle Database et créer une Database

COURS 5 Mettre son site en ligne! Exporter son site avec WordPress Duplicator Installer un logiciel FTP Faire le suivi des visites de son site avec

sshgate Patrick Guiran Chef de projet support

TP au menu «UI ANDROID»

Installation et compilation de gnurbs sous Windows

SYNC FRAMEWORK AVEC SQLITE POUR APPLICATIONS WINDOWS STORE (WINRT) ET WINDOWS PHONE 8

27/11/12 Nature. SDK Python et Java pour le développement de services ACCORD Module(s)

Exporter des écritures. Importer des écritures. Depuis EBP Comptabilité.

Galaxy est une plateforme de traitements (bio)informatiques accessible depuis l'url : (en précisant votre login et mot de passe LDAP «genotoul»).

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

Le hub d entreprise est une application de déploiement des applications mais aussi un outil de communication

AUVRAY Clément (168187) HOMBERGER Alexandre (186897) GLADE. Langages, outils et méthodes pour la programmation avancée Page 1 sur 12

- TP Programmation Android - NFA024 Conservatoire National des Arts et Métiers

Network Shutdown Module V3 Extension du Manuel Utilisateur pour architecture Virtualisée VMWare ESX Server 3, 3.5

Direction des Systèmes d'information

1-Introduction 2. 2-Installation de JBPM 3. 2-JBPM en action.7

Installation et prise en main

Installation de SQL Server Reporting Services avec l intégration dans un site Windows SharePoint Services V3

BIRT (Business Intelligence and Reporting Tools)

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

Programme Compte bancaire (code)

INSTALLATION ET CONFIGURATION D'UN SERVEUR WEB SUR MAC OS X

Projet Administration Réseaux

Installation de la plate-forme Liberacces 2.0 «Intégrale» avec LiberInstall

Le MSMQ. Version 1.0. Pierre-Franck Chauvet

Utilisation de GCM (Google Cloud Messaging) pour Android. Partie préliminaire éventuelle : Création d'un AVD lisant GCM

TP1 - Prise en main de l environnement Unix.

WiFi Security Camera Quick Start Guide. Guide de départ rapide Caméra de surveillance Wi-Fi (P5)

PROCEDURE D'INSTALLATION OPENREPORTS

TP1 : Initiation à Java et Eclipse

Comment autoriser un programme à communiquer avec Internet sous Vista?

MODE OPÉRATOIRE : CIEL COMPTA

Installation de VirtualPOPC-1 sur Ubuntu Server LTS 64bits

Ocs Inventory et GLPI s appuie sur un serveur LAMP. Je vais donc commencer par installer les paquets nécessaires.

Universal Robots. Fiche Méthode : Installation du simulateur Polyscope

Utilisation et création de la clé USB OSCAR

Fiche Pratique. Présentation du problème. Installation du logiciel. Etape 1. MAJ le 17/10/2011

Web service AREA Manuel d installation et d utilisation du mode déconnecté. Version du 18 mars 2011

Guide d'installation rapide TFM-560X YO.13

1) Installation de Dev-C++ Téléchargez le fichier devcpp4990setup.exe dans un répertoire de votre PC, puis double-cliquez dessus :

WebParts. Version 1.0

Installation d'une galerie photos Piwigo sous Microsoft Windows.

lundi 3 août 2009 Choose your language What is Document Connection for Mac? Communautés Numériques L informatique à la portée du Grand Public

Installer VMware vsphere

Création d un service web avec NetBeans 5.5 et SJAS 9

PRESENTATION RESSOURCES. Christian Dupaty BTS Systèmes Numériques Lycée Fourcade Gardanne Académie d Aix Marseille

TP LINUX : MISE EN RÉSEAU D UN SERVEUR LINUX

Procédure d import des bases de données GestCab vers Médicab version 10.

Classe et groupe : 1P 3 SEN TRI. Ubuntu : serveur Contrôleur de Domaine (PDC) avec SAMBA

TD Objets distribués n 3 : Windows XP et Visual Studio.NET. Introduction à.net Remoting

Instructions pour mettre à jour un HFFv2 v1.x.yy v2.0.00

Comment créer un site web Proxy gratuitement!

Introduction à la présentation graphique avec xmgrace

WEB page builder and server for SCADA applications usable from a WEB navigator

Emporter Windows XP sur une clé USB

Procédure d'installation de PostgreSQL pour Windows

Manuel d'installation de GESLAB Client Lourd

Comment récupérer toutes vos données perdues ou effacées gratuitement!

Installer un domaine DNS

Tutorial NL220. Objectifs : Fournir un guide utilisateur pour NL220. Présenter une méthodologie efficace pour la création de projet

Once the installation is complete, you can delete the temporary Zip files..

Guide d installation de MEGA Desktop Application MEGA 2009 SP4

Déploiement d'une application Visual Studio Lightswitch dans Windows Azure.

Procédure d installation d AMESim 4.3.0

Exercice sur les Dockers

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

Manuel utilisateur (Manuel_utilisateur_version pdf) Manuel Reprise des données (Manuel_Reprise_donnees_version

Guide pour l Installation des Disques Durs SATA et Configuration RAID

TD séance n 2c Mise à jour des Systèmes

wxwidgets dans un environnement Microsoft Windows

1.3 Gestion d'une application

NOOBÉ GUIDE DE PRISE EN MAIN SOMMAIRE. INSTALLER Installer le logiciel Lancer le logiciel Découvrir NOOBÉ

Oracle Database SQL Developer Guide D'Installation Release 4.0 E

Oracle WebLogic Server (WLS) 11gR1 ( et ) Installation sur Oracle Linux 5 et 6 Hypothèses Installation Oracle Linux 5 (OL5)

Tutoriel compte-rendu Mission 1

Installation de Zabbix

Tutoriel code::blocks

Serveur de partage de documents. Étude et proposition d'une solution afin de mettre en place un serveur de partage de documents.

Utilisation de JAVA coté Application serveur couplé avec Oracle Forms Hafed Benteftifa Novembre 2008

Imprimantes et partage réseau sous Samba avec authentification Active Directory


pas à pas prise en main du logiciel Le Cloud d Orange - Transfert de fichiers sur PC et MAC Le Cloud

TP 1 : prise en main de Windows. TP 1 : prise en main de Windows

Logiciel : GLPI Version : SYNCRHONISATION DE GLPI AVEC ACTIVE DIRECTORY. Auteur : Claude SANTERO Config. : Windows 2003.

Tapez le titre de la page «BASTIA ville méditerranéenne», puis allez deux fois à la ligne à l aide de la touche Entrée.

INSTALLATION DE PEGASUS MAIL 3.12 c FR Avec l interface Harp

Installation en réseau de ClicMenu et des logiciels de Kitinstit

Transcription:

OLPC - Développement Page 1 Lab développement Mono pour Sugar L'objectif de ce Lab est de développer une nouvelle activité pour Sugar en utilisant C# et Mono. Au fur et à mesure de cet atelier vous apprendrez à utiliser MonoDevelop pour écrire le code de votre activité, construire un package pour l'activité, tester l'activité sur l'émulateur Sugar puis directement sur un XO. Etape 1: Créer votre projet MonoDevelop Lancer l'environnement MonoDevelop (Applications/Programming/MonoDevelop) Créer une nouvelle solution (File/New Solution ) Choisir le template C# "Gtk# 2.0 Project", saisir le nom "LabActivity", décocher la case "Create separate Solution Directory". Appuyez sur le bouton "Forward". Dans la fenêtre suivante, ne rien modifier de la configuration. Laissez la version de Gtk# proposée, ne cochez aucune case. Appuyez sur le bouton "OK". La solution est maintenant créée, nous allons la configurer. Ajouter la référence sur Sugar. Click droit sur References, "Edit References ", choisir ".Net Assemblies" et sélectionner "Sugar.dll" dans "/home/user/prerequisites". Appuyer sur "+Add" puis appuyez sur OK. Supprimer le fichier "Main.cs" de la solution: click droit sur Main.cs puis "Remove" en cochant "Delete from disk". Etape 2: Créer une fenêtre simple Modifier le fichier MainWindow.cs pour qu'il ressemble au contenu ci-dessous. A noter que le fichier peut être récupéré dans "/home/user/labsource/step2". using System; using System.Collections; using Gtk; using Sugar; namespace LabActivity public class MainWindow : Sugar.Window

OLPC - Développement Page 2 public class MainWindow : Sugar.Window public new static string activityid=""; public new static string bundleid=""; public MainWindow(string activityid, string bundleid) : base("lab",activityid, bundleid) this.setdefaultsize(400, 400); this.maximize(); this.deleteevent += new DeleteEventHandler(OnMainWindowDelete); VBox vbox=new VBox(); vbox.borderwidth = 8; Label _text = new Label("Hello Lab Activity"); vbox.add(_text); Button _button = new Button(); _button.label = "Quit"; _button.clicked += new EventHandler(OnClick); vbox.add(_button); this.add(vbox); ShowAll(); void OnMainWindowDelete (object sender, DeleteEventArgs a) Application.Quit(); a.retval = true; void OnClick(object sender, EventArgs a) Application.Quit(); public static void Main(string[] args) System.Console.Out.WriteLine("Lab Activity for OLPC"); if (args.length>0) IEnumerator en= args.getenumerator(); while (en.movenext()) if (en.current.tostring().equals("-sugaractivityid")) if (en.movenext()) activityid=en.current.tostring(); if (en.current.tostring().equals("-sugarbundleid")) if (en.movenext()) bundleid=en.current.tostring(); Application.Init(); new MainWindow(activityId, bundleid); Application.Run(); Sauvegarder le fichier: "File/Save" Ouvrir la rubrique "User Interface" du projet, supprimer le fichier "LabActivity.MainWindow": clic droit "Delete", DECOCHEZ LA CASE "Also remove the 'MainWindow.cs'. Lancer la compilation "Project/Build Solution" Elle doit se dérouler sans erreur. Ne lancez pas l'exécution. Copier maintenant les librairies nécessaires à l'exécution: Ouvrer une fenêtre de Terminal (Applications/Accessories/Terminal). Se positionner dans le répertoire des binaires du projet (sous /home/user/labactivity/bin/debug). Créer un nouveau sous-répertoire appelé "bin" en utilisant la commande "mkdir bin". Positionnez-vous dans ce nouveau répertoire. Copier dans ce répertoire toutes les librairies partagées (.so) qui se trouvent dans le répertoire (/home/user/prerequisites). Par exemple en lançant la commande "cp /home/user/prerequisites/*.so.": libgdksharpglue-2.so libgladesharpglue-2.so libglibsharpglue-2.so libgtksharpglue-2.so libmonoposixhelper.so libpangosharpglue-2.so uix11util.so Lancer l'exécution de l'application: "Project/Run", vous devez obtenir ceci:

OLPC - Développement Page 3 Appuyez sur le bouton pour quitter l'application. Etape 3: Préparer le package Sugar Les applications Sugar nécessitent un packaging particulier. C'est ce packaging que nous allons construire dans la suite de l'exercice. Le packaging déjà construit se trouve dans le répertoire "/home/user/labsource/step3". Voir http://wiki.laptop.org/go/activity_bundles pour plus d'informations sur les packages Sugar. Dans la fenêtre Terminal, créer un répértoire "LabActivity.activity" dans le répertoire "/home/user/labactivity" en utilisant "mkdir LabActivity.activity" Dans ce répertoire, créer un sous-répertoire "activity" en utilisant la commande "mkdir LabActivity.activity/activity" Dans ce répertoire, créer un sous-répertoire "bin" en utilisant la commande "mkdir LabActivity.activity/bin" Se positionner dans le répertoire "LabActivity.activity/activity" en utilisant la commande "cd LabActivity.activity/activity" Nous allons d'abord créer l'icône de notre nouvelle activité. Dans Sugar, les icônes sont des fichiers SVG. Un fichier SVG représente une image vectorielle décrite sous forme XML. Voir http://wiki.laptop.org/go/making_sugar_icons pour plus d'informations sur les icônes dans Sugar. Par l'intermédiaire de "vi" ou dans "MonoDevelop" créer un nouveau fichier "activity-labactivity.svg". <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/graphics/svg/1.1/dtd/svg11.dtd" [ <!ENTITY stroke_color "#666666"> <!ENTITY fill_color "#FFFFFF"> ]> <svg xmlns="http://www.w3.org/2000/svg" width="55" height="55"> <rect x="5" y="5" width="45" height="45" stroke="&stroke_color;" fill="&fill_color;" stroke-width="3.5"/> </svg> Nous allons maintenant créer le fichier "activity.info" qui décrit la nouvelle activité: Par l'intermédiaire de "vi" ou dans "MonoDevelop" créer un nouveau fichier "activity.info". [Activity] name = LabActivity activity_version = 1 host_version = 1 service_name = org.olpcfrance.labactivity icon = activity-labactivity exec = labactivity-activity mime_types = Nous allons maintenant créer le fichier MANIFEST qui contient la liste de tous les fichiers qui sont contenus dans le package. Ce fichier doit se trouver à la racine du répertoire "LabActivity.activity" Par l'intermédiaire de "vi" ou dans "MonoDevelop" créer un nouveau fichier "MANIFEST". activity/activity-labactivity.svg activity/activity.info bin/libgdksharpglue-2.so bin/libgladesharpglue-2.so bin/libglibsharpglue-2.so bin/libgtksharpglue-2.so bin/libmonoposixhelper.so bin/libpangosharpglue-2.so bin/labactivity-activity bin/labactivity.exe bin/uix11util.so Nous allons maintenant préparer le répertoire qui va contenir les binaires de l'activité. Ce répertoire va contenir: le fichier exécutable qui sera issu de la compilation, les librairies partagées nécessaire et un script d'exécution.

OLPC - Développement Page 4 Copions d'abord les librairies partagées nécessaires. Ce sont les mêmes que celle que nous avons utilisées précédemment: Se positionner dans le répertoire "bin" en lançant la commande "cd bin" Copier dans ce répertoire toutes les librairies partagées (.so) qui se trouvent dans le répertoire "/home/user/prerequisites". Par exemple en lançant la commande "cp /home/user/prerequisites/*.so.": libgdksharpglue-2.so libgladesharpglue-2.so libglibsharpglue-2.so libgtksharpglue-2.so libmonoposixhelper.so libpangosharpglue-2.so uix11util.so Créons maintenant le fichier de script à utiliser. Par l'intermédiaire de "vi" ou dans "MonoDevelop" créer un nouveau fichier "labactivity-activity". #!/bin/sh # Author: Lionel Laské # Original Author: Torello Querci - Bert Freudenberg # Purpose: Run mono binary application. # echo "$0" "$@" echo # arguments are unordered, have to loop args="" while [ -n "$2" ] ; do case "$1" in -b --bundle-id) bundle_id="$2" ; args="$args BUNDLE_ID $2" ;; -a --activity-id) activity_id="$2" ; args="$args ACTIVITY_ID $2";; -o --object-id) object_id="$2" ; args="$args OBJECT_ID $2";; -u --uri) uri="$2" ; args="$args URI $2";; *) echo unknown argument $1 $2 ;; esac shift;shift done # really need bundle id and activity id if [ -z "$bundle_id" -o -z "$activity_id" ] ; then echo ERROR: bundle-id and activity-id arguments required echo Aborting exit 1 fi # some debug output echo launching $bundle_id instance $activity_id [ -n "$object_id" ] && echo with journal obj $object_id [ -n "$uri" ] && echo loading uri $uri echo # sanitize [ -z "$SUGAR_PROFILE" ] && SUGAR_PROFILE=default [ -z "$SUGAR_ACTIVITY_ROOT" ] && SUGAR_ACTIVITY_ROOT="$HOME/.sugar/$SUGAR_PROFILE/etoys" export SUGAR_BUNDLE_PATH=`dirname $0` export PATH=$SUGAR_BUNDLE_PATH:$PATH cd $SUGAR_BUNDLE_PATH/.. export LD_LIBRARY_PATH=$SUGAR_BUNDLE_PATH:$LD_LIBRARY_PATH # Try to setup the SHARED_DIR export MONO_SHARED_DIR=$TMPDIR # now run the mono application exec labactivity.exe \ -sugarbundleid $bundle_id \ -sugaractivityid $activity_id \ $args < /dev/null > /dev/null A l'issue de cette étape votre répertoire "/home/user/labactivity/labactivity.activity" doit ressembler à ceci: user@ubuntu:~/labactivity/labactivity.activity$ ls -R.: activity bin MANIFEST./activity: activity.info activity-labactivity.svg./bin: labactivity-activity libglibsharpglue-2.so libpangosharpglue-2.so libgdksharpglue-2.so libgtksharpglue-2.so uix11util.so libgladesharpglue-2.so libmonoposixhelper.so Etape 4: Construire le package Sugar Nous allons maintenant pouvoir créer le package correspondant à notre nouvelle activité. Cela va se faire automatiquement en utilisant le script "deploy". Depuis une fenêtre Terminal, se positionner dans le répertoire de l'application en utilisant la commande "cd /home/user/labactivity" Copiez le fichier "/home/user/prerequisites/deploy" en utilisant la commande "cp /home/user/prerequisites/deploy.".

OLPC - Développement Page 5 Depuis une fenêtre Terminal, se positionner dans le répertoire de l'application en utilisant la commande "cd /home/user/labactivity" Copiez le fichier "/home/user/prerequisites/deploy" en utilisant la commande "cp /home/user/prerequisites/deploy.". En utilisant "vi" ou "MonoDevelop" éditer le fichier "deploy" pour modifier les premières lignes du fichier (variables ACTNAME et ACTLOWNAME): # Variable init ACTNAME=LabActivity ACTLOWNAME=labactivity ACTVERSION=1 USERHOME=/home/user HOSTDIR=/mnt/hgfs/D # Change config to Mono GAC to use local path echo Local config DLL sudo cp /usr/lib/mono/gac/gtk-sharp/2.12.0.0 35e10195dab3c99f/local.config /usr/lib/mono/gac/gtk-sharp/2.12.0.0 35e10195dab3c99f/gtk-sharp.dll.config sudo cp /usr/lib/mono/gac/glib-sharp/2.12.0.0 35e10195dab3c99f/local.config /usr/lib/mono/gac/glib-sharp/2.12.0.0 35e10195dab3c99f/glib-sharp.dll.config sudo cp /usr/lib/mono/gac/gdk-sharp/2.12.0.0 35e10195dab3c99f/local.config /usr/lib/mono/gac/gdk-sharp/2.12.0.0 35e10195dab3c99f/gdk-sharp.dll.config sudo cp /usr/lib/mono/gac/pango-sharp/2.12.0.0 35e10195dab3c99f/local.config /usr/lib/mono/gac/pango-sharp/2.12.0.0 35e10195dab3c99f/pango-sharp.dll.config sudo cp /usr/lib/mono/gac/atk-sharp/2.12.0.0 35e10195dab3c99f/local.config /usr/lib/mono/gac/atk-sharp/2.12.0.0 35e10195dab3c99f/atk-sharp.dll.config # Build the bundle cd $USERHOME/$ACTNAME/bin/Debug echo Making bundle... mkbundle2 --config /etc/mono/config --deps --static -o $ACTLOWNAME.exe $ACTNAME.exe Sugar.dll echo Copying to template... cp $ACTLOWNAME.exe $USERHOME/$ACTNAME/$ACTNAME.activity/bin # Copy activity to local Sugar emulation if [ -e "$USERHOME/Activities/$ACTNAME.activity" ] ; then echo Copying to local Sugar... rm -r $USERHOME/Activities/$ACTNAME.activity cp -r $USERHOME/$ACTNAME/$ACTNAME.activity $USERHOME/Activities fi # Create a.xo package echo Create a.xo cd $USERHOME/$ACTNAME zip -r $ACTNAME.activity/* $ACTNAME.activity/activity/activity.info $ACTNAME.activity/activity/activity-$ACTLOWNAME.svg $ACTNAME.activity/MANIFEST mv $ACTNAME.activity/*.zip $USERHOME/$ACTNAME/$ACTNAME-$ACTVERSION.xo # Copy.XO to VM host echo Copy.XO to host cp $USERHOME/$ACTNAME/$ACTNAME-$ACTVERSION.xo $HOSTDIR # Change config to Mono GAC to use global path echo Global config DLL sudo cp /usr/lib/mono/gac/gtk-sharp/2.12.0.0 35e10195dab3c99f/global.config /usr/lib/mono/gac/gtk-sharp/2.12.0.0 35e10195dab3c99f/gtk-sharp.dll.config sudo cp /usr/lib/mono/gac/glib-sharp/2.12.0.0 35e10195dab3c99f/global.config /usr/lib/mono/gac/glib-sharp/2.12.0.0 35e10195dab3c99f/glib-sharp.dll.config sudo cp /usr/lib/mono/gac/gdk-sharp/2.12.0.0 35e10195dab3c99f/global.config /usr/lib/mono/gac/gdk-sharp/2.12.0.0 35e10195dab3c99f/gdk-sharp.dll.config sudo cp /usr/lib/mono/gac/pango-sharp/2.12.0.0 35e10195dab3c99f/global.config /usr/lib/mono/gac/pango-sharp/2.12.0.0 35e10195dab3c99f/pango-sharp.dll.config sudo cp /usr/lib/mono/gac/atk-sharp/2.12.0.0 35e10195dab3c99f/global.config /usr/lib/mono/gac/atk-sharp/2.12.0.0 35e10195dab3c99f/atk-sharp.dll.config A noter que le fichier modifié peut être récupéré dans "/home/user/labsource/step4". Lancer maintenant l'exécution du script en lançant la commande "./deploy". Si le script vous demande un mot de passe, tapez "user". A la fin de l'exécution, le répertoire doit contenir un fichier "LabActivity-1.xo" Etape 5: Déployer et tester la nouvelle activité dans l'émulateur Sugar Lancer l'émulateur en double-cliquant sur le raccourci sur le bureau ou en lançant la commande "sugar-emulator" Dans Sugar, lancer l'activité "Terminal" Se positionner dans le répertoire contenant le fichier ".xo" en lançant la commande "cd LabActivity" Installer l'activité en lançant la commande "sugar-install-bundle LabActivity-1.xo". L'installation doit se terminer en affichant "LabActivity-1.xo' installed Lancer l'activité en lançant la commande "sugar-launch LabActivity", vous devez obtenir:

OLPC - Développement Page 6 Vous pouvez aussi lancer l'activité en cliquant sur son icône (le carré) depuis le rond central du menu Sugar (pensez à le mettre dans les favoris pour qu'il apparaisse). Etape 6: Déployer et tester la nouvelle activité depuis un XO Pour déployer l'activité sur un XO, copier simplement le fichier "LabActivity-1.xo" sur une clé USB et lancez-le depuis le Journal.